Задать вопрос

MySQL: пользователь root без GRANT, что делать?

Здравствуйте.

Получилось так, что я накосячил при переносе базы с одного сервера на другой, и перенёс её вместе с базой mysql.

После чего я обнаружил, что я не могу даже рестартануть mysql, т.к. у пользователя debian-sys-maint нет на это прав, но это не суть, как эту проблему решить потом, я уже нашёл.


Дело в том, что пользователь root у меня почему-то без GRANT. Т.е. он может делать всё, но не может создать например нового юзера.
mysql -uroot -p
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 900
Server version: 5.5.28-1~dotdeb.0 (Debian)

GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '...' WITH GRANT OPTION;

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)



Вот и всё. Получается, что у моего root-пользователя нет прав на создание пользователей и назначение прав.

Помогите пожалуйста наделить рута правами)

Заранее спасибо!
  • Вопрос задан
  • 17160 просмотров
Подписаться 8 Оценить 1 комментарий
Решения вопроса 1
gigigi
@gigigi Автор вопроса
В общем решение нашёл сам)

На всякий случай, вдруг кому пригодится, последовательность действий:
1. Делаем DROP DATABASE `mysql`; тем самым убив всех юзеров и все права. Можно наверное и без этого, но второй шаг у меня с уже готовой таблицей не заработал (наверное из-за разных версий mysql до и после переноса БД mysql).
2. Запускаем из консоли mysql_install_db который эту самую табличку создаёт.
3. Заходим mysql -u root и выполняем
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'new_pass' WITH GRANT OPTION;
FLUSH PRIVILEGES;

4. Рестартуем: service mysql restart (если не получается, то killall mysqld && service mysql start)
5. PROFIT!
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
JekaRu
@JekaRu
Попробуйте в табличке mysql.user вручную нужные права для root оставить.
Ответ написан
KEKSOV
@KEKSOV
Попробуйте mysql -u root -p -h <IP хоста> где IP это не 127.0.0.1
иногда root@localhost и root@* имеют разные права.

Как вариант — скопируйте базу mysql к себе (переименовав предварительно) и измените права у roota, а потом верните ее на место. Сервер в это время должен быть выключен.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы