检查数据库是否挂掉
2026/6/12 4:06:10 网站建设 项目流程

既然数据库和应用都部署在同一台服务器上,使用localhost作为连接地址在逻辑上是完全正确的。

但是,结合你之前遇到的hikariCP - Connection is not available, request timed out after 30000ms报错,问题通常出在环境差异配置细节上。请按照以下 4 个步骤逐一排查:

1. 确认 MySQL 服务是否真的在运行(最常见原因)

打包部署到服务器后,MySQL 不会像本地 IDEA 那样自动启动。你需要登录到服务器(47.97.59.142)上检查:

  • Linux 系统:在终端执行systemctl status mysqlservice mysql status。如果没有运行,请执行systemctl start mysql启动它。
  • Windows 系统:打开“服务”(services.msc),找到MySQL80(或类似名称),确保状态是“正在运行”。

2. 检查数据库名称是否完全匹配

你提供的 URL 中,数据库名是newbee_mall_db

  • 请确认你在服务器上创建的数据库名字一字不差地叫newbee_mall_db
  • 如果服务器上叫newbee_mall而没有_db后缀,连接就会失败。

3. 检查时区配置(推荐优化)

虽然你配置了serverTimezone=Asia/Shanghai,但在某些 Linux 服务器环境下,JDBC 驱动可能无法正确解析这个时区字符串,导致连接挂起超时。
建议修改:将serverTimezone=Asia/Shanghai替换为serverTimezone=GMT%2B8

修改后的完整 URL 建议如下:

spring.datasource.url=jdbc:mysql://localhost:3306/newbee_mall_db?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false&allowPublicKeyRetrieval=true&allowMultiQueries=true

(注:这里加上了allowPublicKeyRetrieval=true,可以防止之前遇到过的 MySQL 8 认证问题)

4. 检查 MySQL 用户权限(Host 限制)

即使数据库在本地,如果你的 MySQL 用户只允许localhost访问,而 Java 应用是通过 IPv6 或其他回环地址连接的,也可能被拒绝。
登录服务器的 MySQL,执行以下命令检查并授权:

-- 查看 root 用户的 host 权限 SELECT host, user FROM mysql.user WHERE user = 'root'; -- 如果只有 localhost,建议授权允许所有 IP(包括 127.0.0.1) CREATE USER 'root'@'%' IDENTIFIED BY '你的密码'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; FLUSH PRIVILEGES;

💡 快速定位建议:

先登录服务器执行telnet localhost 3306

  • 如果提示Connected,说明数据库正常,问题出在配置(账号密码/数据库名/时区)
  • 如果提示Connection refused,说明数据库根本没启动或者端口不对

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询