Чтобы изменить пароль root пользователя MySQL нужно подключение к серверу по SSH.

Подключаемся к MySQL как пользователь root при помощи команды:

mysql –u root –p  

Нажимаем Enter, указываем пароль и снова нажимаем Enter;

Выполним следующие команды:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');  
quit  

После этого пароль будет изменён на newpass.

Данный способ также подходит и для изменений паролей других MySQL пользователей. Для этого в вышеуказанной команде необходимо указать пользователя, для которого меняется пароль (например, вместо root@localhost — dovecot@localhost) и новый пароль.

Сброс root-пароля MySQL

Если mysql root-пароль был утерян, его можно сбросить следующим образом:

Подключаемся к VPS с правами root.

Останавливаем mysql-сервер.

На Ubuntu для остановки mysql-сервера используем команду:

service mysql stop  

Создадим каталог /var/run/mysqld который будет использоваться mysql для хранения и доступа к файлу сокета и назначим необходимые права:

sudo mkdir -p /var/run/mysqld  
sudo chown mysql:mysql /var/run/mysqld  

Запустим mysql со следующими параметрами:

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

Проверим, что процесс запущен:

jobs  

На этом этапе мы можем получить доступ к mysql без пароля.
Входим командой:

mysql -u root  

Затем сбросим пароль root следующей последовательностью запросов:

mysql> FLUSH PRIVILEGES;  
Query OK, 0 rows affected (0.00 sec)  

mysql> USE mysql;  
Database changed  

mysql> UPDATE user SET authentication_string=PASSWORD("новый_root_пароль") WHERE User='root';  
Query OK, 1 row affected, 1 warning (0.03 sec)  
Rows matched: 1  Changed: 1  Warnings: 1  

mysql> UPDATE user SET plugin="mysql_native_password" WHERE User='root';  
Query OK, 1 row affected (0.00 sec)  
Rows matched: 1  Changed: 1  Warnings: 0  

mysql> quit  

Новый_root_пароль, мы установили "1111".

Завершим процесс mysqld:

sudo pkill mysqld  

Запустим службу mysql:

sudo service mysql start  

Теперь мы можем выполнить вход, используя установленный пароль:

mysql -u root --password=1111  

На Debian для остановки mysql-сервера используем команду:

service mysql stop  

Запускаем mysql с ключем --skip-grant-tables в фоновом режиме :

/usr/bin/mysqld_safe --skip-grant-tables --user=root &

Заходим в mysql от пользователя root (пароль запрашиваться не будет):

mysql -u root  

Меняем пароль и применяем привилегии:

mysql> UPDATE mysql.user SET Password=PASSWORD('новый_root_пароль') WHERE User='root';  
mysql> FLUSH PRIVILEGES;  
mysql> exit  

На CentOS 7 для остановки mysql-сервера используем команду:

sudo /etc/init.d/mysqld stop  

Далее выполняем команду:

sudo mysqld_safe --skip-grant-tables &  

Символ & в конце команды означает, что она перейдёт в фоновый режим и мы получим терминал обратно.

Подключаемся к mysql с правами root. Поскольку mysql запущен в безопасном режиме, пароль для входа не требуется:

mysql -u root  

Выбираем базу данных mysql:

use mysql;  

Устанавливаем новый mysql root-пароль командой:

update user set password=PASSWORD("новый_root_пароль") where User='root';  

Перезагружаем привилегии:

flush privileges;  

Отключаемся от mysql:

quit;  

Останавливаем и затем вновь запускаем сервер MySQL командами:
Debian/Ubuntu:

service mysql stop  
service mysql start  

CentOS 7

/etc/init.d/mysql stop
/etc/init.d/mysql start

Пробуем подключиться к mysql с новым установленным паролем.

Обновлено 13 февраля 2020 г.