我有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連接,所以我不知道聲明出錯的地方。如果需要,我可以提供更多信息。任何幫助很大,非常感謝。
我不確定,但'@ localhost'對我來說看起來很可疑。爲什麼要運行'CREATE USER'呢? 'GRANT'已經創建了它 – 2013-05-14 06:00:12