我有一个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)。
答案 0 :(得分:0)
在mysql
要禁用DNS主机名查找,请使用--skip-name-resolve选项启动服务器。在这种情况下,服务器仅使用IP地址而不使用主机名来匹配连接主机与MySQL授权表中的行。只能使用使用IP地址在这些表中指定的帐户。
不要忘记重新启动MySQL
才能生效。
不确定这会解决您的问题。