第一步检查网络连接,确保服务器能ping通数据库主机。重启数据库服务,很多人说MySQL服务重启后就好了。用navicat或其他工具测试连接,如果提示拒绝连接,就改下端口3306。检查防火墙,别挡着了。密码错了就重置,root用户进安全模式改密码。配置文件的host改成localhost或127.0.0.1试试。
CSDN网友分享
数据库连接失败最常见原因是网络问题或服务没启动。先用命令行ping数据库IP,看能不能连上。如果ping不通,检查网络设置或VPN。服务端用netstat -an|grep 3306确认端口监听中。然后重启mysqld服务,service mysql restart。客户端连接字符串确认用户名密码端口无误。防火墙关掉测试,iptables -F。
知乎高赞回答
我亲测,连接失败80%是防火墙惹的祸。Windows防火墙添加例外,Linux用firewall-cmd --add-port=3306/tcp --permanent。还可能是max_connections参数太小,编辑my.cnf增加到500,重启生效。时间同步不对也会失败,ntpdate对时。编码格式utf8mb4也要匹配。
博客园经验帖
步骤:1.确认数据库服务运行 ps -ef|grep mysql。2.检查mysql.sock文件路径,mysqld.sock没生成就指定--socket路径。3.用户权限,GRANT ALL ON *.* TO 'user'@'%';。4.连接池配置JDBC url加?useSSL=false&serverTimezone=GMT%2B8。重启应用就通了。
StackOverflow中文翻译
Connection refused? 服务器没开mysql start。Access denied? 密码错或用户无远程权限,登录mysql -u root -p 执行update user set host='%' where user='root';flush privileges;。Too many connections? 等会或kill掉进程。
百度经验
用Xshell连远程数据库失败,改sshd_config PermitRootLogin yes,重启ssh。端口3306没开,/etc/mysql/mysql.conf.d/mysqld.cnf bind-address=0.0.0.0。阿里云安全组加规则放行3306。
简书文章
亲测Spring Boot项目,application.yml url: jdbc:mysql://localhost:3306/db?characterEncoding=utf-8&useSSL=false。驱动驱动-class-name: com.mysql.cj.jdbc.Driver。用户名密码环境变量注入,避免硬编码。
FAQ
Q: 为什么总是提示无法连接到数据库服务器?
A: 大多是服务没启动、端口被挡或网络不通,重启服务检查防火墙。
Q: 远程连接失败怎么搞?
A: 改授权用户host为%或IP,安全组/防火墙开端口。
Q: 连接上但马上断开呢?
A: 检查连接超时参数wait_timeout,调大点。
Q: 数据没丢吧?
A: 连接失败通常不影响已存数据,尽快修好备份一下。