You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux系统root用户运行mysql命令报1045访问拒绝该如何解决

错误原因说明

Linux系统root账号与MySQL服务的root账号是完全独立的两套权限体系,MySQL的用户认证逻辑默认不关联操作系统用户权限,你直接执行mysql命令时没有传入登录密码,也没有提前配置免密登录规则,就会触发该报错。
你执行的命令:
root@local:~# mysql
返回的报错信息:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

修复方案
  • 如果你知道MySQL root账号的密码,直接执行带认证参数的登录命令即可:
    mysql -u root -p
    
    执行命令后按提示输入MySQL root密码即可完成登录。
  • 如果你忘记了MySQL root账号的密码,可按如下步骤重置:
    1. 停止正在运行的MySQL服务
      systemctl stop mysql
    2. 以跳过权限校验的模式启动MySQL
      mysqld_safe --skip-grant-tables --skip-networking &
    3. 直接无密码登录MySQL
      mysql
    4. 切换到MySQL系统库
      use mysql;
    5. 按你使用的MySQL版本执行对应重置密码命令:
      • MySQL 5.7/8.0及以上版本:
        ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你设置的新密码';
      • MySQL 5.6及更早版本:
        UPDATE user SET password=PASSWORD('你设置的新密码') WHERE user='root' AND host='localhost';
    6. 刷新权限使配置生效
      FLUSH PRIVILEGES;
    7. 退出MySQL后终止跳过权限模式的进程,重启正常MySQL服务
      systemctl restart mysql
    8. 用新设置的密码测试登录即可。
  • 如果你需要实现Linux root用户无需密码直接登录MySQL,可配置auth_socket认证插件:
    1. 登录MySQL后执行如下命令:
      ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket BY '';
    2. 刷新权限
      FLUSH PRIVILEGES;
      配置完成后,只有Linux root用户直接执行mysql命令可免密登录,其余用户即使知道MySQL root密码也无法登录,安全性更高。

内容的提问来源于stack exchange,提问作者Dan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:54:00