检查数据库是否挂掉
既然数据库和应用都部署在同一台服务器上,使用 localhost 作为连接地址在逻辑上是完全正确的。
但是,结合你之前遇到的 hikariCP - Connection is not available, request timed out after 30000ms 报错,问题通常出在环境差异或配置细节上。请按照以下 4 个步骤逐一排查:
1. 确认 MySQL 服务是否真的在运行(最常见原因)
打包部署到服务器后,MySQL 不会像本地 IDEA 那样自动启动。你需要登录到服务器(47.97.59.142)上检查:
- Linux 系统:在终端执行
systemctl status mysql或service 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,说明数据库根本没启动或者端口不对。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)