2014-10-31 63 views
0

我正在嘗試使用PHP刪除數據庫及其用戶。 儘管我能夠DROP數據庫,但是卻無法使用DROP。使用PHP刪除mysql用戶

下面的命令,我都試過了,

$cpanel_user = 'abc'; 
$cpanel_user_password = 'xyz'; 
$conn = mysql_connect($dbhost = 'localhost', $cpanel_user , $cpanel_user_password); 

$sql = 'DROP DATABASE dbname'; 
$retval = mysql_query($sql, $conn); // works perfect 

$drop_user = "DROP USER 'username'@'localhost'"; 
$retval = mysql_query($drop_user , $conn); 

不幸的是,顯示「拒絕訪問,你需要(至少一個)創建此操作用戶權限(S)」。

用於連接的用戶是cPanel用戶,因此必須具有完全權限。

我推薦其他線程,如MySQL: Check if the user exists and drop it但沒有運氣。

我錯過了什麼嗎?

+0

>這是用來連接的用戶的cPanel用戶因此必須是具有完全權限<**但是這個用戶不是特權** – donald123 2014-10-31 08:27:01

+0

你[不應該在新代碼中使用mysql_ *函數](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php)。他們不再被維護,並[正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。瞭解[預準備語句](http://en.wikipedia.org/wiki/Prepared_statement),並使用PDO或MySQLi。 – 2014-10-31 08:28:31

+0

@丹尼爾,是的,我知道它已被棄用,但這不是重點。我需要使用PHP來刪除用戶。 – asb 2014-10-31 09:31:11

回答

0

您應該將「CREATE USER」權限授予您用於連接數據庫的用戶。

當你的代碼,你應該在「根」用戶運行此聲明:

GRANT CREATE USER ON *.* TO abc; 
+0

如果「abc」是cPanel用戶而不是數據庫用戶,該命令是否可以工作? – asb 2014-10-31 09:33:59

+0

它給了我下面的錯誤,拒絕訪問用戶'abc'@'localhost'(使用密碼:是) – asb 2014-10-31 09:39:23

+0

1.'abc'必須是數據庫用戶; 2.此聲明必須由擁有'創建用戶'權限的數據庫用戶運行,實際上它意味着'root'用戶。 – Harley 2014-10-31 10:05:07