2016-04-19 2 views
1

Я пытаюсь предоставить все привилегии определенному IP-адресу, но когда я пытаюсь получить список привилегированных IP-адресов, он всегда показывает только localhost, я следовал инструкциям в это question, но он не вносит никаких изменений, что я делаю неправильно?Грант ALL на базе данных, он не предоставляет никаких прав для моего конкретного IP-адреса

MariaDB [(none)]> GRANT ALL ON database.* TO 'root'@'192.168.3.1' WITH GRANT OPTION; 
Query OK, 0 rows affected (0.00 sec) 

MariaDB [(none)]> FLUSH PRIVILEGES; 
Query OK, 0 rows affected (0.00 sec) 

MariaDB [(none)]> show grants; 
+---------------------------------------------------------------------+ 
| Grants for [email protected]           | 
+---------------------------------------------------------------------+ 
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION | 
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION  | 
+---------------------------------------------------------------------+ 
2 rows in set (0.00 sec) 

mysql> show slave status; 
ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER,REPLICATION CLIENT privilege(s) for this operation 
mysql> show grants; 
+------------------------------------------------------------------+ 
| Grants for [email protected]          | 
+------------------------------------------------------------------+ 
| GRANT USAGE ON *.* TO 'root'@'192.168.1.5'      | 
| GRANT ALL PRIVILEGES ON `western_star`.* TO 'root'@'192.168.1.5' | 
+------------------------------------------------------------------+ 
2 rows in set (0.00 sec) 

Примечание:

я все еще получаю отказано, даже если я вошел с моим пользователем удаленно и у меня есть права доступа.

mysql> show slave status; 
ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER,REPLICATION CLIENT privilege(s) for this operation 
mysql> show grants; 
+------------------------------------------------------------------+ 
| Grants for [email protected]          | 
+------------------------------------------------------------------+ 
| GRANT USAGE ON *.* TO 'root'@'192.168.1.5'      | 
| GRANT ALL PRIVILEGES ON `western_star`.* TO 'root'@'192.168.1.5' | 
+------------------------------------------------------------------+ 
2 rows in set (0.00 sec) 
+1

ПРИМЕЧАНИЕ. Заявление FLUSH PRIVILEGES является избыточным. Эта операция нужна только (я считаю), когда мы вносим изменения DML в таблицы привилегий в базе данных mysql. Операции GRANT и REVOKE автоматически выполняют необходимые операции, чтобы сделать изменения привилегий эффективными. – spencer7593

ответ

4

Попробуйте запустить это заявление:

SHOW GRANTS FOR 'root'@'192.168.3.1' ; 

И сравните с возвращением из этого:

SHOW GRANTS FOR 'root'@'localhost' ; 

SHOW GRANTS показывает гранты для текущего пользователя.

Обратите внимание, что «root @ localhost» является не тем же пользователем, что и «[email protected]». MySQL идентифицирует пользователя как с хостом пользователя, так и с хостом. (Это два различных пользователей.)


Followup

СУПЕР и тиражирование привилегия КЛИЕНТА являются глобальными привилегиями, а не привилегии базы данных. Синтаксис для предоставления этих привилегий - ON *.*. Например:

GRANT REPLICATION CLIENT ON *.* TO 'root'@'192.168.1.5' ; 
+0

Я думаю, что путаница заключалась в том, что я думал, что «шоу-гранты» перечислит все гранты для всех пользователей. – VaTo

+0

Пожалуйста, проверьте мой отредактированный вопрос. – VaTo