首页 文章

MySQL授予权限拒绝访问权限

提问于
浏览
0

我有一个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 权限,检查了 mysql . userinformation_scheme ,我有可授予的权限和授予选项,但仍然会收到访问错误:

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

MySQL version is 5.6.21 ,在 XAMPP 下运行,Windows . 这是一个错误,还是我做错了什么?

更新: SHOW GRANTS for project@localhost;

GRANT INSERT,CREATE,DROP,RELOAD,INDEX,ALTER,SUPER,CREATE USER ON * . ''project'@'localhost'通过密码识别' [secret]'WITH GRANT OPTION授予所有项目特权 . * TO 'project'@'localhost'在项目上授予所有特权\ _% . *'''''''''''''''''''''''''''''''''''''''''''''''

1 回答

  • 0

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

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

相关问题