0

这是我第一次在这个论坛上提问。

我正在开发一个 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"; 

你能告诉我做错了什么吗?提前致谢!

4

1 回答 1

1

您需要以分号结束您的每条 SQL 语句;,它在第一个之后没有GRANT。第二种GRANT用法database."and should be 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;
于 2013-11-09T17:13:55.303 回答