【发布时间】:2016-01-23 14:24:36
【问题描述】:
我正在笔记本电脑上开发 Java/Spring/Hibernate/CXF/MySQL SOAP Web 服务和相应的 Web Spring MVC 客户端。计划是最终将生成的两个战争文件转移到我托管在 mybiz.com 上的远程服务器上。
笔记本电脑和服务器都有一个 MySQL 版本 5.x.x 的实例 笔记本电脑和服务器都有一个 root@localhost 用户(duh) 服务器还有其他三个用户: zzdb_admin@% zzdb_admin@localhost zzdb_admin@mybiz.com 都具有相同的密码 remotepw 并且都已授予和刷新了各种权限。
两个 MySQL 实例都有一个名为 zzdb 的数据库。 MySQL 的两个实例都将@@session.old_passwords、@@global.old_passwords 和@@global.secure_auth 设置为0;在所有情况下,密码的哈希值都是 41 个字符宽。
直接登录远程服务器时,我可以手动登录两台机器上的所有帐户
mysql --user=root --password=remoterootpw
mysql --user=zzdb_admin --password=remotepw
mysql --host=localhost --user=zzdb_admin --password=remotepw
在笔记本电脑上我可以登录到本地 mysql
mysql --user=root --password=localrootpw
mysql --host=mybiz.com --user=zzdb_admin --password=remotepw
所以所有用户和密码都是正确的。它们的哈希值都是 41 个字符。重要提示:请注意,这最后证明可以与远程计算机上的实例建立连接。
webservice'pom 的 mysql-connector-java 版本为 5.1.8。
现在变得很奇怪。在 web 服务的属性文件中使用这些行:
hibernate.connection.url=jdbc:mysql://localhost:3306/zzdb
hibernate.connection.username=root
hibernate.connection.password=localrootpw
webapp 可以连接到本地数据库实例,一切都很好。但是仅将这三行更改为
hibernate.connection.url=jdbc:mysql://mybiz.com:3306/zzdb
hibernate.connection.username=zzdb_admin
hibernate.connection.password=remotepw
抛出可怕的“用户 'zzdb_admin'@'localhost' 的访问被拒绝”错误
这让我拔出了我剩下的几根头发。看起来我没有遗漏任何东西,并且所有内容都拼写正确。有人知道发生了什么吗?
TIA,
还在学习的史蒂夫
附录:尝试一种不同的、更简单的方法成功了!
Class.forName("com.mysql.jdbc.Driver");
String connectionUrl = "jdbc:mysql://mybiz.com/zzdb?user=zzdb_admin&password=remoteapw";
Connection conn = DriverManager.getConnection(connectionUrl);
现在怎么样?唯一的变化是连接的方法。疯了
【问题讨论】: