mysql - 向 MySQL 中的用户(远程 root 登录)授予权限

标签 mysql privileges sql-grant

我有这个:

mysql> SELECT CURRENT_USER();
+----------------+
| CURRENT_USER() |
+----------------+
| root@%         |
+----------------+
1 row in set (0.00 sec)

mysql> SELECT USER();
+------------------+
| USER()           |
+------------------+
| root@CQ2404LA-PC |
+------------------+
1 row in set (0.00 sec)

mysql>
mysql> GRANT ALL PRIVILEGES ON `Company`.* TO 'TheUser'@'%' IDENTIFIED BY PASS
WORD '*3814FFAFF303C7DBB5511684314B57577D754FF9';
ERROR 1044 (42000): Access denied for user 'root'@'%' to database 'Company'

拒绝用户 'root'@'%' 访问数据库 'Company'

现在回顾一下我拥有的 root 权限:

mysql> show grants for 'root'@'localhost';
+-------------------------------------------------------------------------------
---------------------------------------------------------+
| Grants for root@localhost
                                                         |
+-------------------------------------------------------------------------------
---------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*158
FB31F24156B52B2408974EF221C5100001544' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION
                                                         |
+-------------------------------------------------------------------------------
---------------------------------------------------------+
2 rows in set (0.00 sec)

之前,我进行了(本地)测试并且工作正常!

现在远程权限:

mysql> show grants for 'root'@'%';
+-------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
---------------------------------------------------------------------------+
| Grants for root@%



                                                                           |
+-------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
---------------------------------------------------------------------------+
| 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'@'%' IDENTIFIED
 BY PASSWORD '*158FB31F24156B52B2408974EF221C5100001544' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'%' WITH GRANT OPTION

不起作用!!!,我认为它必须起作用,因为:“ON *.* TO 'root'@'%'

寻找差异: 'root'@'%' 还没有 CREATE TABLESPACE、EVENT 和 TRIGGER

mysql> SELECT Host,     Event_priv,     Trigger_priv,   Create_tablespace_priv,
authentication_string   FROM mysql.user WHERE USER = "root";
+-----------+------------+--------------+------------------------+--------------
---------+
| Host      | Event_priv | Trigger_priv | Create_tablespace_priv | authenticatio
n_string |
+-----------+------------+--------------+------------------------+--------------
---------+
| localhost | Y          | Y            | Y                      |
         |
| %         | N          | N            | N                      | NULL
         |
+-----------+------------+--------------+------------------------+--------------
---------+
2 rows in set (0.01 sec)

mysql>

但是,我认为这不是问题的根源......

也许解决方案是,使用:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%',但我认为“所有权限”除了“一定数量的特权”。

最佳答案

To use GRANT, you must have the GRANT OPTION privilege, and you must have the privileges that you are granting.

http://dev.mysql.com/doc/refman/5.6/en/grant.html

如果您不持有“所有权限”,则无法授予“所有权限”。

修复 root@% 用户缺少的权限,问题就会得到解决,尽管您确实应该了解每个权限的作用,并且只将适当的权限授予每个用户。

关于mysql - 向 MySQL 中的用户(远程 root 登录)授予权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20436336/

相关文章:

sql - 如何在oracle中显示用户的所有权限?

ORACLE - 已授予创建过程但无法创建过程

Mysql 错误 1045 (28000) 在第 1 行 : Access denied for user 'abc' @'slave4' (using password: YES)

mysql - 无法从 root 用户更改其他用户的授予权限

php - mysql使用php限制记录查询

mysql - 如何根据 R Mysql DB 中的时间戳删除表?

sql-server - sql server 2012 - 无法对多语句表值函数的选择授予

PostgreSQL 8.4 将所有表的 DML 权限授予一个角色

php - 将方法的 "Count of Columns"链接到单个查询生成器

MySQL:如果并非所有行值都为 true,则排除子集