Ubuntu LAMP环境下MySQL 1045登录权限拒绝问题求助
解决Ubuntu LAMP环境下MySQL root用户登录Error 1045问题
问题原因
Ubuntu系统默认安装的MySQL中,root用户默认采用auth_socket插件认证,而非密码认证机制。这意味着只有通过sudo切换到系统root身份才能登录MySQL,直接执行mysql -u root -p会触发权限拒绝错误,mysql_secure_installation无法直接修正这种认证方式问题。
解决步骤
1. 跳过权限验证启动MySQL
- 停止当前运行的MySQL服务:
sudo systemctl stop mysql - 以跳过权限表校验的方式启动MySQL后台进程:
sudo mysqld_safe --skip-grant-tables & - 此时无需密码即可登录MySQL:
mysql -u root
2. 修改root用户认证方式并重置密码
- 切换到MySQL系统核心数据库:
USE mysql; - 根据你的MySQL版本执行对应命令(替换
your_new_password为自定义密码):- MySQL 8.0及以上版本:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password'; - MySQL 5.7及以下版本:
UPDATE user SET authentication_string=PASSWORD('your_new_password') WHERE User='root' AND Host='localhost';
- MySQL 8.0及以上版本:
- 刷新权限使配置生效:
FLUSH PRIVILEGES; - 退出MySQL命令行:
exit;
3. 恢复正常启动并验证登录
- 停止临时启动的MySQL进程:
sudo systemctl stop mysql - 正常启动MySQL服务:
sudo systemctl start mysql - 使用新密码登录验证:
输入设置的新密码后即可成功进入MySQL命令行。mysql -u root -p
内容的提问来源于stack exchange,提问作者darek_82
相关产品推荐
相关产品推荐

