2013-05-13 34 views
0

我有2臺服務器。 Server A(10.0.0.1)和Server B(10.0.0.2)[not real ips]。 Server A包含用於在遠程Server B上創建數據庫的腳本。數據庫即時創建。在Server A的腳本如下:PHP腳本創建數據庫並允許遠程訪問不起作用

$this->dbh->exec("CREATE DATABASE `" . $name . "`; 
    CREATE USER '" . $username . "'@'localhost' IDENTIFIED BY '" . $password . "'; 
    GRANT ALL PRIVILEGES ON `" . $name . "`.* TO '" . $username . "'@'%' IDENTIFIED BY PASSWORD '" . $password . "' WITH GRANT OPTION; 
    FLUSH PRIVILEGES;") 

此腳本連接到Server B並使用一個MySQL管理員帳戶。 這就創建了用戶和db在Server B就好。執行後, 我關閉了當前的管理員連接,並以新創建的用戶的身份打開一個新連接以創建一對錶。 這是我收到以下錯誤Fatal error: Uncaught exception 'Exception' with message 'SQLSTATE[28000] [1045] Access denied for user.......;

現在,當我登錄到我的主機帳戶並選擇「允許遠程連接」時,我可以從服務器A以新用戶身份運行查詢。我的批准許可似乎出了問題。正如你所看到的,我使用通配符%來允許從任何IP連接,所以我不知道聲明出錯的地方。如果需要,我可以提供更多信息。任何幫助很大,非常感謝。

+0

我不確定,但'@ localhost'對我來說看起來很可疑。爲什麼要運行'CREATE USER'呢? 'GRANT'已經創建了它 – 2013-05-14 06:00:12

回答

0

打開了所有我所要做的就是與

"'@'%' IDENTIFIED BY '"是沒有必要的「密碼」代替"'@'%' IDENTIFIED BY PASSWORD '"。我刪除它後,我可以遠程連接。