2012-08-03 48 views
6

我試圖連接到使用PDO遠程MySQL數據庫,但它失敗,錯誤:PHP PDO連接到MySQL失敗,的mysql_connect工作正常

Connection failed: SQLSTATE[28000] [1045] Access denied for user 'my_user'@'some.ip.address' (using password: YES) 

這是我正在嘗試連接:

$dsn = "mysql:host=sql.my_domain.nazwa.pl;dbname=my_db;port:3307"; 
$user = "my_user"; 
$password = "my_password"; 

try { 
    $this->db = new PDO($dsn, $user, $password); 
} catch (PDOException $e) { 
    echo 'Connection failed: ' . $e->getMessage(); 
} 

並且失敗。 但是這樣:

mysql_connect('sql.my_domain.nazwa.pl:3307', 'my_user', 'my_password'); 

工作正常。

任何人都知道什麼可能是錯誤的PDO,它的配置,我設置的參數或可能是這個特定的服務器(nazwa.pl)?

[解決]好了,這是簡單的(也是棘手注意到...)語法錯誤,它應該是一個=,而不是:dsnport一部分。

回答

5

嘗試更換:

$dsn = "mysql:host=sql.my_domain.nazwa.pl;dbname=my_db;port:3307"; 

$dsn = "mysql:host=sql.my_domain.nazwa.pl;dbname=my_db; port=3307"; 
+0

有什麼區別? – PeeHaa 2012-08-03 12:01:27

+1

@PeeHaa格式化的東西?我一直在與Apache相同的PC上使用PDO,但是我發現的文檔暗示了上述語法。 – Fluffeh 2012-08-03 12:02:48

+0

這是令人尷尬的......我沒有注意到,在「端口」應該保持'='不'之後:'。現在它可以工作。 非常感謝你,這是正確的答案。 – zelazowy 2012-08-03 12:04:11

1

如果你試圖連接到數據庫的一些其他服務器上確保您的SQL服務器讓你在你的情況下,特定端口上的訪問3307從您的代碼託管地點的IP地址。 如果兩臺服務器都是一樣的請用localhost或127.0.0.1