2023-04-09 07:27:32
修改MySQL的root用户默认密码需分情况处理,具体步骤如下:
一、已知当前密码时修改登录MySQL通过命令行或客户端工具登录,输入当前密码:
mysql -u root -p
执行修改命令使用ALTER USER语句设置新密码,并刷新权限:
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';FLUSH PRIVILEGES;关键说明:
将'新密码'替换为强密码(建议包含大小写字母、数字及特殊字符,长度≥12位)。
若需修改所有主机上的root密码(如'root'@'%'),需针对该用户重复操作,但强烈建议限制root仅本地访问。

停止MySQL服务
Systemd系统(如Ubuntu 16.04+、CentOS 7+):sudo systemctl stop mysql # 或 mysqld
SysVinit系统(如旧版Ubuntu/Debian):sudo service mysql stop # 或 mysqld
以跳过权限表模式启动MySQL使用mysqld_safe或mysqld命令,添加--skip-grant-tables参数:
sudo mysqld_safe --skip-grant-tables &增强安全性:可附加--skip-networking参数阻止远程连接:sudo mysqld --skip-grant-tables --skip-networking &
无密码登录MySQL在终端直接执行:
mysql -u root刷新权限并修改密码
执行权限刷新:FLUSH PRIVILEGES;
使用ALTER USER设置新密码:ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
重要提示:必须先执行FLUSH PRIVILEGES,否则权限系统可能无法识别后续操作。
重启MySQL服务
终止安全模式进程:sudo pkill mysqld
正常启动服务:sudo systemctl start mysql # 或 mysqld
强密码策略
密码需复杂且定期更换,避免与其他服务共用密码。
限制root远程访问
检查是否存在'root'@'%'用户:SELECT User, Host FROM mysql.user WHERE User = 'root';
删除或修改远程root用户:DROP USER 'root'@'%'; -- 直接删除-- 或限制为特定IP访问CREATE USER 'root'@'192.168.1.100' IDENTIFIED BY '密码';
遵循最小权限原则
为每个应用创建专用用户,仅授予必要权限。例如:CREATE USER 'app_user'@'localhost' IDENTIFIED BY '密码';GRANT SELECT, INSERT ON database.table TO 'app_user'@'localhost';FLUSH PRIVILEGES;
定期审计权限
检查用户权限列表:SELECT User, Host, Select_priv, Insert_priv FROM mysql.user;
删除无用用户并回收多余权限。
权限过大风险root用户可执行任意操作(如删除数据库、修改配置),误操作或漏洞利用可能导致灾难性后果。
审计困难所有操作记录均显示为root执行,难以追溯具体责任人或应用模块。
违背安全原则违反最小权限原则,增加攻击面(如SQL注入漏洞可能通过root权限提权至服务器控制权)。
正确实践:为每个应用分配独立用户,并限制其权限范围(如仅允许对特定表的读写操作)。