You need to enable JavaScript to run this app. Ubuntu执行sudo mysql报ERROR1045 root访问被拒绝重装无效求助
优惠活动
大模型
产品
解决方案
定价
更多

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 -y
    • sudo 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.03 02:54:07