Fedora 33下执行mysql_secure_installation报1045访问被拒问题求解
Fedora 33 部署MySQL时临时密码访问被拒的解决方法
问题场景
Fedora 33系统部署MySQL过程中,从sudo grep 'temporary password' /var/log/mysqld.log日志查询提取的官方临时密码,用于执行sudo mysql_secure_installation安全配置脚本、或直接用sudo mysql -u root -p登录时,均触发ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)报错,可通过以下步骤完成修复。
修复操作步骤
1. 停止所有MySQL运行进程
先终止系统服务托管的MySQL实例:sudo systemctl stop mysqld
检查是否存在残留后台进程:pgrep mysqld
如果查询返回有效进程ID,强制清理残留进程:sudo kill -9 <查询到的进程ID>
2. 以跳过权限校验的模式启动MySQL
执行后台启动命令,跳过权限表加载流程,同时关闭网络访问权限,降低操作过程的安全风险:sudo mysqld --skip-grant-tables --skip-networking &
提示:命令末尾的&参数代表将进程放置在后台运行,操作全程不要关闭当前终端窗口,避免进程意外中断
3. 无密码登录并重置root权限
直接执行命令进入MySQL控制台,无需输入密码:mysql -u root
进入控制台后按顺序执行以下SQL语句完成权限重置:
- 先刷新权限表,否则后续修改操作会触发权限报错:
FLUSH PRIVILEGES; - 切换到MySQL内置的系统权限库:
USE mysql; - 重置root本地登录密码。需注意Fedora 33默认搭载的MySQL 8.x版本的密码强度要求(需包含大小写字母、数字、特殊字符,长度不小于8位),可根据自身需求替换为自定义密码:
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '自定义的高强度密码'; - 再次刷新权限使配置生效:
FLUSH PRIVILEGES; - 退出MySQL控制台:
exit;
4. 恢复MySQL正常运行模式
- 终止之前后台运行的跳过权限模式的MySQL进程:
sudo pkill -9 mysqld - 通过系统服务正常启动MySQL:
sudo systemctl start mysqld
5. 验证功能可用性
- 使用刚才设置的新密码,执行
sudo mysql -u root -p确认可正常登录控制台 - 重新执行
sudo mysql_secure_installation,按提示完成剩余的安全配置流程即可
操作注意事项
- 不要将
--skip-grant-tables参数永久写入MySQL配置文件(/etc/my.cnf),否则会导致数据库长期处于无权限校验的高危状态 - 如果执行ALTER USER语句时提示密码强度不符合规则,可临时在MySQL控制台执行
SET GLOBAL validate_password.policy = LOW;降低校验等级,完成密码重置后再将参数调回默认值 - 操作过程中避免强制终止进程或重启系统,防止MySQL系统库文件损坏导致数据异常
- 临时密码校验失败的常见诱因:从日志提取临时密码时,密码首尾附带了空格、特殊字符被终端自动转义,完成密码重置后即可规避这类问题
内容的提问来源于stack exchange,提问作者Sebastian Charras
相关产品推荐
相关产品推荐

