我有一个Java应用程序,可以连接到一个在线的MySQL数据库,就像这样:可以用java连接到MySQL数据库,但不能用PHP连接?
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]无法连接到MySQL服务器'85 .10.205.173'(4)
那么为什么两者的工作方式不同呢?我认为启用远程访问(因为我可以连接到Java)。
为什么在第一个使用主机名而第二个使用IP? –
Java包含一个端口号 - 您可能需要将其包含在您的PHP代码中。 – andrewsi
我使用一个IP,因为如果我在PHP中使用主机名,它甚至不会识别主机(SQLSTATE [HY000] [2005]未知的MySQL服务器主机'db4free.net:3306'(3))。如果我包含端口,也是一样。 – RuntimeException