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

Ubuntu下Tomcat部署war包提示root@localhost数据库访问被拒绝问题

报错排查解决思路
  • 容器级配置覆盖排查
    检查Tomcat的全局配置是否存在同名数据源覆盖了项目配置:查看${TOMCAT_HOME}/conf/context.xml、${TOMCAT_HOME}/conf/server.xml,以及${TOMCAT_HOME}/conf/Catalina/localhost/目录下和你项目路径同名的xml文件,是否存在JNDI数据源配置的用户名是root,且数据源名称和Spring中引用的名称一致,容器级的数据源配置优先级高于项目内的Spring配置。
  • 外部配置优先级覆盖排查
    Spring配置加载优先级遵循:操作系统环境变量 > JVM启动参数 > 外置配置文件 > 项目内配置文件。可以按以下顺序排查:
    1. 查看Tomcat启动脚本、setenv.sh中是否配置了spring.datasource.username=root相关的JVM参数
    2. 查看操作系统环境变量中是否存在Spring数据源相关的配置项
    3. 检查是否有外置的配置文件放在Tomcat工作目录、项目部署目录下,优先级高于war包内的配置
  • 配置属性&打包正确性排查
    1. 解压部署的war包,检查内部的application配置文件(.properties/.yml),确认打包时确实将生产环境的tawxin账号配置打包,没有被本地开发的root配置覆盖
    2. 检查数据源配置的属性名是否匹配连接池要求:比如Hikari连接池的用户名字段为spring.datasource.hikari.username,如果误写为user会导致读取不到配置,自动使用默认值root
  • MariaDB账号权限&连接方式排查
    1. 登录MariaDB执行select user,host from mysql.user where user='tawxin';,确认存在tawxin@localhost账号,若只有tawxin@%账号,本地localhost连接时不会匹配该权限
    2. 在服务器本地执行mysql -u tawxin -h localhost -p验证账号登录是否正常,再尝试mysql -u tawxin -h 127.0.0.1 -p走TCP连接验证,若127.0.0.1可以登录、localhost不行,说明JDBC URL配置为localhost时走Unix Socket认证失败,可以将JDBC URL中的localhost改为127.0.0.1规避该问题
  • 隐式配置来源排查
    给Tomcat启动参数添加--debug,启动时查看Spring输出的配置属性加载日志,定位spring.datasource.username的具体加载来源,即可直接找到root配置的注入位置;同时排查项目依赖的二方/三方包是否自动注入了默认配置的数据源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:24:05