在尝试CREATE DATABASE之前检查用户权限

时间:2009-03-04 09:31:17

标签: php mysql

有些主机让您的脚本创建数据库,有些则不然,并要求您使用其控制面板。如何检查数据库是否允许我使用给定的用户/密码运行此查询而不实际创建任何数据库?

因为如果我没有足够的权限,我只想完全隐藏UI中的“创建数据库”按钮。

我正在使用PHP和MySQL。感谢。

3 个答案:

答案 0 :(得分:5)

您可以通过以下方式获得权利:

SHOW GRANTS FOR CURRENT_USER;

答案 1 :(得分:3)

正如Vartec所说,SHOW GRANTS FOR CURRENT_USER是要走的路。我只是添加了这个答案,以便在您没有完整权限时显示该语句的输出:

GRANT USAGE ON *.* TO 'myusername'@'%' IDENTIFIED BY PASSWORD '*8D4A4D198E31D6EA9D7997F7B29A2BCA254178B6'
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, CREATE ROUTINE ON `mydb1`.* TO 'myusername'@'%'
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, CREATE ROUTINE ON `mydb2`.* TO 'myusername'@'%'
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, CREATE ROUTINE ON `mydb3`.* TO 'myusername'@'%'

答案 2 :(得分:1)

只需创建一个测试脚本

<?php
mysql_connect(...);
$result = mysql_query('CREATE DATABASE testDB');
if (!$result)
{
    //Failed
}
else
{
    mysql_query('DROP DATABASE testDB');
}
mysql_close();
?>

您可以在IF中定义一个变量,然后将其写入配置文件。