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

为何能SSH访问服务器却无法连接MySQL数据库?

解决MySQL SQLSTATE[HY000] [1045] 访问被拒问题

按照以下步骤逐一排查:

  • 检查root用户的TCP/IP访问权限
    登录MySQL(用你能成功连接的方式,比如mysql -u root -p),执行以下命令查看root用户的权限条目:

    SELECT user, host, authentication_string FROM mysql.user WHERE user = 'root';
    

    确认是否存在host为127.0.0.1的条目:

    • 如果没有,创建该用户并授权:
      CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY '你的数据库密码';
      GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' WITH GRANT OPTION;
      FLUSH PRIVILEGES;
      
    • 如果已有该条目,对比authentication_string值是否和root@localhost的一致,不一致的话重新设置密码:
      ALTER USER 'root'@'127.0.0.1' IDENTIFIED BY '你的数据库密码';
      FLUSH PRIVILEGES;
      
  • 验证TCP/IP连接是否正常
    手动用TCP/IP方式连接MySQL,模拟服务器程序的连接方式:

    mysql -u root -p -h 127.0.0.1 -P 3360
    

    如果这个命令连接失败,说明MySQL的TCP/IP配置有问题;如果能成功连接,问题出在你的服务器程序配置上。

  • 检查MySQL的网络监听配置
    执行以下命令查看MySQL监听的端口和地址:

    netstat -tulpn | grep mysql
    

    确认输出中包含127.0.0.1:3360或0.0.0.0:3360:

    • 如果没有,修改MySQL配置文件(通常是/etc/my.cnf或/etc/mysql/my.cnf),添加或修改以下内容:
      bind-address = 127.0.0.1
      port = 3360
      skip-networking = off
      
      保存后重启MySQL服务:systemctl restart mysql(或service mysql restart)
  • 核对服务器程序的数据库配置
    确保程序配置文件中的以下参数完全正确:

    • 主机地址:127.0.0.1(不要写localhost,避免默认用socket连接)
    • 端口:3360(确认没有写成默认的3306)
    • 用户名:root
    • 密码:和你手动连接时用的完全一致,注意特殊字符的转义(比如密码含$、#时,要确保配置文件中没有被解析成变量或注释)
  • 排查程序配置缓存问题
    如果修改了配置文件,确保服务器程序已重启,避免使用旧的缓存配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 03:16:18