【发布时间】:2019-05-10 14:31:43
【问题描述】:
我正在开发一个已经与 hibernate 一起工作的基本应用程序,并希望添加 spring JPA 功能以使其更简单。
当我使用 hibernate 进行测试时,我能够毫无问题地连接到 mysql 数据库。但是当我从 spring boot 测试应用程序时,数据库访问失败。我在 hibernate.cfg.xml 和 application.properties 中都给出了相同的凭据。但不确定为什么弹簧访问失败。
我尝试将权限授予用户。但还是不行。
GRANT ALL PRIVILEGES ON *.* TO 'logesh'@'localhost' WITH GRANT OPTION;
hibernate.cfg.xml
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/devops</property>
<property name="hibernate.connection.username">logesh</property>
<property name="hibernate.connection.password">logesh</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="hbm2ddl.auto">create</property>
<property name="hibernate.show_sql">true</property>
application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/devops
spring.datasource.username=logesh
spring.datasource.password=logesh
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.database-platform = org.hibernate.dialect.MySQL5Dialect
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto = create
以下是我在春季启动时遇到的错误:
java.sql.SQLException: Access denied for user 'logesh'@'localhost' (using password: YES)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) ~[mysql-connector-java-8.0.13.jar:8.0.13]
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) ~[mysql-connector-java-8.0.13.jar:8.0.13]
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-java-8.0.13.jar:8.0.13]
at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:835) ~[mysql-connector-java-8.0.13.jar:8.0.13]
at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:455) ~[mysql-connector-java-8.0.13.jar:8.0.13]
at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:240) ~[mysql-connector-java-8.0.13.jar:8.0.13]
at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:207) ~[mysql-connector-java-8.0.13.jar:8.0.13]
at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:136) ~[HikariCP-3.2.0.jar:na]
at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:369) ~[HikariCP-3.2.0.jar:na]
at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:198) ~[HikariCP-3.2.0.jar:na]
at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:467) [HikariCP-3.2.0.jar:na]
at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:541) [HikariCP-3.2.0.jar:na]
下面是 MySQL 通用日志,我们可以看到 spring boot 登录失败。随后,当尝试使用休眠时,它能够登录。
2018-12-09T12:48:52.494621Z 150 Connect logesh@localhost on devops using SSL/TLS
2018-12-09T12:48:52.494773Z 150 Connect Access denied for user 'logesh'@'localhost' (using password: YES)
2018-12-09T12:48:54.243711Z 151 Connect logesh@localhost on devops using SSL/TLS
2018-12-09T12:48:54.243881Z 151 Connect Access denied for user 'logesh'@'localhost' (using password: YES)
2018-12-09T12:48:56.328126Z 152 Connect logesh@localhost on devops using SSL/TLS
2018-12-09T12:48:56.328291Z 152 Connect Access denied for user 'logesh'@'localhost' (using password: YES)
2018-12-09T13:10:46.485311Z 153 Connect root@localhost on devops using SSL/TLS
2018-12-09T13:10:46.486314Z 153 Query select @@version_comment limit 1
2018-12-09T13:11:07.220308Z 153 Quit
2018-12-09T13:12:52.763898Z 154 Connect logesh@localhost on devops using SSL/TLS
2018-12-09T13:12:52.764643Z 154 Query select @@version_comment limit 1
2018-12-09T13:13:15.186763Z 154 Quit
2018-12-09T13:27:57.857455Z 155 Connect logesh@localhost on devops using SSL/TLS
2018-12-09T13:27:57.861872Z 155 Query /* mysql-connector-java-8.0.13 (Revision: 66459e9d39c8fd09767992bc592acd2053279be6) */SELECT @@session.auto_increment_increment AS auto_increment_increment, @@character_set_client AS character_set_client, @@character_set_connection AS character_set_connection, @@character_set_results AS character_set_results, @@character_set_server AS character_set_server, @@collation_server AS collation_server, @@collation_connection AS collation_connection, @@init_connect AS init_connect, @@interactive_timeout AS interactive_timeout, @@license AS license, @@lower_case_table_names AS lower_case_table_names, @@max_allowed_packet AS max_allowed_packet, @@net_write_timeout AS net_write_timeout, @@sql_mode AS sql_mode, @@system_time_zone AS system_time_zone, @@time_zone AS time_zone, @@transaction_isolation AS transaction_isolation, @@wait_timeout AS wait_timeout
2018-12-09T13:27:57.877332Z 155 Query SET NAMES utf8mb4
我被困在这里,任何帮助将不胜感激。
回复评论:
mysql> GRANT ALL PRIVILEGES ON . TO 'logesh'@'localhost' IDENTIFIED BY '%logesh%' WITH GRANT OPTION;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '. TO 'logesh'@'localhost' IDENTIFIED BY '%logesh%' WITH GRANT OPTION' at line 1
mysql> GRANT ALL PRIVILEGES ON *.* TO 'logesh'@'localhost' IDENTIFIED BY '%logesh%' WITH GRANT OPTION;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY '%logesh%' WITH GRANT OPTION' at line 1
mysql> GRANT ALL PRIVILEGES ON *.* TO 'logesh'@'localhost' WITH GRANT OPTION;
Query OK, 0 rows affected (0.01 sec)
我只能执行我已经尝试过的第三个命令。
编辑: 这个问题不是Java JDBC Access denied for user 的重复,因为我在发布这个问题之前已经尝试了那里推荐的所有解决方案。
【问题讨论】:
-
在 上授予所有权限。 TO 'logesh'@'localhost' IDENTIFIED by '%logesh%' WITH GRANT OPTION;
-
@INDRESHKHANDELWAL :我已经尝试了这些命令,但没有奏效......我也会发布那个结果......
-
您能否检查一下属性文件中您的用户名或密码后面是否有空格。如果
logesh后面有空格,删除即可。 -
非常感谢!有尾随空格。我更正了它,它现在可以工作了:)
标签: mysql spring hibernate spring-boot