2016-07-01 635 views
0

我有這個PHP函數:PHP PDO創建MySQL數據庫和用戶,並授予權限

function createDatabase($dbName,$dbPass) { 
     $host = 'localhost'; 
     $user = 'myuser'; 
     $user_password = 'mypass'; 
     $db = new PDO("mysql:host=$host", $user, $user_password); 
     $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     try { 
      doLog('Creating Database...'); 
      $count = $db->exec("CREATE DATABASE `$dbName`"); 
      if($count === false) { 
      doLog('Could not create database'); 
      return false; 
      } 
      doLog('Creating User...'); 
      $count = $db->exec("CREATE USER '$dbName'@'localhost' IDENTIFIED BY '$dbPass'"); 
      if($count === false) { 
      doLog('Could not create user'); 
      return false; 
      } 
      doLog('Granting User Privileges...'); 
      $count = $db->exec("GRANT ALL ON `$dbName`.* TO '$dbName'@'localhost'"); 
      if($count === false) { 
      doLog('Could not grant user privileges'); 
      return false; 
      } 
      doLog('Flushing Privileges...'); 
      $count = $db->exec("FLUSH PRIVILEGES"); 
      if($count === false) { 
      doLog('Could not flush privileges'); 
      return false; 
      } 

     } catch (PDOException $e) { 
      doLog("DB ERROR: ". $e->getMessage()); 
      return false; 
     } 
     return true; 
    } 

我的工作在這裏下車了另一個問題: Can I create a database using PDO in PHP

第三查詢過程中,該代碼不斷得到掛斷了電話授予此錯誤特權:

SQLSTATE[42000]: Syntax error or access violation: 1044 Access denied for user

有問題的MySQL用戶擁有全局權限,包括授予權限。還有什麼我可以錯過?

+0

這是完整的錯誤信息? '拒絕用戶訪問'之後的任何其他內容? –

+0

是的,它列出了用戶並說出了新數據庫的名稱 – Helto

+0

用戶名是什麼? –

回答

0

The MySQL user in question has global permissions, including grant. What else could I be missing?

注意到但常識。

如果你的數據庫說用戶沒有權限那麼它是這樣的。

這是錯誤消息的點:喲必須閱讀並修復它們。就如此容易。