java - 我的 spring boot 应用程序的新版本无法连接到 mysql

标签 java mysql spring tomcat jenkins

我的 spring boot 应用程序在本地主机上运行良好,它的第一个版本已经运行了几个月,但现在当我尝试上传新版本的应用程序或任何其他 spring boot 应用程序时我收到以下错误:

not eligible for auto-proxying)
2017-05-29 17:20:48.565 ERROR 618 --- [           main] o.a.tomcat.jdbc.pool.ConnectionPool      : Unable to create initial connections of pool.

java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055) ~[mysql-connector-java-5.1.6.jar:na]
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956) ~[mysql-connector-java-5.1.6.jar:na]
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491) ~[mysql-connector-java-5.1.6.jar:na]
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423) ~[mysql-connector-java-5.1.6.jar:na]
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:910) ~[mysql-connector-java-5.1.6.jar:na]
	at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3923) ~[mysql-connector-java-5.1.6.jar:na]
	at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1273) ~[mysql-connector-java-5.1.6.jar:na]
	at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2031) ~[mysql-connector-java-5.1.6.jar:na]
	at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:718) ~[mysql-connector-java-5.1.6.jar:na]
	at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46) ~[mysql-connector-java-5.1.6.jar:na]
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_131]
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_131]
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_131]
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_131]
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:406) ~[mysql-connector-java-5.1.6.jar:na]
	at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:302) ~[mysql-connector-java-5.1.6.jar:na]
	at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282) ~[mysql-connector-java-5.1.6.jar:na]
	at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:310) ~[tomcat-jdbc-8.5.11.jar:na]
	at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:203) ~[tomcat-jdbc-8.5.11.jar:na]
	at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:732) [tomcat-jdbc-8.5.11.jar:na]

下面是我的应用程序属性文件:

spring.jpa.hibernate.ddl-auto=update

# Replace with your connection string
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/appName
spring.datasource.connectionProperties=useUnicode=true;characterEncoding=utf-8;

# Replace with your credentials
spring.datasource.username=root
spring.datasource.password=root


# Keep the connection alive if idle for a long time (needed in production)
spring.datasource.testWhileIdle = true
spring.datasource.validationQuery = SELECT 1

spring.datasource.test-on-borrow=true
spring.datasource.connection-test-query=SELECT 1
spring.datasource.tomcat.validation-interval=0
# Number of ms to wait before throwing an exception if no connection is available.
spring.datasource.tomcat.max-wait=10000

# Validate the connection before borrowing it from the pool.
spring.datasource.tomcat.test-on-borrow=true


spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect

# The SQL dialect makes Hibernate generate better SQL for the chosen database
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
#server.port = 8081

所以,已经检查过 mysql 正在运行并且我能够使用 workbench 连接到它,并且如前所述连接到 1 个实时应用程序,我没有输入错误的用户名/密码,也没有对 application.properties 文件进行任何更改导致这个问题,这个问题只与 Spring Boot 应用程序有关,而 Spring 应用程序运行良好。 我正在使用 Jenkins 在 Tomcat 上部署应用程序,上面发布的错误输出来自 jenkins。

最佳答案

我通过以下方式修复了它:编辑位于/etc/mysql/mysql.conf.d/目录的 mysqlId.cnf 文件中的绑定(bind)地址,如下所示:
绑定(bind)地址 = 0.0.0.0

然后重新加载mysql服务。

然后我创建了一个新用户,授权如下:

创建用户 'myuser'@'localhost' 由 'mypass' 标识; 创建由“mypass”标识的用户“myuser”@“%”;

GRANT ALL ON . TO 'myuser'@'localhost'; GRANT ALL ON . TO 'myuser'@'%';

和刷新权限:

刷新权限;

感谢@apesa you can find more detailed answer here

关于java - 我的 spring boot 应用程序的新版本无法连接到 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44246326/

相关文章:

php - 为始终不同的变量插入语句

mysql - 从签到日期列表中获取持续时间

java - 在Web服务和业务层之间传递身份验证信息(Spring、tomcat)

spring - ${_csrf.parameterName} 和 ${_csrf.token} 返回 null

java - JavaFX 每月概述 - SceneBuilder

java - 使用 Java 驱动程序在 Mongodb 中出现超时异常

mysql - 使用 MySQL 选择不存在的数据

Spring 2 JDBC 数据源配置

java - 与 JDO 和 GAE 的多对一关系

java - 如何使用XPath通过另一个属性值获取属性内容?