可以用java连接到MySQL db但不能用PHP连接吗?

时间:2014-07-13 17:00:20

标签: java php mysql

我有一个java应用程序,可以连接到在线MySQL数据库,如下所示:

private String hostName = "db4free.net:3306";
private String dbName = "mydbname";
private String username = "name";
private String password = "pw";
   try {
    Class.forName("com.mysql.jdbc.Driver");
    connection = DriverManager.getConnection("jdbc:mysql://" + hostName + "/" + dbName, username, password);
    System.out.println("Connection established!");
   } catch (Exception ex) {
        ex.printStackTrace();
   }

完美无缺。但是,我尝试使用PHP(忽略主机名差异,这应该是它):

$host = "85.10.205.173"; 
$dbname = "dbname"; 
$username = "name"; 
$password = "pw"; 

$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'); 

try 
{ 
    // Open connection with db
    $db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username, $password, $options); 
} 
catch(PDOException $ex) 
{ 
    // Just an error message, if connection fails
    die("Failed to connect to the database: " . $ex->getMessage()); 
}

过了一会儿,我明白了:SQLSTATE [HY000] [2003]无法连接到'85 .10.205.173上的MySQL服务器'(4)

那为什么两者的工作方式不同呢?我认为启用了远程访问(因为我可以连接java)。

1 个答案:

答案 0 :(得分:0)

mysql

中禁用DNS主机名查找
  

要禁用DNS主机名查找,请使用--skip-name-resolve选项启动服务器。在这种情况下,服务器仅使用IP地址而不使用主机名来匹配连接主机与MySQL授权表中的行。只能使用使用IP地址在这些表中指定的帐户。

不要忘记重新启动MySQL才能生效。

不确定这会解决您的问题。