这是我第一次在这个论坛上提问。
我正在开发一个php项目,我必须通过php-创建一个数据库并插入一些空表。
这里的问题是,当我尝试向超级用户添加权限时,我总是收到有关语法的错误消息(出于某种原因,如果我不这样做,则会显示一条错误消息,指出我没有权限访问数据库)。
以下是创建数据库和分配权限的代码:
$sql = "CREATE DATABASE IF NOT EXISTS `database` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci; ";
$sql .= "GRANT SELECT database.* TO 'superuser'@'localhost' ";
$sql .= "GRANT ALL ON database." TO 'superuser'@'localhost' IDENTIFIED BY 'password'; ";
$sql .= "FLUSH PRIVILEGES";
你能告诉我做错了什么吗?
提前谢谢!
答案 0 :(得分:0)
您需要使用分号;
结束每个SQL语句,在第一个GRANT
之后它会丢失。第二个GRANT
使用database."
并且应该是database.*
,也应该用反引号包围,因为“数据库”是一个保留字。也就是说,第一个GRANT
可以省略,因为它将包含在GRANT ALL
中。
$sql = "CREATE DATABASE IF NOT EXISTS `database` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci; ";
$sql .= "GRANT ALL ON `database`.* TO 'superuser'@'localhost' IDENTIFIED BY 'password'; ";
$sql .= "FLUSH PRIVILEGES;";
您还可以使用HEREDOC格式,以便于阅读
$sql = <<<SQL
CREATE DATABASE IF NOT EXISTS `database` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
GRANT ALL ON `database`.* TO 'superuser'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
SQL;