我正在尝试将Hibernate从本地连接到远程MySQL数据库。
错误讯息:
WARN : org.hibernate.engine.jdbc.internal.JdbcServicesImpl - HHH000342: Could not
obtain connection to query metadata : Access denied for user 'root'@'<ip>' (using
password: YES)
ERROR: org.hibernate.tool.hbm2ddl.SchemaUpdate - HHH000319: Could not get database
metadata
的hibernate.cfg.xml
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://vm-name-001:3306/dbname</property>
<property name="connection.username">root</property>
<property name="connection.password">password</property>
的pom.xml
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate-version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.29</version>
</dependency>
在远程MySQL数据库中,我发布了show grants for 'root'@'%';
并收到了:
...
| GRANT SELECT, INSERT, UPDATE, DELETE, LOCK TABLES, EXECUTE ON `dbname`.* TO
'root'@'%'
| GRANT ALL PRIVILEGES ON `dbname`.* TO 'root'@'%'
...
如果我登录的是与远程MySQL数据库不同的虚拟机,我可以发出mysql -u root -h vm-name-001 -p
并登录。
我的同事也说他可以使用Hibernate连接正常,尽管他使用的是Tomcat服务器。
编辑 - 我的队友也可以使用Tomcat之外的常规Java应用程序进行连接。
我错过了什么?