Mysql:GRANT命令拒绝用户'root'@'dhcp-xxxx。<company>'表'testtable'

我是MySQLpipe理职责的新手,并试图使用MySQL Workbench 5.2.44,将SELECT权限授予表中有限数量的列,但未成功:

GRANT SELECT (col1, col2, col3) ON mysqldb.testtable TO 'testuser'@'%' 

我得到以下错误:

 Error Code: 1142. GRANT command denied to user 'root'@'dhcp-xxxx.companyname.com' for table 'testtable' 

我在这里经历了类似的post,并做了以下testing:

1)显示“root”@“localhost”;

 GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD 'xxxxxxxx' WITH GRANT OPTION GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION 

2)显示“root”@'%';

 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD 'xxxxxxxxx' GRANT ALL PRIVILEGES ON `mysqldb`.* TO 'root'@'%' 

3)显示CURRENT_USER();

 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD 'xxxxxxxxx' GRANT ALL PRIVILEGES ON `mysqldb`.* TO 'root'@'%' 

4)SELECT USER(),CURRENT_USER();

 '[email protected]', 'root@%' 

5)从mysql.user中selecthost,user,select_priv,Create_user_priv;

 localhost root YY hostname.companyname.com root YY ::1 root YY % root YY 

我得到'GRANT命令被拒绝'的错误,因为即使我是root,CURRENT_USER()被标识为'root'@'%',并且授予所有特权'授予选项'只给予'root'@'localhost'因此,'root'@'%'不等于'root'@'localhost'? (我通过My​​SQL WorkBench连接到主机)

有没有办法解决这个问题,而无需使用–skip-grant-tables选项来更改root密码?

我得到'GRANT命令被拒绝'的错误,因为即使我是root,CURRENT_USER()被标识为'root'@'%',并且授予所有特权'授予选项'只给予'root'@'localhost'因此,'root'@'%'不等于'root'@'localhost'?

是的,你是对的。 从MySQL文档摘录

要使用GRANT,您必须具有GRANT OPTION权限,并且您必须拥有您授予的权限。

WITH GRANT OPTION子句给予用户在给定权限级别给予其他用户任何权限的能力。 您应该谨慎向谁授予GRANT OPTION权限,因为具有不同权限的两个用户可能能够组合权限!

解决办法是将root用户从本地主机连接到mysql ,并更改root@%的权限。

首先,你需要在本地连接到mysql,如上所述。 尝试按照build议做'root'@'%'的授权,如果时间是本质的,一个快速的肮脏的方式来完成这个(是的,可悲的是,我必须这样做)是专门授予完全限定名“root'@dhcp-123.123.123.123.companyname.com”。