繁体   English   中英

当我尝试通过PHP创建数据库并设置用户权限时,MySQL语法错误

[英]Error in MySQL syntax when i try to create database and set user privileges through PHP

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

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

你能告诉我哪里错了吗? 提前致谢!

您需要以分号结束每个SQL语句; ,在第一次GRANT之后丢失。 第二个GRANT使用database."并且应该是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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM