mysql 8.0+首次安装后需立即安全初始化:查看临时密码(grep 'temporary password' /var/log/mysqld.log),用其登录后运行mysql_secure_installation设置强密码、禁用匿名用户和远程root、删除test库;若无临时密码,可跳过授权表重置密码;最后验证root仅限localhost并创建专用管理账户。

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 完成安全初始化
登录成功后,**必须立即执行安全加固脚本**(即使刚装完也需运行):
1.) 将所有文件解压到php环境中,本程序才用smarty+php+mysql设计。如果运行不了,请修改hhy文件夹下的smarty.php文件改法请看说明2.) 修改configs下的config.inc.php下的连接数据库的密码和用户名3.) 本程序没有做安全页面,人工导入sql.inc到mysql数据库。管理员初始化帐号为admin,密码为hhy。后台地址:http://你的网站地址/h
- 终端输入:
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 版本,避免已知漏洞









