Установка, изменение и сброс пароля root в MySQL

Автор George, Апр. 18, 2023, 11:06

« назад - далее »

George

mysqladmin -команда, при помощи которой меняется пароль root в MySQL

Метод 1. Установка пароля root в первый раз.
Если вы никогда не устанавливали пароль root в MySQL, сервер не будет требовать пароля root для подключения к вашим базам данных. Чтобы впервые установить пароль MySQL используйте в консоли команду mysqladmin как показано далее:

Код: bash
mysqladmin -u root password newpass

где newpass будет пароль который вы устанавливаете.

Для изменения (обновления) пароля root воспользуйтесь следующей командой:

Код: bash
mysqladmin -u root -p oldpassword newpass

 
где oldpassword — ваш старый пароль, а newpassword соотвественно новый. Если же вы в ответ получили следующее сообщение:

mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: YES)'

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

Изменения пароля MySQL для других пользователей.
Для изменения пароля обычного пользователя введите следующую команду:

Код: bash
mysqladmin -u user-name -p oldpassword newpass

где user-name — имя пользователя для которого вы меняете пароль.

Метод 2 — Обновление или изменение пароля.
MySQL хранит имена пользователей и пароли в таблице пользователей внутри базы данных. Вы можете обновить пароль используя следующий метод:

1. Залогиньтесь в MySQL и введите следующую команду:

Код: bash
mysql -u root -p
2.  Начните работу с базой данных. В качестве приглашения для ввода команд вначале строки у вас должно быть mysql>

mysql> use mysql;

3. Смените пароль пользователя

mysql>
Код: bash
 update user set password=PASSWORD(«newpass») where User='ENTER-USER-NAME-HERE';

4. Перегрузите привелегии и отлогиньтесь

mysql>
Код: bash
flush privileges;
mysql>
Код: bash
 quit

Этот метод применим в случае использования на вашем сервере PHP и скриптов Perl.

Восстановление пароля root в MySQL.
Вы можете восстановить пароль от баз данных MySQL если повторите следующие 5 шагов:

Остановите демон MySQL.
Запустите демон MySQL (mysqld) с опцией —skip-grant-tables, т.к. в этом случае пароль не запрашивается.
Подключитесь к серверу MySQL c root-привелегиями
Введите новый пароль.
Выйдите и перегрузите демон MySQL.
Далее приводятся команды, которые необходимо использовать для каждого шага, при условии, что вы вошли в систему с root-привелегиями.

1. Останавливаем службу MySQL:

Код: bash
/etc/init.d/mysql stop
Stopping MySQL database server: mysqld.

2.  Запускаем службу с опцией —skip-grant-tables

Код: bash
mysqld_safe —skip-grant-tables &

Должен быть следующий вывод:

[1] 5988
Starting mysqld daemon with databases from /var/lib/mysql
mysqld_safe[6025]: started

3.   Подключаемся с серверу MySQL при помощи клиента mysql:

Код: bash
mysql -u root

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.1.15-Debian_1-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>

4. Вводим новый пароль для root:

mysql>
Код: bash
 use mysql;
mysql>
Код: bash
update user set password=PASSWORD(«NEW-ROOT-PASSWORD») where User='root';
mysql>
Код: bash
flush privileges;
mysql>
Код: bash
quit

5. Останавливаем сервер MySQL:

Код: bash
/etc/init.d/mysql stop

Stopping MySQL database server: mysqld
STOPPING server from pid file /var/run/mysqld/mysqld.pid
mysqld_safe[6186]: ended
[1]+  Done mysqld_safe —skip-grant-table

Запускаем MySQL-сервер и логинимся с новым паролем:

Код: bash
/etc/init.d/mysql start
Код: bash
mysql -u root -p
  •  

George

Может так случиться, что вы забудете или потеряете свой root пароль MySQL, но не стоит отчаиваться – его можно сбросить и восстановить доступ. Что нам нужно знать так это то, что пароль хранится в таблице пользователей. Это означает, что нам нужно найти способ обойти аутентификацию MySQL, чтобы мы могли обновить запись пароля.

К счастью, это легко сделать, и это руководство проведет вас через процесс восстановления или сброса пароля root в версии MySQL 8.0.

Согласно документации по MySQL, существует два способа сброса корневого пароля MySQL и в этой статье мы рассмотрим оба.

 Как сбросить root пароль на MySQL
Сброс MySQL root пароля с использованием –init-file
Один из способов сброса пароля root - создать локальный файл, а затем запустить службу MySQL, используя параметр --init-file, как показано ниже:

# vim /home/user/init-file.txt
Важно убедиться, что файл доступен для чтения пользователю mysql. В этот файл вставьте следующее и измените «new_password» на пароль, который вы хотите использовать:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
Теперь убедитесь, что служба MySQL остановлена. Вы можете сделать следующее:

# systemctl stop mysqld.service     # для дистрибутивов использующих systemd
# /etc/init.d/mysqld stop           # для дистрибутивов использующих init
Далее запустите следующее:

# mysqld --user=mysql --init-file=/home/user/init-file.txt --console
Это запустит службу MySQL и во время процесса выполнит созданный вами файл инициализации, и, следовательно, пароль для пользователя root будет обновлен. Обязательно удалите файл после сброса пароля.

После этого обязательно остановите сервер и запустите его как обычно.

# systemctl stop mysqld.service        # для дистрибутивов использующих system
# systemctl restart mysqld.service     # для дистрибутивов использующих systemd
# /etc/init.d/mysqld stop              # для дистрибутивов использующих init
# /etc/init.d/mysqld restart          # для дистрибутивов использующих init
Теперь вы должны иметь возможность подключиться к серверу MySQL от имени пользователя root, используя новый пароль.

# mysql -u root -p
Сброс MySQL root пароля с использованием –skip-grant-tables
Второй вариант - запустить службу MySQL с параметром --skip-grant-tables. Это менее безопасно, так как пока служба запускается таким образом, все пользователи могут подключаться без пароля.

Если сервер запущен --skip-grant-tables, опция для --skip-network активируется автоматически, поэтому удаленные подключения не будут доступны.

Сначала убедитесь, что служба MySQL остановлена.

# systemctl stop mysqld.service     # для дистрибутивов использующих systemd
# /etc/init.d/mysqld stop           # для дистрибутивов использующих init
Затем запустите службу с помощью следующей опции.

# mysqld --skip-grant-tables --user=mysql &
Теперь вы можете подключиться к серверу MySQL, просто используя:

# mysql
Поскольку управление учетными записями отключается при запуске службы с параметром --skip-grant-tables, нам придется перезагрузить гранты. Таким образом, мы сможем изменить пароль позже:

# FLUSH PRIVILEGES;
Теперь вы можете выполнить следующий запрос, чтобы обновить пароль. Обязательно замените «new_password» реальным паролем, который вы хотите использовать.

# ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_passowrd';
Теперь остановите сервер MySQL и запустите его как обычно.

# systemctl stop mysqld.service        # для дистрибутивов использующих system
# systemctl restart mysqld.service     # для дистрибутивов использующих systemd
# /etc/init.d/mysqld stop              # для дистрибутивов использующих init
# /etc/init.d/mysqld restart          # для дистрибутивов использующих init
Теперь вы сможете подключиться с новым паролем:

# mysql -u root –p
  •  

🡱 🡳

Отметьте интересные вам фрагменты текста и они станут доступны по уникальной ссылке в адресной строке браузера.