我正在尝试从Java连接到MySQL数据库(MySQL托管在WAMP服务器中)
String userName = "root";
String password = "pass";
String url = "jdbc:mysql://localhost/dbase";
Class.forName ("com.mysql.jdbc.Driver").newInstance ();
conn = DriverManager.getConnection (url, userName, password);
当我从localhost运行时,连接正常。但是,当我从另一台计算机运行此代码替换localhost与我的计算机的IP(在同一网络内)时,我收到错误,
message from server: "Host '<name>' is not allowed to connect to this MySQL server"
我也尝试过端口3306。怎么了?
答案 0 :(得分:5)
这是数据库方面的权限问题;您需要向用户root
授予权限才能从您的特定IP地址进行连接。
这样的事情应该有效:
GRANT ALL ON foo.* TO root@'1.2.3.4' IDENTIFIED BY 'PASSWORD';
另一方面;我不会使用root
来访问数据库;您应该使用常规用户帐户。
答案 1 :(得分:2)
您不应该使用root帐户进行开发。要解决您的问题,请创建一个名为 dbasedev 的假设用户。
CREATE USER 'dbasedev'@'%' IDENTIFIED BY 'passw0rd!';
GRANT ALL PRIVILEGES ON *.* TO 'dbasedev'@'%';
FLUSH PRIVILEGES;
这将允许您从任何主机连接到具有用户ID:dbasedev
,密码:passw0rd!
的MySQL服务器。
这是@ Icarus答案的补充,我无法在评论中发布所有代码。