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

3次阅读

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

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

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 版本,避免已知漏洞
text=ZqhQzanResources