PHP PDO 创建MySQL数据库和用户并授予权限

标签 php mysql pdo

我有这个 php 函数:

function createDatabase($dbName,$dbPass) {
         $host = 'localhost';
         $user = 'myuser';
         $user_password = 'mypass';
         $db = new PDO("mysql:host=$host", $user, $user_password);
         $db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
         try {
           doLog('Creating Database...');
           $count = $db->exec("CREATE DATABASE `$dbName`");
           if($count === false) {
             doLog('Could not create database');
             return false;
           }
           doLog('Creating User...');
           $count = $db->exec("CREATE USER '$dbName'@'localhost' IDENTIFIED BY '$dbPass'");
           if($count === false) {
             doLog('Could not create user');
             return false;
           }
           doLog('Granting User Privileges...');
           $count = $db->exec("GRANT ALL ON `$dbName`.* TO '$dbName'@'localhost'");
           if($count === false) {
             doLog('Could not grant user privileges');
             return false;
           }
           doLog('Flushing Privileges...');
           $count = $db->exec("FLUSH PRIVILEGES");
           if($count === false) {
             doLog('Could not flush privileges');
             return false;
           }

         } catch (PDOException $e) {
           doLog("DB ERROR: ". $e->getMessage());
           return false;
         }
         return true;
    }

我正在这里解决另一个问题: Can I create a database using PDO in PHP

此代码在第三次查询期间一直挂起,并授予权限并出现以下错误:

SQLSTATE[42000]: Syntax error or access violation: 1044 Access denied for user

相关 MySQL 用户拥有全局权限,包括 grant。我还能错过什么?

最佳答案

The MySQL user in question has global permissions, including grant. What else could I be missing?

注意到但常识。

如果您的数据库显示用户没有权限那么事实就是如此。

这就是错误消息的要点:您必须阅读它们并修复它们。就这么简单。

关于PHP PDO 创建MySQL数据库和用户并授予权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38154173/

相关文章:

php - MySQL PHP 根据输出改变文本颜色

php - 使用 PHP 进行 Javascript 缩小和收缩变量

MySQL::在变量中运行 SQL 语句

php - 在 for 或 foreach 循环中执行此查询是不好的做法吗?

php - 是否可以且安全地将 MySQL 语法组合用于 INSERT INTO SET 和 ON DUPLICATE KEY UPDATE(具有相同的列集)?

PHP PDO 插入有缺失值的行

php - 对于 Controller 来说,Lumen 始终返回 200

php - 从页面 facebook api graph 获取信息

php - 为什么 MySQL 不返回最后插入的 id,它返回 0?

MYSQL Datetime 获取一个月前的日期提取