【问题标题】:Connect to mysql database java连接mysql数据库java
【发布时间】:2012-01-10 01:41:42
【问题描述】:

我正在尝试从 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。怎么了?

【问题讨论】:

  • 查看此处 - forums.mysql.com/read.php?52,18966,134534 了解最可能的问题根源。
  • 我相信mysql默认只有本地主机连接。您需要更改配置文件以允许本地主机之外的连接。因此,将您的 IP 地址添加到允许的用户。

标签: java mysql jdbc


【解决方案1】:

这是数据库端的权限问题;您需要向用户 root 授予权限以从您的特定 IP 地址进行连接。

这样的事情应该可以工作:

GRANT ALL ON foo.* TO root@'1.2.3.4' IDENTIFIED BY 'PASSWORD';

另一方面;我不会使用root 来访问数据库;您应该为此使用普通用户帐户。

【讨论】:

  • 感谢您的评论。我创建了另一个用户名 admin 并在 admin 上授予了所有权限。* To root@' IDENTIFIED By 'Password' 现在收到此错误。用户 'admin'@'' 的访问被拒绝(使用密码:YES)
  • @Ankur:现在看起来你输入了错误的密码?你在用什么?
  • 感谢您的回复,我的 user:pass 是 admin:admin,这就是我在代码中提到的内容。没有错。
  • 已修复。抱歉,我的 MySQL 中已经有一个名为 admin 的用户。我创建了另一个名字,这很好..感谢您的帮助
【解决方案2】:

您不应使用 root 帐户进行开发。为了解决您的问题,让我们创建一个名为 dbasedev 的假设用户。

CREATE USER 'dbasedev'@'%' IDENTIFIED BY 'passw0rd!';
GRANT ALL PRIVILEGES ON *.* TO 'dbasedev'@'%';
FLUSH PRIVILEGES;

这将允许您使用用户 ID:dbasedev,密码:passw0rd!,从任何主机连接到 MySQL 服务器。

这是对@Icarus 答案的补充,我无法在评论中发布所有代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    • 1970-01-01
    • 2022-01-01
    相关资源
    最近更新 更多