Mysql: comando GRANT negado para o usuário 'root'@'dhcp-x-x-x-x.company' para a tabela 'testtable'

1

Eu sou novo para as tarefas administrativas do MySQL e estou tentando conceder permissões SELECT para um número limitado de colunas em uma tabela, sem sucesso, usando o MySQL Workbench 5.2.44:

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

Eu recebo o seguinte erro:

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

Eu já passei por postagens parecidas aqui e fiz os seguintes testes:

1) SHOW GRANTS FOR '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) SHOW GRANTS FOR 'root' @ '%';

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

3) SHOW GRANTS FOR CURRENT_USER ();

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

4) SELECIONE USUÁRIO (), CURRENT_USER ();

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

5) selecione host, usuário, select_priv, Create_user_priv a partir do mysql.user;

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

Estou recebendo o erro 'GRANT command denied' porque mesmo sendo root, CURRENT_USER () é identificado como 'root' @ '%' e GRANT ALL PRIVILEGES 'WITH GRANT OPTION' é dado somente a 'root' @ 'localhost' e, portanto, 'root' @ '%' não está avaliando o equivalente a 'root' @ 'localhost'? (Eu estou conectando ao hostmachine via MySQL WorkBench)

Existe alguma maneira de resolver este problema sem alterar a senha do root usando a opção --skip-grant-tables?

    
por user3439138 22.05.2014 / 23:05

2 respostas

2

Am I getting the 'GRANT command denied' error because even though I am root, CURRENT_USER() is identified as 'root'@'%' and GRANT ALL PRIVILEGES 'WITH GRANT OPTION' is only given to 'root'@'localhost' and therefore, 'root'@'%' is not evaluating to be the equivalent of 'root'@'localhost'?

Sim, você está correto. Snippet da documentação do mysql

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

The WITH GRANT OPTION clause gives the user the ability to give to other users any privileges the user has at the specified privilege level. You should be careful to whom you give the GRANT OPTION privilege because two users with different privileges may be able to combine privileges!

A solução seria conectar mysql do localhost com root user e alterar o privilégio de root@% .

    
por 22.05.2014 / 23:48
2

Primeiro, você precisará se conectar ao mysql localmente, conforme indicado. Tente fazer o GRANT para 'root' @ '%' como sugerido, byut se o tempo é do essense, uma maneira rápida e suja de conseguir isso (sim, infelizmente, eu tive que fazer isso) é especificamente conceder privilégios para o nome totalmente qualificado 'root' @ 'dhcp-123.123.123.123.companyname.com'.

    
por 23.05.2014 / 19:20

Tags