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

Digital Ocean部署Spring Boot项目时MariaDB连接被拒绝求助

解决Spring Boot部署到Digital Ocean Droplet后MySQL连接拒绝问题

问题核心

你遇到的SQLNonTransientConnectionException是因为Droplet上的应用尝试连接本地(127.0.0.1)3308端口的MySQL服务,但该服务未正常提供连接能力。

排查与解决步骤

  • 检查Droplet上MySQL服务状态
    登录Droplet终端,执行命令确认MySQL是否运行:

    sudo systemctl status mysql
    

    若服务未启动,执行启动命令:

    sudo systemctl start mysql
    

    如需开机自启,追加:

    sudo systemctl enable mysql
    
  • 确认MySQL实际监听端口
    查看MySQL当前监听的端口,避免配置端口与实际不符:

    sudo netstat -tulpn | grep mysql
    

    若输出中无3308端口,需修改MySQL配置文件(常见路径为/etc/mysql/mysql.conf.d/mysqld.cnf或/etc/my.cnf),找到port字段修改为3308,之后重启服务:

    sudo systemctl restart mysql
    
  • 验证MySQL本地连接权限
    登录MySQL控制台,检查应用所用用户的本地访问权限:

    mysql -u root -p
    

    执行SQL查看用户权限配置:

    SELECT user, host FROM mysql.user;
    

    若应用用户的host不是localhost或127.0.0.1,执行授权语句:

    GRANT ALL PRIVILEGES ON 你的数据库名.* TO '应用用户名'@'localhost' IDENTIFIED BY '用户密码';
    FLUSH PRIVILEGES;
    
  • 检查Droplet防火墙规则
    确认本地防火墙未拦截3308端口:

    sudo ufw status
    

    若3308端口未开放,添加允许规则:

    sudo ufw allow 3308/tcp
    
  • 核对应用数据库配置
    确保Droplet上的application.properties/application.yml中数据库配置与本地一致,重点检查连接URL:

    spring.datasource.url=jdbc:mysql://127.0.0.1:3308/你的数据库名?useSSL=false&serverTimezone=UTC
    

    注意:若MySQL并非部署在Droplet本地,需将127.0.0.1替换为实际MySQL服务器IP,同时确保远程MySQL允许该Droplet的IP访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 14:02:27