Ubuntu执行sudo mysql报ERROR1045 root访问被拒绝重装无效求助
Ubuntu下MySQL执行
sudo mysql报1045访问拒绝的解决方案 问题核心成因
你此前执行的卸载命令仅清除了MySQL程序包本身,没有删除程序在本地留存的用户数据目录,重装服务时会自动读取旧目录下存储的用户权限、认证配置,不会重新初始化全新的root账户规则,因此会反复出现访问拒绝报错。
分步操作流程
1. 彻底清除所有MySQL残留
- 先停止所有正在运行的MySQL相关服务进程,避免文件占用导致清理失败:
sudo systemctl stop mysql 2>/dev/null; sudo systemctl stop "mysql@*" 2>/dev/null - 完成系统包层面的清除:
sudo apt-get remove --purge -y 'mysql*'sudo apt-get autoremove -ysudo apt-get autoclean
- 手动删除apt清理范围无法覆盖的残留目录(这是此前卸载不彻底的关键):
sudo rm -rf /etc/mysql /var/lib/mysql /var/log/mysql /var/run/mysqld /usr/share/mysql /usr/lib/mysql注意:该操作会永久删除本地所有已存储的MySQL业务数据,若有需要留存的内容请提前完成备份迁移。
2. 安装全新的MySQL服务实例
- 更新本地软件源,安装官方源内的MySQL服务端:
sudo apt-get update && sudo apt-get install -y mysql-server - 启动MySQL服务:
sudo systemctl start mysql
3. 修正root账户的认证规则
正常情况下,Ubuntu源内的MySQL安装完成后,会默认配置root账户通过auth_socket插件认证,即通过sudo权限即可无密进入数据库。若仍出现访问拒绝报错,可手动修正规则:
- 打开MySQL服务端的核心配置文件:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf - 在
[mysqld]配置段下新增临时的跳过权限校验规则:skip-grant-tables - 保存文件后重启MySQL服务使配置生效:
sudo systemctl restart mysql - 此时可无需密码直接进入MySQL控制台:
mysql -u root - 在控制台内依次执行以下SQL命令,将root账户的认证方式修正为默认的sudo免密模式:
FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket; FLUSH PRIVILEGES; EXIT; - 重新打开之前编辑的配置文件,删除临时添加的
skip-grant-tables配置行,再次重启MySQL服务完成配置生效:sudo systemctl restart mysql
4. 验证修复效果
直接执行sudo mysql命令,若能正常进入数据库交互界面,无1045报错,即说明问题已解决。
内容的提问来源于stack exchange,提问作者Turquito
相关产品推荐
相关产品推荐

