Spring Can';t使用JDBC连接到MariaDB,mysql utils成功

Spring Can';t使用JDBC连接到MariaDB,mysql utils成功,spring,spring-boot,jdbc,mariadb,Spring,Spring Boot,Jdbc,Mariadb,我使用JDBC和SpringBoot2.2.2连接到MariaDB实例。登录失败,并显示以下消息: 原因:java.sql.SQLInvalidAuthorizationSpecException:无法 连接到 地址=(主机=server.company.domain)(端口=3306)(类型=master):访问权限 拒绝用户'user'@'server.company.domain'(使用密码: 是的) 当我运行mysqldump-u“user”-p“password”-h server.c

我使用JDBC和SpringBoot2.2.2连接到MariaDB实例。登录失败,并显示以下消息:

原因:java.sql.SQLInvalidAuthorizationSpecException:无法 连接到 地址=(主机=server.company.domain)(端口=3306)(类型=master):访问权限 拒绝用户'user'@'server.company.domain'(使用密码: 是的)

当我运行
mysqldump-u“user”-p“password”-h server.company.domain dbname
时,这一切正常

  • 转储和Spring引导应用程序都从同一台机器(数据库服务器本身)运行
  • 使用的用户和密码相同
  • 密码或用户中没有特殊字符(只有小写/大写字符和数字)
  • jdbc连接字符串如下所示:
    jdbc:mariadb://server.company.domain:3306/dbname
  • 我已经尝试使用
    localhost
    而不是服务器名
  • 当我更改JDBCURL、用户和密码时,同一个应用程序就可以登录到我的开发站点

看来您在MariaDB上遇到了麻烦,而不是spring boot本身。
我建议你遵循以下链接:,如果它不能解决你的问题,请返回,说明你尝试了什么,以及什么不起作用

看来您在MariaDB上遇到了麻烦,而不是spring boot本身。
我建议你遵循以下链接:,如果它不能解决你的问题,请返回,说明你尝试了什么,以及什么不起作用

我做了一个简短的
节目
通过能够连接到数据库的
mysql
命令。输出给了我以下信息:

GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY PASSWORD 'nonono' REQUIRE SSL WITH GRANT OPTION
相关部分是
需要SSL
:与该服务器的连接需要加密

当我检查
/etc/my.cnf.d/
中的文件时,我发现一个包含以下行的文件:

[server]
ssl=1
ssl-cert=/path/to/certificate/cert.pem
通过谷歌搜索,我找到了一个描述如何将JDBC驱动程序设置为使用ssl的链接。它还向您解释了为什么在将
trustServerCertificate
设置为
true
之前应该三思

我的
spring.datasource.url
现在看起来像这样:

jdbc:mariadb://server.company.domain:3306/dbname?useSSL=true&trustServerCertificate=true&serverSslCert=/path/to/certificate/cert.pem

简而言之:
拒绝用户访问
并不能说明全部情况。这会让你认为你的密码可能是错误的,但你会因为其他原因被拒绝通过能够连接到数据库的
mysql
命令。输出给了我以下信息:

GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY PASSWORD 'nonono' REQUIRE SSL WITH GRANT OPTION
相关部分是
需要SSL
:与该服务器的连接需要加密

当我检查
/etc/my.cnf.d/
中的文件时,我发现一个包含以下行的文件:

[server]
ssl=1
ssl-cert=/path/to/certificate/cert.pem
通过谷歌搜索,我找到了一个描述如何将JDBC驱动程序设置为使用ssl的链接。它还向您解释了为什么在将
trustServerCertificate
设置为
true
之前应该三思

我的
spring.datasource.url
现在看起来像这样:

jdbc:mariadb://server.company.domain:3306/dbname?useSSL=true&trustServerCertificate=true&serverSslCert=/path/to/certificate/cert.pem
简而言之:
拒绝用户访问
并不能说明全部情况。它使您认为您的密码可能是错误的,但您被拒绝的其他原因