mysql安装后如何设置root密码_mysql初始用户配置

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

MySQL 5.7+ 安装后 root 密码为空?默认认证方式导致连接失败

MySQL 5.7 及以上版本安装后,

root
用户默认不设密码,但认证插件是
auth_socket
(Ubuntu/Debian 常见)或
caching_sha2_password
(MySQL 8.0+),直接
mysql -u root
可能报错
Access denied for user 'root'@'localhost'
。这不是密码问题,而是认证机制拦截了——必须先绕过权限系统重置用户配置。

跳过权限验证启动 MySQL 并重置 root 密码

适用于无法登录、忘记密码、或首次初始化失败的场景。操作前确保 MySQL 已停止:

Linux:执行
sudo systemctl stop mysql
(或
mysqld
,取决于服务名)
临时启动 mysqld 并跳过权限表:
sudo mysqld --skip-grant-tables --skip-networking &
新开终端,无密码登录:
mysql -u root
执行以下语句(注意:MySQL 5.7+ 必须用
ALTER USER
UPDATE mysql.user
会失效):
FLUSH PRIVILEGES;<br>ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password';
退出并重启正常 MySQL 服务:
sudo systemctl start mysql

MySQL 8.0+ 初始化时未生成临时密码?检查 error log 路径

官方二进制包或某些发行版安装后,MySQL 会自动生成一个临时 root 密码,写入错误日志而非终端。常见路径包括:

/var/log/mysql/error.log
/var/log/mysqld.log
/usr/local/mysql/data/*.err
。搜索关键词:
A temporary password is generated for root@localhost
。若日志中无此行,说明初始化未完成,需手动运行:
sudo mysqld --initialize --user=mysql
(注意:该命令会重新生成数据目录,请勿在已有数据时执行)。

使用 mysql_secure_installation 配置 root 密码和基础安全项

这是最稳妥的初始配置方式,但前提是能以 root 身份登录(即已解决上述认证问题)。运行:

sudo mysql_secure_installation
,它会引导你:

设置
root
密码(如果尚未设置)
移除匿名用户:
Remove anonymous users?
→ 选
Y
禁止远程 root 登录:
Disallow root login remotely?
→ 生产环境务必选
Y
删除测试数据库:
Remove test database and access to it?
重载权限表:
Reload privilege tables now?
→ 选
Y

该脚本底层调用的是

ALTER USER
DROP USER
,比手动 SQL 更全面,但不会修改已存在的非 root 用户权限。

真正麻烦的不是设密码本身,而是认证插件类型、日志位置、以及是否误删了初始化生成的临时凭证——这三个点卡住的人最多。动手前先

ps aux | grep mysqld
确认进程状态,再决定走
--skip-grant-tables
还是查日志。

相关推荐