2013-11-12 3 views
1

ПОСЛЕ update user set host='%' where user='root, я потерял некоторые привилегии от моего пользователя root MySQL. Поэтому я остановил сервер и начал его с --skip-грантов столыПосле включения удаленного доступа ROOT потерял привилегии и предоставил привилегии ROOT не работает

msqld --skip-grant-tables

и я попытался

mysql>update mysql.user set grant_priv = 'Y' where user = 'root'; 
Query OK, 0 rows affected (0.00 sec) 
mysql>FLUSH PRIVILEGES; 
Query OK, 0 rows affected (0.00 sec) 

Это не работает для меня. Когда я вхожу в систему под именем root, я до сих пор не вижу базу данных MYSQL.

mysql> show databases; 
+--------------------+ 
| Database   | 
+--------------------+ 
| information_schema | 
| test    | 
+--------------------+ 
2 rows in set (0.00 sec) 

Помогите. Я пробовал все решения, которые по-прежнему не могут восстановить привилегии для ROOT, всегда получал результат с результатом «0 строк».

ответ

2

Попробуйте

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; 
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION; 
FLUSH PRIVILEGES; 

Update

Выполнить эту команду, чтобы проверить текущие привилегии

SHOW GRANTS FOR CURRENT_USER; 

Это плохая практика для вставки/обновления/удаления из mysql.* таблиц и information_schema.* таблицы с использованием прямых SQL-операторов DML.

Update 2

Можете ли вы опубликовать результаты этой команды

SELECT (
     Host, 
     Grant_priv, 
     Super_priv 
    ) 
    FROM mysql.user 
    WHERE user = 'root'; 

Все из _priv столбцов должны иметь значение Y. И Host должен быть localhost.

+0

не работает, я получил 'ERROR 1045 (28000): доступ запрещен для пользователя '' @ 'localhost' (с использованием пароля: НЕТ)'. Я забыл упомянуть, что потерял привилегии ПОСЛЕ включения удаленного доступа @ Eternal-Learner – Evelyn1986

+0

Вы начали с '-skip-grant-tables' правильно? есть ли пользователь root? запустите 'select user, host из mysql.user, где user = 'root'', чтобы проверить. Если нет, вам нужно сначала создать пользователя – Litmus

+0

Да, есть пользователь root, а хост - Linux. Но я должен запустить сервер, как правило, для запуска 'SHOW GRANTS FOR CURRENT_USER; 'или любые предложения GRANT, иначе я бы получил' ERROR 1290 (HY000): сервер MySQL работает с опцией -skip-grant-tables, поэтому он не может выполнить этот оператор'. Во всяком случае, я вхожу в систему как ROOT и проверял привилегии «Гранты для @ localhost»: «GRANT USAGE ON». * TO '' @ 'localhost'' @ Eternal-Learner – Evelyn1986

Смежные вопросы