繁体   English   中英

MySQL授予特权访问拒绝

[英]MySQL grant privileges access denial

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

我必须以编程方式创建数据库; 因此,我有一个用户project ,该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用户'project'@'localhost'对数据库'project_sck6jdyb'的访问被拒绝正在执行的SQL是:在project_sck6jdyb上授予GRANT ALL PRIVILEGESES。*到'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 *.*到GRANT OPTION通过密码'* [secret]'标识的'project'@'localhost'

将所有特权授予project 。*至'project'@'localhost'

将所有特权授予project\\_% 。*到GRANT OPTION的'project'@'localhost'

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

尝试仅授予您所拥有的特权。 我希望这会起作用。

暂无
暂无

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

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