2014-10-31 62 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