Сброс пароля root MySQL на Ubuntu 18.04 при сбое подключения

Наша задача

Нашей задачей является сброс потерянного основного root пароля MySQL на Ubuntu 18.04

OS и требования

  • Операционная система: - Ubuntu 18.04 Bionic Beaver
  • Программное обеспечение: - mysql Ver 14.14 или новее

Немного предисловии

При установке LAMP сервера на Ubuntu 18.04 я с настройками рута в попыхах неправильно настроил. В результате чего у меня вообще перестал работать MySQL. И старые инструкции приводили только к сбоям. Вконце концов я наше на англоязычном рунете работающую инструкцию. И решил вам написать русский вариант.

Инструкция

Начнем с остановки текущей базы данных MySQL:

$ sudo 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

Результат

[1]+  Running     sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &

На этом этапе мы получили доступ к базе данных MySQL без пароля:

$ mysql -u root
Welcome to the MySQL monitor.
Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.20-1ubuntu1 (Ubuntu)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its affiliates.
Other names may be trademarks of their respective owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Сбросим привелегии MySQL:

mysql> FLUSH PRIVILEGES;

Затем сбросим пароль root. Следующие команды сбрасывают пароль администратора MySQL 

mysql> USE mysql;

mysql> UPDATE user SET authentication_string=PASSWORD("ваш пароль") WHERE User='root';

mysql> UPDATE user SET plugin="mysql_native_password" WHERE User='root';

Выходим из сеанса MySQL:

mysql> quit

Завершаем текущий mysqld процесс:

$ sudo pkill mysqld

И наконец, запускаем базу данных MYSQL:

$ sudo service mysql start

Если все хорошо до вы должны войти с помощью нового пароля

$ mysql -u root --password=<ваш пароль>
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.20-1ubuntu1 (Ubuntu)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>