1

我正在尝试使用 java 中的 JDBC 工具(使用 eclipse)连接到 MySQL 服务器。我只是想知道如何输入 2 个用户/密码组合。第一个是我用来连接服务器的(例如当我 ssh 进入服务器时),第二个是我进入 phpmyadmin 的。到目前为止,我只将 phpmyadmin 密码输入到 jdbc 连接属性中,并且它没有连接。这是我目前的声明:

conn = DriverManager.getConnection("jdbc:mysql://[IP of server]:3306/[Database Table name]", "[UserName (same as phpmyadmin)]","[Password (same as phpmyadmin)]");

我得到一个

java.sql.SQLException: null,  message from server: "Host '[My computer's full host name]' is not allowed to connect to this MySQL server"

我只是想知道除了 phpmyadmin 用户名/密码之外,是否还需要输入我的服务器登录名/密码(我用于 ssh 的那个)。我是 JDBC 和 MySQL 服务器的新手,所以我会很感激任何提示。

仅作为背景,我可以通过 ssh 成功连接,并且可以通过 phpmyadmin 登录服务器。

4

3 回答 3

6

以下是您如何创建一个可以从另一台客户端计算机访问您的服务器的帐户的方法:

CREATE USER 'bobby'@'localhost' IDENTIFIED BY 'some_password';

这会创建用户,并说他可以从 localhost 连接。

如果他在机器 192.168.0.5 上,你会做这样的事情:

CREATE USER 'bobby'@'192.168.0.5' IDENTIFIED BY 'some_password';

然后,当然,您必须适当地授予权限:

GRANT ALL PRIVILEGES ON databasename.* TO 'bobby'@'localhost' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON databasename.* TO 'bobby'@'192.168.0.5' WITH GRANT OPTION;

反正这是我的经历。

您最好阅读本节以了解如何指定 MySQL 帐户

于 2012-06-18T04:46:15.713 回答
3

当您从 PHPMyAdmin 登录时,Web 服务器位于托管 Mysql 数据库(在您的情况下)的同一台服务器上。默认情况下,Mysql 不允许来自远程主机的连接;只有本地机器可以访问数据库。

我会在黑暗中拍摄,并说您运行 java 代码的计算机与托管 mysql 服务器的计算机不同。您必须将 Mysql 配置为允许通过配置文件从远程主机连接,然后更改mysql. users指定用户的表以允许从您的 IP 地址进行连接(或者,如果您不关心安全性,则可以使用任何 IP 地址。)

要配置 mysql 以允许来自远程主机的连接,您必须从配置文件中删除 "bind-address=" 行。

要允许任何主机登录到特定的 mysql 用户,您必须设置mysql. users主机`列到“%”。

这两项都必须完成。

于 2012-06-18T04:41:52.217 回答
1
public class MysqlConnect{
  public static void main(String[] args) {
  System.out.println("MySQL Connect Example.");
  Connection conn = null;
  String url = "jdbc:mysql://localhost:3306/";
  String dbName = "jdbctutorial";
  String driver = "com.mysql.jdbc.Driver";
  String userName = "root"; 
  String password = "root";
  try {
  Class.forName(driver).newInstance();
  conn = DriverManager.getConnection(url+dbName,userName,password);
  System.out.println("Connected to the database");
  conn.close();
  System.out.println("Disconnected from database");
  } catch (Exception e) {
  e.printStackTrace();
  }
  }
}
于 2012-06-18T09:45:03.717 回答