mysql首次安装如何设置密码_mysql安全初始化说明

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

MySQL 8.0 及以上版本首次安装后,默认不会生成 root 密码,而是采用临时密码机制或空密码(取决于安装方式),但必须立即完成安全初始化,否则数据库存在严重安全隐患。

查看并使用临时密码(适用于 RPM/DEB 官方包安装)

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

Linux 默认日志路径通常为
/var/log/mysqld.log
/var/log/mysql/error.log
执行命令查找:
sudo grep 'temporary password' /var/log/mysqld.log
输出类似:
A temporary password is generated for root@localhost: aB3#xY9!mQ2
,后面一串即为临时密码
用该密码登录:
mysql -u root -p
,然后粘贴临时密码

运行 mysql\_secure\_installation 完成安全初始化

登录成功后,**必须立即执行安全加固脚本**(即使刚装完也需运行):

终端输入:
mysql_secure_installation
按提示操作:设置新 root 密码(建议强密码,含大小写字母+数字+符号)、删除匿名用户、禁止 root 远程登录、移除 test 数据库、重载权限表 MySQL 8.0+ 默认启用密码强度校验插件(validate_password),若提示密码太简单,可先设较复杂密码,后续再调整策略

手动修改 root 密码(适用于跳过临时密码或忘记时)

若无法获取临时密码(如 Docker 启动、二进制免编译安装),可跳过授权表启动并重置:

停止 MySQL:
sudo systemctl stop mysqld
(或
mysqld_safe --skip-grant-tables &
以跳过权限验证方式启动:
sudo mysqld --skip-grant-tables --skip-networking &
另开终端登录:
mysql -u root
(此时无需密码)
执行重置(MySQL 8.0+ 语法):
FLUSH PRIVILEGES;

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourNewPass123!';
重启正常服务:
sudo systemctl restart mysqld

确认安全状态与基础防护

初始化完成后,建议快速验证并加固:

检查 root 是否仅允许本地登录:
SELECT host,user FROM mysql.user WHERE user='root';
—— 正常应只显示
localhost
禁用远程 root 登录(除非必要):
DELETE FROM mysql.user WHERE user='root' AND host!='localhost'; FLUSH PRIVILEGES;
创建专用管理账户(非 root):
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'StrongPass456!'; GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
定期更新 MySQL 版本,避免已知漏洞

相关推荐