有人可以向我解释此行为何起作用:

conn = DriverManager.getConnection("jdbc:mysql://myWebsite.com:3306/schemaName?user=userX&password=passwordX");


但是此行不:

conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/schemaName?user=userX&password=passwordX");


尝试通过本地主机(或127.0.0.1)访问时出现通信链接故障。但是,我可以通过localhost通过PHP,MySQLQuery Browser和MySQL Aministrator访问数据库。

如果需要,这是我正在使用的整个方法:

public Database() throws Exception {
Class.forName("com.mysql.jdbc.Driver").newInstance();

try {
  conn = DriverManager.getConnection("jdbc:mysql://myWebsite.com:3306/schemaName?user=userX&password=passwordX");
  // Next line does not work.
  //    conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/schemaName?user=userX&password=passwordX");
  } catch (SQLException ex) {
      displaySQLException(ex); // Seperate routine to display errors.
  }
}


谢谢你的帮助,
理查德

最佳答案

您的mysqld可能是binding专用于以太网接口,而不是所有接口(0.0.0.0)或localhost接口(127.0.0.1)。

在* nix平台上,您可以使用以下命令检查守护程序正在侦听哪个接口:

$ netstat -ln|grep 3306
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN

10-08 06:20