如何配置mysql初始root密码_mysql root密码设置方法

来源:这里教程网 时间:2026-02-28 20:30:40 作者:

MySQL 5.7 及以上版本在首次安装后默认没有设置 root 密码,而是采用

auth_socket
插件认证(Ubuntu/Debian 常见),或生成临时密码(CentOS/RHEL 常见)。直接用
mysql -u root -p
登录会失败。需先绕过权限验证,再修改密码。

查看或获取初始临时密码(适用于 CentOS/RHEL 安装)

安装完成后,MySQL 会在错误日志中生成一个临时 root 密码:

执行:
sudo grep 'temporary password' /var/log/mysqld.log
输出类似:
A temporary password is generated for root@localhost: aB3#xY9!mQ2p
复制该密码,用
mysql -u root -p
登录,然后立即用
ALTER USER
修改

跳过权限验证重置密码(适用于无法登录或忘记密码)

当连临时密码都无效,或使用

auth_socket
(如 Ubuntu 默认)导致无法用密码登录时,需临时跳过权限检查:

停止 MySQL:
sudo systemctl stop mysql
(Ubuntu)或
sudo systemctl stop mysqld
(CentOS)
以安全模式启动:
sudo mysqld_safe --skip-grant-tables --skip-networking &
另开终端,无密码登录:
mysql -u root
执行以下命令(MySQL 5.7+):
FLUSH PRIVILEGES;

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的新密码';
退出并重启 MySQL 服务

设置密码后验证并允许远程访问(可选)

默认 root 只允许本地登录。若需远程连接,需额外授权:

登录 MySQL 后执行:
CREATE USER 'root'@'%' IDENTIFIED BY '你的密码';
赋予全部权限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
刷新权限:
FLUSH PRIVILEGES;
确保 MySQL 配置文件中
bind-address
不是
127.0.0.1
(改为
0.0.0.0
或注释掉),并开放防火墙端口(如 3306)

常见问题提醒

密码策略可能导致设置失败(如太简单):

查看策略:
SHOW VARIABLES LIKE 'validate_password%';
临时降低要求(测试环境):
SET GLOBAL validate_password.policy=LOW;
避免使用纯数字、常见单词;推荐大小写字母 + 数字 + 符号组合,长度 ≥8 修改后务必重启服务或执行
FLUSH PRIVILEGES;
生效

相关推荐