【问题标题】:Can't access to some database being root, after just creating that database仅在创建该数据库后,无法以 root 身份访问某些数据库
【发布时间】:2012-10-22 06:08:05
【问题描述】:

作为 root@localhost

mysql> CREATE USER 'aaa'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT USAGE ON * . * TO 'aaa'@'%' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE DATABASE IF NOT EXISTS `aaa` ;
Query OK, 1 row affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON `aaa` . * TO 'aaa'@'%';
ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'aaa'

这是怎么回事..为什么会出现这个错误?

mysql> show grants;
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost                                                                                                                                                                                                                                                                                                                                                                                        |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*B67132C4A56F2FFFE0AA531DECF0C98895F9CB9B' WITH GRANT OPTION |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

【问题讨论】:

    标签: mysql database root privileges grant


    【解决方案1】:

    我过去遇到过这种情况,我的解决方案是显式连接到 127.0.0.1 而不是 localhost 别名

    mysql -uroot -h127.0.0.1 
    

    希望对你有用!

    【讨论】:

    • 我注意到的一件事是,您正在执行 CREATE DATABASE IF EXISTS,您是否尝试过首先删除数据库以清除空气?
    【解决方案2】:

    权限不够。您正在尝试授予 ALL 权限。但是,用户 'root'@'localhost' 没有 ALL 权限。

    “SHOW GRANTS”命令已输出权限列表 - GRANT SELECT, INSERT,...

    但应该是这样的——GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost'...

    首先将所有权限授予root帐户,或者仅授予未授予的权限。

    【讨论】:

    【解决方案3】:

    在 5.7 中有点精度:

    mysql -uroot -h127.0.0.1  -p
    
    GRANT ALL PRIVILEGES ON *.* TO 'root';
    
    quit
    

    然后

    mysql -u root  -h mynode mydb -p
    

    工作正常

    【讨论】:

      猜你喜欢
      • 2017-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-12
      • 2013-06-22
      • 2018-06-16
      相关资源
      最近更新 更多