MySQL授予权限拒绝访问权限

时间:2015-12-10 12:55:21

标签: php mysql yii2 yii2-user-roles

我有一个Yii2项目,它运行一些数据库。它有一个基本的数据库连接,用于保存用户身份验证数据,第二个连接点指向为每个用户自动创建的数据库。

我必须以编程方式创建数据库;所以,我有一个用户project,它具有全局授权权限和project\_%上的通配符。*。这就是我的所作所为:

    $queries = [
        "CREATE DATABASE ".$dbname,
        "FLUSH PRIVILEGES",
        "CREATE USER '{$dbuser}'@'localhost' IDENTIFIED BY '{$dbpass}'",
        "GRANT ALL PRIVILEGES ON {$dbname}.* TO '{$dbuser}'@'localhost'"
    ];

    foreach($queries as $q) $application->db->createCommand($q)->execute();

$dbname is 'project_'.randomString(8).

我仔细检查了所有project权限,检查了mysqluserinformation_scheme,我有可授予的权限和授予选项,但仍然会收到访问错误:

  

SQLSTATE [42000]:语法错误或访问冲突:1044用户'项目' @' localhost'到数据库' project_sck6jdyb'           正在执行的SQL是:在project_sck6jdyb上授予所有特权。* TO' pu_sck6jDyB' @' localhost'。

MySQL version is 5.6.21,Windows下运行的

XAMPP。这是一个错误,还是我做错了什么?

更新:SHOW GRANTS for project@localhost;

  

GRANT INSERT,CREATE,DROP,RELOAD,INDEX,ALTER,SUPER,在*.*创建用户' project' @' localhost'通过密码识别' * [秘密]' WITH GRANT OPTION

     

project上授予所有特权。*到'项目' @' localhost'

     

project\_%上授予所有特权。*项目' @' localhost' WITH GRANT OPTION

1 个答案:

答案 0 :(得分:0)

要授予权限,您必须具有GRANT_OPTION权限,并且还必须具有要授予的权限。在您的帖子中,您拥有以下权限:INSERT, CREATE, DROP, RELOAD, INDEX, ALTER, SUPER, CREATE USER

尝试仅授予您拥有的权限。我希望这会奏效。