mysql -- Как сбросить (изменить) пароль root -- забыл пароль
Primary tabs
Forums:
В случае, если вы забыли пароль root для подключения к mysql, можно воспользоваться safe-режимом:
- Останавливаем mysqld:
sudo service mysql stop
- Проверяем, что нет запущенных процессов mysqld:
ps -eaf|grep mysqld
Если все нормально, то вывод команды должен состоять лишь из одной строки, примерно такого содержания:
root 24902 1530 0 11:41 pts/0 00:00:00 grep --color=auto mysqld
- Далее необходимо создать каталог /var/run/mysqld, чтобы избежать такой ошибки и сделать его владельцем пользователя mysql
- Запускаем MySQL в ручном режиме из консоли, пропуская проверку прав (опция --skip-grant-tables). А также отключаем доступ к серверу через TCP/IP (с помощью опции --skip-networking), чтобы злоумышленник не мог воспользоваться тем, что мы отключили проверку прав пользователей. При использовании данной опции, доступ к серверу становится возможным только через localhost:
sudo mysqld_safe --skip-grant-tables --skip-networking &
В случае успешного запуска, вывод в консоли должен быть примерно таким:
# sudo mysqld_safe --skip-grant-tables --skip-networking &
[1] 26152
2020-06-14T11:07:14.807620Z mysqld_safe Logging to syslog.
2020-06-14T11:07:14.815041Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2020-06-14T11:07:14.856418Z mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql - Подключаемся из консоли к серверу mysqld и выбираем базу данных mysql:
mysql -u root mysql
- Используем плагин mysql_native_password, иначе в некоторых случаях будем получать ошибку "ERROR 1524 (HY000): Plugin 'auth_socket' is not loaded", а нам это не нужно:
update user set plugin="mysql_native_password";
Вывод в результате выполнения данной команды должен быть примерно таким:
Query OK, 0 rows affected (0.00 sec)
Rows matched: 4 Changed: 0 Warnings: 0 - Перезагружаем привилегии:
flush privileges;
- Меняем пароль для нужного пользователя, в нашем случае это root:
- Для MySQL версий 5.7.6 и новее:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MY_PASSWORD';
- Для MySQL версий 5.7.5 и старее:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MY_PASSWORD');
MY_PASSWORD - это пароль, который вам необходимо поменять на свой собственный.
В результате выполнения данной команды, мы должны получить вот такой вывод в консоли:Query OK, 0 rows affected (0.01 sec)
В том случае, если указанные выше команды по какой то причине не сработали, вы можете воспользоваться следующим запросом:
UPDATE mysql.user SET authentication_string=PASSWORD('MY_PASSWORD'), plugin='mysql_native_password' WHERE User='root';
В результате выполнения данной команды, мы должны получить вот такой вывод в консоли:
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 1 - Для MySQL версий 5.7.6 и новее:
- После чего, вводим команду exit для отключения:
exit;
- Выключаем запущенный в ручном режиме Mysqld сервер:
sudo mysqladmin -S /var/run/mysqld/mysqld.sock shutdown
Если все пройдет успешно, то вывод должен быть примерно таким:
2020-06-14T11:30:03.404615Z mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
[1]+ Done sudo mysqld_safe --skip-grant-tables --skip-networkingЕсли же команда не сработала и вы получаете вот такую (или любую другую) ошибку:
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'То можно принудительно завершить процесс с помощью следующей команды:
sudo kill `cat /var/run/mysqld/mysqld.pid`
Если и это вызвало ошибку:
cat: /var/run/mysqld/mysqld.pid: Отказано в доступе
sudo chmod 755 /var/run/mysqld/mysqld.pid
- Проверяем, что нет запущенных процессов mysqld:
ps -eaf|grep mysqld
- Запускаем Mysql-server в нормальном режиме:
sudo service mysql start
- И пытаемся подключиться к нашему серверу с новым паролем, который мы установили.
Источник
- https://sysadmin.ru/articles/kak-izmenit-root-parol-v-mysql
- Log in to post comments
- 2358 reads