Потерял все привилегии в MYSQL - PullRequest
5 голосов
/ 24 января 2012

Я видел этот же вопрос во многих формах на этом сайте и на многих других форумах.Тем не менее, я попробовал все решения и все еще имею тот же результат.Я почти уверен, что раньше у меня был root-доступ на этом сервере MySQL, и я даже мог использовать инструмент phpMyAdmin для создания баз данных среди других запросов.Теперь, когда я захожу в phpMyAdmin и нажимаю на базы данных, меня приветствуют:

enter image description here

Если я использую инструмент командной строки, я могу войти, используя:

mysql -u root -p

Мне предлагают ввести пароль, и я делаю это.Когда я пытаюсь сделать что-то еще, скажите:

mysql> SELECT user, host FROM mysql.user;

I get the following:
ERROR 1142 (42000): SELECT command denied to user 'root'@'localhost' for table 'user'

Я также следовал этой статье (http://benrobb.com/2007/01/15/howto-remote-root-access-to-mysql/), так как да, я ssh'ing к этому серверу MySQL с удаленной машины.Опять же, когда я пытаюсь:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

В различных формах меня приветствует неприятный:

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

Даже если я ввожу тот же пароль, который использовал для входа в систему!Я также хочу упомянуть, что вчера я обновил свои груши, и мне интересно, не было ли это причиной этого беспорядка ...

Если кто-нибудь может мне помочь, я действительно буду признателен.Спасибо за ваше время и внимание.

Elshae

**** Обновление **** При попытке устранения неполадок и запуска mysqld я не могу запустить резервное копирование сервера!Каждый раз, когда я бегу:

/etc/init.d/mysql start
Starting MySQL database server: mysqld . . . . . . . . . . . . . . failed!

Что мне делать?

Ответы [ 4 ]

6 голосов
/ 02 апреля 2013

Остановите службу MySQL (в стиле UNIX):

/etc/init.d/mysqld stop 

Запустите MySQL с привилегиями:

/usr/bin/mysqld_safe  --skip-grant-tables

Подключитесь к базе данных mysql с помощью пользователя root

/usr/bin/mysql -uroot -p mysql

Обновление привилегий суперпользователя

update mysql.user
set Select_priv='Y',
    Insert_priv='Y',
    Update_priv='Y',
    Delete_priv='Y',
    Create_priv='Y',
    Drop_priv='Y',
    Reload_priv='Y',
    Shutdown_priv='Y',
    Process_priv='Y',
    File_priv='Y',
    Grant_priv='Y',
    References_priv='Y',
    Index_priv='Y',
    Alter_priv='Y',
    Show_db_priv='Y',
    Super_priv='Y',
    Create_tmp_table_priv='Y',
    Lock_tables_priv='Y',
    Execute_priv='Y',
    Repl_slave_priv='Y',
    Repl_client_priv='Y',
    Create_view_priv='Y',
    Show_view_priv='Y',
    Create_routine_priv='Y',
    Alter_routine_priv='Y',
    Create_user_priv='Y',
    Event_priv='Y',
    Trigger_priv='Y' 
where User='root';

После этого вам просто нужно остановить службу MySQL и начать заново.

2 голосов
/ 24 января 2012

Я ценю все отзывы, я наконец получил их по большей части.Для борьбы с проблемой

/etc/init.d/mysql start
Starting MySQL database server: mysqld . . . . . . . . . . . . . . failed!

я сделал:

ps aux | grep mysql

, что дало мне:

root     15265  0.0  0.1   3896  1284 pts/10   S    12:41   0:00 /bin/sh /usr/bin/mysqld_safe
mysql    15302  1.6  2.8 132532 29600 pts/10   Sl   12:41   0:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --port=3306 --socket=/var/run/mysqld/mysqld.sock
root     15303  0.0  0.0   3008   608 pts/10   S    12:41   0:00 logger -p daemon.err -t mysqld_safe -i -t mysqld
root     16160  0.0  0.0   3120   708 pts/10   R+   12:42   0:00 grep mysql

, тогда я сделал:

kill -9 15265
kill -9 15302 

После этого я смог запустить MySQL с:

/etc/init.d/mysql start

Оттуда я нашел эту статью: https://help.ubuntu.com/community/MysqlPasswordReset и волшебство для меня было:

/usr/sbin/mysqld --skip-grant-tables --skip-networking &

Я смог подписаться на поток и также сделал:

GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY 'yournewrootpassword' WITH GRANT OPTION;

Единственное, что немного странно, это то, что корень все еще не имеет права создавать базы данных из phpMyAdmin среди других привилегий, которые rootнеобходимо.Тем не менее, я могу создавать базы данных из командной строки, и сейчас я могу жить с этим!

Еще раз спасибо всем за ваше время и помощь!

1 голос
/ 24 января 2012

Команда GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION; будет работать ТОЛЬКО если вы вошли в систему как пользователь, обладающий всеми правами ...

Поскольку у вас нет прав на GRANT, в приведенном выше случае заявление не будет работать ... Пожалуйста, свяжитесь с администратором и получите ACCESS для подключения ...

0 голосов
/ 24 января 2012

Поскольку у вас есть локальный доступ к клиенту, вы можете попытаться сбросить пароль root с помощью mysqladmin:

> mysqladmin password yournewrootpassword

Если вы можете успешно войти в систему, может потребоваться снова предоставить root-доступ, прежде чем вы сможете получить доступ к любым базам данных:

GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY 'yournewrootpassword' WITH GRANT OPTION;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...