Подтвердить что ты не робот

Сброс пароля root MySQL, когда текущий пароль неизвестен

Я унаследовал сервер, на котором установлена ​​mysql. У меня нет пароля mysql для любого пользователя, даже не root (хотя у меня есть пароль root linux). Кроме того, я знаю только одну учетную запись пользователя, которая поддерживает root, и у нее нет привилегий для выполнения каких-либо действий, даже SELECT.

Я попытался остановить mysql servicw, перезапустив его с помощью таблиц привилегий пропуска и просто войти в систему без пароля:

service mysqld stop
service mysqld start --skip-grant-tables &
mysql -u root

Но получите следующую ошибку:

Access denied for user 'root'@'localhost' (using password: NO)

Затем я попытался сбросить пароль:

mysqladmin -u root password 'newpw'

Но это также дает ошибку отказа в доступе.

Я также пробовал войти в систему как другой пользователь (без pw) и выполнил следующую команду:

UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';

и получил эту ошибку:

ERROR 1142 (42000): UPDATE command denied to user ''@'localhost' for table 'user'

Я также попытался удалить mysql и переустановить, но я получаю те же ошибки.

Любые предложения?

4b9b3361

Ответ 1

Два варианта:

Если вы хотите использовать -skip-grant-tables, вам может понадобиться запустить mysqld напрямую, поскольку параметры не обязательно передаются через init script.

В противном случае попробуйте эти инструкции из руководства.

Ответ 2

попробуйте sudo dpkg-reconfigure mysql-server-5.5, и вам будет предложено ввести новый пароль root.

Замените 5.5 вашей текущей версией mysql-сервера

Ответ 3

Вам нужно убедиться, что вы используете команду root, используя команду sudo.

Я обнаружил, что эта для сброса пароля mysql хорошо работает.

Следуя этой процедуре, вы отключите контроль доступа на сервере MySQL. Все подключения будут иметь корневой доступ. Хорошо отключать ваш сервер от сети или, по крайней мере, отключать удаленный доступ.

В reset ваш пароль mysqld просто следуйте этим инструкциям:

Stop the mysql demon process using this command :

       sudo /etc/init.d/mysql stop

Start the mysqld demon process using the --skip-grant-tables option with this command

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

Поскольку вы не проверяете пользовательские привилегии на этом этапе, безопаснее отключать сетевое взаимодействие. В Dapper/usr/bin/mysqld... не работает. Однако mysqld -skip-grant-tables сделали.

start the mysql client process using this command

       mysql -u root

from the mysql prompt execute this command to be able to change any password

       FLUSH PRIVILEGES;

Then reset/update your password

       SET PASSWORD FOR [email protected]'localhost' = PASSWORD('password');

If you have a mysql root account that can connect from everywhere, you should also do:

       UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';

Alternate Method:

       USE mysql
       UPDATE user SET Password = PASSWORD('newpwd')
       WHERE Host = 'localhost' AND User = 'root';

And if you have a root account that can access from everywhere:

       USE mysql
       UPDATE user SET Password = PASSWORD('newpwd')
       WHERE Host = '%' AND User = 'root';

Для любого метода один раз получил сообщение об успешном запросе (затронуты одна или несколько строк), привилегии flush:

ПРИВИЛЕГИИ FLUSH;

Затем остановите процесс mysqld и перезапустите его классическим способом:

sudo/etc/init.d/mysql stop

sudo/etc/init.d/mysql start

Ответ 4

`UPDATE mysql.user SET Password = PASSWORD ('MyNewPass') WHERE User = 'root'; ПРИВИЛЕГИИ FLUSH;

Записывайте инструкции UPDATE и FLUSH в одну строку. Оператор UPDATE сбрасывает пароль для всех корневых учетных записей, а оператор FLUSH сообщает серверу перезагрузить таблицы предоставления в память, чтобы он замечал изменение пароля. `

Ответ 5

В моем случае это происходило так же, но я ошибался при входе в приглашение mysql. Я делал mysql вместо mysql -u root -p

Ответ 6

Для mysql 5.7.16 на Ubuntu 16.04 это сработало:

  • логин без пароля:

    sudo mysqld_safe --skip-grant-tables --skip-networking &

  • сменить пароль:

    УСТАНОВИТЬ ПАРОЛЬ ДЛЯ 'root' @'localhost' = 'mypass';

Найденное решение на Справочное руководство по MySQL 5.7