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

MySQL ERROR 1045 (28000)权限拒绝问题求助:bash脚本验证管理员账号失败

解决MySQL登录错误ERROR 1045 (28000)的排查步骤

你遇到的这个权限拒绝问题很常见,我整理几个你可能没注意到的排查方向,按顺序试试:

  • 检查用户的主机匹配规则
    MySQL的用户是用户名@主机的组合,哪怕用户名对了,主机不匹配也会拒绝访问。先登录到MySQL(比如用root账号),执行这条命令查看admin用户的主机配置:

    SELECT user, host FROM mysql.user WHERE user = 'admin';
    

    如果结果里没有admin@localhost,只有admin@%或者admin@127.0.0.1,那问题就出在这:

    • 如果你用localhost登录(默认是socket连接),需要确保存在admin@localhost用户;
    • 如果是admin@127.0.0.1,登录时要加上-h 127.0.0.1强制用TCP/IP连接,比如:
      mysql -u admin -p$dbadminpass -h 127.0.0.1
      
  • 排查密码中的特殊字符解析问题
    如果你的密码包含bash的特殊字符(比如$、!、&、空格等),直接用-p$dbadminpass会被bash解析修改,导致实际传入MySQL的密码不对。解决方法是给密码加上双引号包裹:

    mysql -u $dbadmin -p"$dbadminpass"
    

    这样bash就会把整个密码当作字符串传递,不会解析里面的特殊字符。

  • 检查MySQL 8.0+的认证插件兼容性
    如果你用的是MySQL 8.0及以上版本,默认的认证插件是caching_sha2_password,有些旧版本的MySQL客户端可能不支持这个插件,导致登录失败。可以把admin用户的认证插件改成兼容的mysql_native_password:

    ALTER USER 'admin'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
    FLUSH PRIVILEGES;
    
  • 确认权限是否已刷新
    虽然用CREATE USER和GRANT命令后权限通常会自动生效,但偶尔也会有缓存问题。创建用户并授权后,手动执行一次刷新:

    FLUSH PRIVILEGES;
    

    然后再尝试登录。

  • 直接用root登录测试对比
    先试试用root账号能不能正常登录:

    mysql -u root -p
    

    如果root能登录,说明MySQL服务本身没问题,问题还是出在admin用户的配置上;如果root也不能登录,那可能是MySQL服务的权限配置或者socket文件权限有问题。

内容的提问来源于stack exchange,提问作者o'gamingSCV

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 07:59:08