无法在MySQL 5.6中创建用户

时间:2015-01-28 16:16:34

标签: mysql admin

我想创建一个用户,该用户将是我的classicmodels数据库中的管理员。我希望我的管理员用户可以创建其他用户帐户并仅将它们分配给classicmodels数据库。我已经完成了以下步骤:

  1. 以root身份登录
  2. 创建由'qwerty'标识的用户admin @'%';
  3. 授予classicmodels的所有权限。*使用grant授予admin @'%' 选项;
  4. 刷新权限;
  5. admin @'%'的show grants结果:
  6. 通过密码识别*.*给'管理员'@'%'授予使用权 授予经典模特的所有特权。*''admin'@'%'WITH GRANT OPTION

    现在以管理员身份登录:

    1. 使用classicmodels;
    2. 创建由'qwerty'标识的用户user1 @'%';
      ERROR 1227(42000):拒绝访问;您需要(至少一个)此操作的CREATE USER权限
    3. 我没有看到,我在哪里做错了。当我以root身份登录时,我已在步骤3中为管理员授予了所有权限。提前谢谢。

1 个答案:

答案 0 :(得分:2)

您已为特定而非全局的数据库(架构)授予了所有权限。

运行以下查询并检查结果。

SELECT * FROM `mysql`.`db` WHERE `User` = 'admin' AND `Host` = '%';
SELECT * FROM `mysql`.`user` WHERE `User` = 'admin' AND `Host` = '%';
  

13.7.1.2 CREATE USER Syntax

     

...

     

...要使用此语句,您必须拥有全局CREATE USER   特权或mysql数据库的INSERT特权。 ...

     

...

<强>更新

  

13.7.1.4 GRANT Syntax

     

...

     

CREATE TABLESPACE,CREATE USER,FILE,PROCESS,RELOAD,REPLICATION   客户,复制从,显示数据库,关闭和超级   特权是管理性的,只能在全球范围内授予。

     

...

您需要执行以下操作:

  1. 以root身份登录
  2. GRANT CREATE USER ON *.* TO 'admin'@'%';
  3. FLUSH PRIVILEGES;
  4. mysql> SHOW GRANTS FOR 'admin'@'%';
    +------------------------------------------------------------------------------------------------------------+
    | Grants for admin@%                                                                                         |
    +------------------------------------------------------------------------------------------------------------+
    | GRANT CREATE USER ON *.* TO 'admin'@'%' IDENTIFIED BY PASSWORD '*AA1420F182E88B9E5F874F6FBE7459291E8F4601' |
    | GRANT ALL PRIVILEGES ON `classicmodels`.* TO 'admin'@'%' WITH GRANT OPTION                                 |
    +------------------------------------------------------------------------------------------------------------+
    2 rows in set (0,00 sec)