Как изменить пароль базы данных mysql ubuntu

Tag/tag.png

Content Cleanup Required
This article should be cleaned-up to follow the content standards in the Wiki Guide. More info…

Please do not make any edits to this article. Its contents are currently under review and being merged with the Ubuntu Server Guide. To find the Ubuntu Server Guide related to your specific version, please go to:

  • https://help.ubuntu.com/ and click on Ubuntu Server Guide

Why are you looking at this wiki page?

Are you looking at this page because you cannot access the mysql server installed on your pc/server when you were trying to see if it works well? Or do you receive error messages like the following? :

ERROR 1045: Access denied for user: 'root@localhost' (Using 
password: NO)

or

ERROR 1045: Access denied for user: 'root@localhost' (Using 
password: YES)

To resolve this problem ,a fast and always working way is the «Password Resetting» .

How can I reset my MySQL password?

IconsPage/warning.png Following this procedure, you will disable access control on the MySQL server. All connexions will have a root access. It is a good thing to unplug your server from the network or at least disable remote access.

To reset your mysqld password just follow these instructions :

  • 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 &

Because you are not checking user privs at this point, it’s safest to disable networking. In Dapper, /usr/bin/mysqld… did not work. However, mysqld —skip-grant-tables did.

  • 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 root@'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';

For either method, once have received a message indicating a successful query (one or more rows affected), flush privileges:

FLUSH PRIVILEGES;

Then stop the mysqld process and relaunch it with the classical way:

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

When you have completed all this steps ,you can easily access to your mysql server with the password you have set in the step before. An easy way to have a full control of your mysql server is phpmyadmin (www.phpmyadmin.net), software made in php that can give you a web interface that can be very usefull to people that havent got a lot of confidence with bash .To install phpmyadmin on you server you will need to have 4 things:

  • web server apache
  • php
  • mysql server/mysql client installed
  • php_mysql support for apache

All packages can be found browsing synaptic.


Another way, purge

I also had some problems with mysql just not accepting my password. I tried the other way as well and it just ended up being difficult. I had not been able to use mysql so it was empty anyway. If this is also your case you may opt for the PURGE way. This removes every file related to mysql. Depending on your installation the packages might be diffrent, mysql-server in 6.10 is called mysql-server-5.0 as an example.

IconsPage/warning.png USE THIS AS A LAST RESORT METHOD, YOU WILL LOSE ALL YOUR MYSQL DATA

sudo apt-get --purge remove mysql-server mysql-common mysql-client
sudo apt-get install mysql-server mysql-common mysql-client

In the next step be sure to chance the your-new-password with the password you want!

mysqladmin -u root password your-new-password
sudo /etc/init.d/mysql restart
mysql -u root -p

You should now be logged in as root. Make sure to notedown your password! Thanks to Illuvator for posting this method in the ubuntu forum.

The Easiest Method

sudo dpkg-reconfigure mysql-server-N.N

(where N.N is the MySql Server version)

Общая информация

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

Требования для сброса пароля

  • Локальный доступ или подключение по SSH к серверу на Ubuntu Linux.
  • Предустановленная система СУБД MySQL с отсутствующим доступом.

План сброса

  1. Определение версии MySQL.
  2. Остановка сервера.
  3. Отключение привилегий MySQL сервера.
  4. Изменение пароля Root пользователя MySQL.
  5. Восстановление привилегий и запуск MySQL.
  6. Проверка нового пароля.

Определение версии MySQL

Стоит сразу определить установленную версию MySQL, поскольку на разных версиях программы, команды, в дальнейшем, могут отличаться.

Для определения версии MySQL в терминале достаточно ввести команду:

mysql --version

Должен появится похожий вывод:

mysql  Ver 14.14 Distrib 5.7.22, for Linux (x86_64) using  EditLine wrapper

Строку можно сохранить в текстовом документе, чтобы не забыть версию MySQL.

Остановка сервера

Для отключения привилегий нужно остановить сервер MySQL, введя в терминале команду:

sudo systemctl stop mysql

После выполнения команды процесс сервера MySQL будет приостановлен.

Отключение привилегий MySQL сервера

Отключение привилегий СУБД – исключение из процесса загрузки Grant-таблиц, которые хранят данные для авторизации пользователей (пароли и логины). Это позволит выполнить вход в MySQL без авторизации и восстановить пароль root по умолчанию.

Для начала создаётся конфигурационный файл, который изменяет параметры запуска MySQL. Для этого нужно ввести в терминале команду:

sudo systemctl edit mysql

В созданный текстовой файл нужно внести следующие строки, которые ограничат загрузку Grant-таблиц и запретят выход в сеть (для обеспечения безопасности):

[Service]
ExecStart=
ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid --skip-grant-tables --skip-networking

Для сохранения изменений в файле нужно нажать «CTRL+X», потом «Y» и подтвердить изменения нажатием «Enter».

Для применения изменений в процессе загрузки MySQL, нужно обновить конфигурацию Systemd командой:

sudo systemctl daemon-reload

Остаётся запустить сервер MySQL с отключенными привилегиями. Для этого в терминале вводится команда:

sudo systemctl start mysql

Изменение пароля root пользователя MySQL

Таблицы привилегий отключены и ничего не мешает выполнить вход в консоль MySQL от имени root пользователя без авторизации.

Для выполнения входа в консоль MySQL нужно ввести команду:

sudo mysql -u root

Авторизация должна пройти без введения пароля.

Для того чтобы сменить пароль пользователя root, нужно загрузить Grant-таблицы, введя команду в терминал MySQL:

FLUSH PRIVILEGES;

Изменение пароля для MySQL 5.7.6 и новее

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

UPDATE mysql.user SET authentication_string = PASSWORD('MY_NEW_PASSWORD')

WHERE User = 'root';

FLUSH PRIVILEGES;

Вместо «MY_NEW_PASSWORD» вводится собственный пароль. Не стоит забывать о безопасности и ставить лёгкие пароли, так как это сыграет на руку злоумышленникам.

Изменения пароля на MySQL 5.7.5 и позднее

Нужно последовательно ввести следующие команды:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MY_NEW_PASSWORD');

FLUSH PRIVILEGES;

В поле «MY_NEW_PASSWORD» вводится собственный пароль.

Завершение

В случае успеха, в обоих случаях, будет получен следующий вывод:

Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

Восстановление привилегий и запуск сервера MySQL

После изменения пароля необходимо восстановить параметры загрузки сервера MySQL, удалив конфигурацию Systemd. Для этого в терминале последовательно вводятся команды:

sudo systemctl revert mysql

sudo systemctl daemon-reload

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

sudo systemctl restart mysql

Проверка нового пароля

Проверить новый пароль можно, выполнив вход в консоль MySQL от имени root пользователя:

mysql -u root -p

Как изменить пароль пользователя на новых версиях MySQL

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

Чтобы узнать пароль на новых версиях, достаточно в терминале ввести команду, которая запустит MySQL с правами администратора:

sudo mysql

При получении ошибки «access denied» стоит переходить к описанному выше способу – «Сброс пароля root».

Если доступ к консоли получен успешно получен, можно выполнить сброс пароля root в Ubuntu для MySQL, последовательно вводя следующие команды:

UPDATE mysql.user SET authentication_string = PASSWORD('new_password')

WHERE user = 'root';

В поле «new_password» вводится новый пароль для пользователя root.

Для применения изменений нужно перезагрузить таблицы привилегий следующей командой:

FLUSH PRIVILEGES;

В случае успеха будет получен следующий вывод:

Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

At first run this command:

sudo mysql

and then you should check which authentication method of your MySQL user accounts use.So run this command

SELECT user,authentication_string,plugin,host FROM mysql.user;

now you can see something like this already :

+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             |                                           | auth_socket           | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+

in the table that is in the above , you can see that all of your mysql users accounts status & if you have set a password for root account before you see mysql_native_password in plugin column instead auth_socket.
All in all for change your root password you should run :

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Be sure to change password to a strong password of your choosing.
Then for reload your server to put your new changes into effect run this;

FLUSH PRIVILEGES;

So again check the authentication methods which has employed by your mysql , by this command:

SELECT user,authentication_string,plugin,host FROM mysql.user;

and now the output is :

+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             | *3636DACC8616D997782ADD0839F92C1571D6D78F | mysql_native_password | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+

as you can see in the grant table your root account has mysql_native_password
.
now you can exit MYSQL shell

exit;

That’s it.just you should restart mysql by sudo service mysql restart.
Now you can login to mysql as a root account with your password easily.

Введение

В этой статье мы расскажем, как можно решить проблему, когда вы забыли или потеряли пароль root от MySQL или MariaDB. Отчаиваться не стоит, так как его можно сбросить, если иметь доступ к серверу и учетную запись пользователя операционной системы с привилегиями root. Данное руководство было протестировано в операционной системе Ubuntu 20.04 на двух популярных СУБД – MySQL и MariaDB.

Важно: В версии Ubuntu 20.04 дефолтная конфигурация MySQL или MariaDB позволяет получить доступ к базе данных (с правами администратора) без ввода пароля, если мы устанавливаем соединение с сервером БД под пользователем root . В этом случае нам нет необходимости сбрасывать пароль. Чтобы проверить была ли конфигурация аутентификации по умолчанию изменена,  вводим команду sudo mysql. Если получаем ошибку access denied, то прибегаем к действиям, указанным с статье.

Шаг 1 – Определяем версию и останавливаем сервер базы данных.

Необходимы различные действия для сброса root пароля в зависимости от того, какая СУБД у нас установлена – MySQL или MariaDB. Для того, чтобы определить, какой сервер базы данных установлен в системе вводим:

mysql --version

Если используется MariaDB, то в выводе получим следующее: (разумеется, версия БД может меняться)

MariaDB output
mysql Ver 15.1 Distrib 10.3.25-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Если MySQL:

MySQL output
mysql Ver 8.0.22-0ubuntu0.20.04.3 for Linux on x86_64 ((Ubuntu))

Чтобы произвести сброс root-пароля в MySQL или MariaDB, нам необходимо остановить сервер базы данных.

Для MariaDB:

sudo systemctl stop mariadb

Для MySQL:

sudo systemctl stop mysql

После остановки базы данных производим ее перезапуск в безопасном режиме для сброса пароля root.

Шаг 2 – Перезапускаем сервер базы данных в режиме –skip-grant-tables

Запуск MySQL и MariaDB в режиме –skip-grant-tables позволяет подключиться к базе данных с правами root без пароля. Поскольку это уязвимый режим работы СУБД, рекомендуется запуск сервера БД в однопользовательском режиме .

Настройка режима –skip-grant-tables для MariaDB

Зададим переменную окружения MYSQLD_OPTS, используемую в MariaDB при запуске: 

sudo systemctl set-environment MYSQLD_OPTS="--skip-grant-tables --skip-networking"

Запустим сервер БД:

sudo systemctl start mariadb

Корректность запуска сервера смотрим командой:

sudo systemctl status mariadb

Теперь подключаемся к базе данных пользователем root без пароля:

sudo mysql -u root

Подключившись к консоли MariaDB, меняем пароль root, как показано в Шаге 3 далее.

Настройка режима –skip-grant-tables для MySQL

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

sudo systemctl edit mysql

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

[Service]
ExecStart=
ExecStart=/usr/sbin/mysqld --skip-grant-tables --skip-networking

Нажимаем CTRL-X, чтобы выйти из файла, затем – Y, чтобы сохранить внесенные изменения.   Перезагружаем systemd, чтобы перечитать изменения:

sudo systemctl daemon-reload

Запускаем сервер MySQL:

sudo systemctl start mysql

и подключаемся пользователем root:

sudo mysql -u root

Далее переходим к Шагу 3.

Шаг 3 – Изменение пароля root

Поскольку СУБД запущена в режиме –skip-grant-tables, мы имеем возможность получить доступ к серверу баз данных без пароля, но не можем выполнять запросы на изменением данных. Чтобы установить пароль root , нам необходимо перезагрузить таблицы предоставления привилегий, выполнив инструкцию:

FLUSH PRIVILEGES;

Теперь сброс пароля root в MySQL или MariaDB возможен . 

Меняем пароль root для MariaDB

Используем запрос:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

В строке ‘new_password’ указываем свой пароль.

Output
Query OK, 0 rows affected (0.001 sec)

Далее установим механизм аутентификации по умолчанию:

UPDATE mysql.user SET authentication_string = '' WHERE user = 'root';
UPDATE mysql.user SET plugin = '' WHERE user = 'root';

Пароль изменен. Выходим из консоли MariaDB и смотрим Шаг 4 для перезапуска сервера базы данных в штатном режиме.

Меняем пароль root для MySQL

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

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'new_password';
Output
Query OK, 0 rows affected (0.01 sec)

Выходим из консоли MySQL и запускаем базу данных в нормальном режиме.

Шаг 4 – Запускаем сервер базы данных в штатном режиме.

Чтобы перезапустить сервер базы данных в штатном режиме, выполним следующие действия:  

Для MariaDB

Удаляем переменную окружения  MYSQLD_OPTS:

sudo systemctl unset-environment MYSQLD_OPTS

и перезапускаем сервер MariaDB:

sudo systemctl restart mariadb

Для MySQL

Удаляем все изменения конфигурации демона systemd для MySQL:

sudo systemctl revert mysql

Вывод должен быть примерно таким:

Output
Removed /etc/systemd/system/mysql.service.d/override.conf.
emoved /etc/systemd/system/mysql.service.d.

Затем перезагружаем демон systemd:

sudo systemctl daemon-reload

и сервер MySQL:

sudo systemctl restart mysql

После этого база данных должна перейти в нормальное состояние. Пробуем подключится к серверу базы данных пользователем root с новым паролем:

mysql -u root -p

Успех!  Не забывайте пароли=)          

Одной из важных операций при работе с пользователями в СУБД MySQL является смена пароля пользователя. Как правило изменить пароль пользователя может только суперпользователь с именем root. Однако если обычный пользователь наделен полномочиями на смену пароля то он также может это сделать.

В данной статье будет рассмотрено как изменить пароль пользователя MySQL в операционной системе Ubuntu 20.04.

Для смены пароля пользователя в MySQL присутствует несколько способов, в частности, это смена пароля при помощи команды SET PASSWORD или ALTER USER. Далее в статье будут рассмотрены все 2 способа.

Шаг 1. Как узнать версию MySQL

На данный момент (Февраль 2022 года) MySQL поддерживает две основные версии. Первая это устаревшая, но все еще поддерживая версия 5.7 и последняя актуальная версия 8.0. Для того чтобы узнать используемую версию необходимо выполнить следующую команду в терминале:

mysql --version

H4SDuG5pDxZ0AAAAAElFTkSuQmCC

В данном случае используется версия 8.0.28. Инструкция ALTER USER доступна только в современных версиях MySQL. Если у вас версия 5.x.x. то в ней следует использовать SET PASSWORD. В более новых версиях можно применять обе инструкции.

Шаг 2. Вход в консоль MySQL

Для того чтобы попасть в консоль MySQL необходимо авторизоваться при помощи логина и пароля. Если на сервере уже зарегистрирован необходимый пользователь, то вход необходимо выполнять от имени этого пользователя. Если MySQL используется впервые после установки, то входить необходимо при помощи пользователя root. Команда входа под пользователем root выглядит следующим образом (где вместо пользователя root можно использовать имя необходимого пользователя):

mysql -u root -p

A72roOCCGBR7AAAAAElFTkSuQmCC

Далее программа запросит пароль. В целях безопасности пароль не отображается в терминале. После ввода пароля необходимо нажать на клавишу Enter. После этого отобразится интерфейс консольного клиента MySQL, где можно использовать SQL команды.

Шаг 3. Просмотр хостов пользователя

В MySQL у каждой учетной записи есть свой хост, к которому данная учетная запись привязана. Есть 3 основных типа хостов в MySQL: localhost, % и IP адрес/доменное имя.

Тип записи localhost означает что под учетной записью можно входить только локально без возможности удаленного подключения, символ % (процент) означает что использовать такую учетную запись можно с любых хостов (в том числе и удаленных), IP адрес/доменное имя означает что использовать учетную запись можно только на выбранном доменном имени/IP адресе. Для того чтобы узнать тип хоста учетной записи необходимо выполнить следующий SQL запрос:

SELECT user, host FROM mysql.user;

l+rnrkS45vNSQAAAABJRU5ErkJggg==

На данном снимке экрана видно, что для пользователя alex используется хост %. Соответственно, этот хост и надо использовать при смене пароля. Пользователи в MySQL и вся информация о пользователях хранятся в базе данных mysql в таблице user.

Шаг 4. Смена пароля пользователя при помощи SET PASSWORD

Если требуется изменить пароль для пользователя root воспользуйтесь статьей Сброс пароля root в MySQL. Сменить пароль пользователя MySQL можно при помощи команды SET PASSWORD. Для того чтобы сменить пароль для пользователя alex с хостом % на somepassword666 выполните такую команду:

SET PASSWORD FOR 'alex'@'%' = 'somepassword666';

kD+vfAAAAAElFTkSuQmCC

Шаг 5. Смена пароля пользователя при помощи ALTER USER

Также установить пароль пользователя можно при помощи команды ALTER USER. Для того чтобы поменять пароль для пользователя alex с хостом % на anotherpassword666 выполните SQL запрос:

ALTER USER 'alex'@'%' IDENTIFIED BY 'anotherpassword666';

wNa8MAqBJAOIQAAAABJRU5ErkJggg==

Обратите внимание что имя пользователя и хост пользователя заключены в одинарные кавычки, без этих кавычек MySQL не сможет распознать строку.

Шаг 6. Сброс кэша привилегий

Вне зависимости от того какая команда была выполнена для смены пароля, после изменения пароля необходимо сбросить кэш привилегий. Сделать это можно, выполнив команду:

FLUSH PRIVILEGES;

XaqSQtT3osKqMmnomrat6pVVk93u24uirhLHuGeE7cMHEI0qdl0v8BT129kDTk1qwAAAAASUVORK5CYII=

Шаг 7. Проверка нового пароля

После того как пароль был изменен и кэш привилегий сброшен, необходимо проверить вход от имени пользователя чей пароль был изменен. Для этого необходимо выйти из оболочки MySQL выполнив команду exit:

exit

gDDP6UZdeVHDwAAAABJRU5ErkJggg==

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

mysql -u alex -p

weCJjTkWjPssQAAAABJRU5ErkJggg==

Если после ввода пароля появилось приглашение к вводу MySQL, то это означает что пароль был успешно обновлен.

Выводы

Теперь вы знаете как выполняется смена пароля пользователя MySQL. Изменить пароль можно несколькими способами. Оба способа являются простыми и быстрыми. А каким способом предпочитаете пользоваться вы? Поделитесь об этом в комментариях!

Creative Commons License

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

Об авторе

Бывший системный администратор и DevOps инженер. Ныне работаю по направлению DevSecOps. Использую Linux более 5 лет. Помимо Linux интересую языком программирования Python, базами данных и языком SQL а также информационной безопасностью.

Что такое MySQL и MariaDB

MySQL и MariaDB — очень популярные системы управления базами данных, основанных на языке запросов SQL. Сегодня их используют для веб-сайтов, проектов по машинному обучению, в различных средах разработки и так далее.

Зачем может понадобиться сбрасывать пароль

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

Как сбросить пароль root для сервисов MySQL и MariaDB

Чтобы установить новый пароль для пользователя root сервиса управления базами данных (ВНИМАНИЕ — это НЕ системный пользователь root!), выполните следующие действия:

Войдите на свой сервер как привилегированный пользователь;

Остановите службу;

service mysql stop # для MySQL
service mariadb stop # для MariaDB

pic1

Временно разрешите аутентификацию без пароля и запустите службу:

cat << EOF >> /etc/mysql/my.cnf
[mysqld]
skip-grant-tables
EOF
service mysql start

pic2

Авторизуйтесь в системе управления базами данных и установите новый root-пароль:

mysql
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'новый_пароль';
exit

pic3

Удалите директиву skip-grant-tables из «системного» конфигурационного файла и перезапустите службу:

service mysql stop; sed -i -e '$d' /etc/mysql/my.cnf && sed -i -e '$d' /etc/mysql/my.cnf; service mysql start

pic4

Обратите внимание — я не случайно запустил команду sed -i -e ‘$d’ дважды, а потому, что из конфигурационного файла нужно удалить две последние строки.

Проверка и настройка для более удобного использования в дальнейшем

Чтобы проверить все ли у вас получилось, давайте попробуем авторизоваться в сервисе:

mysql -uroot -p<новый_пароль>

pic5

Как видите, авторизация прошла успешно. Чтобы сделать дальнейшее использование сервиса более комфортным, можно сохранить новый пароль в специальный файл в вашем домашнем каталоге. Это позволит вам в дальнейшем не вводить пароль для входа в сервис:

cat << EOF > ~/.my.cnf

[client]
user = root
password = <your_new_password>
EOF

pic6

Заключение

Теперь вы знаете, как сбросить root-пароль для сервисов MySQL или MariaDB, знаете зачем может понадобиться эта операция и как сделать дальнейшее использование данного приложения более комфортным.

191028
Санкт-Петербург
Литейный пр., д. 26, Лит. А

+7 (812) 403-06-99

700
300

ООО «ИТГЛОБАЛКОМ ЛАБС»

191028
Санкт-Петербург
Литейный пр., д. 26, Лит. А

+7 (812) 403-06-99

700
300

ООО «ИТГЛОБАЛКОМ ЛАБС»

В этом руководстве мы покажем вам, как изменить пароль пользователя MySQL. Инструкции должны работать с любым современным дистрибутивом Linux, таким как Ubuntu 18.04 и CentOS 7.

Подготовка

В зависимости от версии сервера MySQL или MariaDB, которую вы используете в своей системе, вам нужно будет использовать разные команды для изменения пароля пользователя.

Чтобы узнать версию сервера базы данных, введите следующую команду:

mysql --version

Если в вашей системе установлен MySQL, результат будет выглядеть примерно так:

mysql  Ver 14.14 Distrib 5.7.22, for Linux (x86_64) using  EditLine wrapper

Или выведите такой вывод для MariaDB:

mysql  Ver 15.1 Distrib 10.1.33-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Обязательно отметьте, какую версию MySQL или MariaDB вы используете. Если вы хотите получить список всех учетных записей пользователей MySQL, ознакомьтесь с этим руководством.

Как изменить пароль пользователя MySQL

Выполните следующие действия, чтобы изменить пароль пользователя MySQL:

1. Войдите в оболочку MySQL как root.

Войдите в оболочку MySQL, набрав следующую команду и при появлении запроса введите пароль root-пользователя MySQL:

mysql -u root -p

Если вы не установили пароль для пользователя root MySQL, вы можете войти в систему с помощью sudo mysql .

2. Установите пароль пользователя MySQL.

  • Введите следующие команды, если у вас MySQL 5.7.6 и новее или MariaDB 10.1.20 и новее:

     ALTER USER 'user-name'@'localhost' IDENTIFIED BY 'NEW_USER_PASSWORD'; FLUSH PRIVILEGES;

    Если инструкция ALTER USER вас не работает, вы можете напрямую изменить пользовательскую таблицу:

     UPDATE mysql.user SET authentication_string = PASSWORD('NEW_USER_PASSWORD') WHERE User = 'user-name' AND Host = 'localhost'; FLUSH PRIVILEGES;
  • Введите следующие команды, если у вас MySQL 5.7.5 и ранее или MariaDB 10.1.20 и ранее:

     SET PASSWORD FOR 'user-name'@'localhost' = PASSWORD('NEW_USER_PASSWORD'); FLUSH PRIVILEGES;

Убедитесь, что вы изменили user-name на имя пользователя, для которого хотите изменить пароль. Если пользователь подключается к серверу MySQL с другого хоста, измените localhost на удаленное имя хоста или IP-адрес.

В обоих случаях, если все пойдет хорошо, вы увидите следующий результат:

Query OK, 0 rows affected (0.00 sec)

Выйдите из командной строки MySQL, выполнив:

quit;

3. Подтвердите новый пароль.

Чтобы убедиться, что новый пароль применен правильно, введите:

mysql -u user-name -h localhost -p

Вам будет предложено ввести новый пароль пользователя. Введите его, и вы войдете на свой сервер MySQL.

Выводы

В этом руководстве вы узнали, как изменить пароль пользователя MySQL или MariaDB. Убедитесь, что новый пароль надежный и надежный, и храните его в надежном месте.

Чтобы узнать больше о том, как использовать оболочку MySQL для выполнения различных административных операций, вы можете ознакомиться с нашим руководством по управлению учетными записями пользователей и базами данных MySQL .

Не стесняйтесь оставлять комментарии, если у вас есть вопросы.

15 октября, 2018 12:02 пп
10 607 views
| Комментариев нет

MariaDB, mySQL, Ubuntu

Забыть пароль может каждый. Если это случилось с вашим root-паролем от базы данных MySQL или MariaDB, вы можете получить доступ к аккаунту и сбросить пароль, если у вас есть доступ к серверу и учетная запись пользователя с привилегиями sudo.

Примечание: Обычно в новых установках Ubuntu 18.04 конфигурация MySQL или MariaDB по умолчанию позволяет вам получить доступ к базе данных (с полными правами администратора) без пароля, если подключаться с системной учетной записи root. В этом случае сбрасывать пароль не нужно. Прежде чем приступать к восстановлению root-пароля базы данных, попробуйте обратиться к базе данных с помощью команды sudo mysql. Если это приведет к ошибке access denied, приступайте к выполнению мануала.

В этом мануале вы узнаете, как сбросить root пароль базы данных MySQL и MariaDB, установленных с помощью менеджера пакетов apt в Ubuntu 18.04. Процедура изменения пароля и конфигурация systemd по умолчанию в MySQL и MariaDB отличаются. Инструкции в этом мануале могут подойти и для других версий системы и БД, но они составлены и протестированы специально для Ubuntu 18.04 и стандартных пакетов этого дистрибутива.

Требования

Для работы вам понадобится:

  • Сервер Ubuntu 18.04, настроенный по этому мануалу.
  • Система управления базами данных MySQL или MariaDB. Инструкции по установке можно найти в мануале Установка MySQL в Ubuntu 18.04.

1: Определение версии и остановка сервера БД

Ubuntu 18.04 использует MySQL или MariaDB, популярный форк, полностью совместимый с MySQL. В зависимости от СУБД вам придется использовать разные команды для восстановления root пароля. На данном этапе важно определить, какой сервер баз данных вы используете.

Введите такую команду:

mysql --version

Если на вашем сервере используется MariaDB, это будет указано в выводе команды вместе с версией:

mysql  Ver 15.1 Distrib 10.1.29-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Если у вас MySQL, вы увидите:

mysql  Ver 14.14 Distrib 5.7.22, for Linux (x86_64) using  EditLine wrapper

Сейчас очень важно узнать, какая база данных работает на вашем сервере, так как это определяет дальнейшие ваши действия.

Чтобы изменить пароль root, вам необходимо остановить сервер базы данных. Если вы используете MariaDB, вы можете сделать это с помощью следующей команды:

sudo systemctl stop mariadb

Для MySQL введите:

sudo systemctl stop mysql

Остановив сервер БД, вы можете перезапустить его в безопасном режиме, чтобы сбросить root пароль.

2: Перезапуск сервера

Запуск MySQL и MariaDB без проверки привилегий позволяет получить доступ к командной строке базы данных с правами root без предоставления пароля. Для этого вам необходимо остановить загрузку таблиц привилегий БД, в которых хранятся данные о правах пользователя. Поскольку это немного опасно, вы также можете отключить сеть, чтобы другие клиенты не могли подключиться к временно уязвимому серверу.

Выполните один из следующих подразделов в зависимости от того, какой сервер баз данных вы используете.

Настройка MariaDB для запуска без привилегий

Чтобы запустить сервер MariaDB без привилегий, нужно использовать юнит-файл systemd для установки дополнительных параметров демонов сервера MariaDB.

Выполните следующую команду, которая устанавливает переменную среды MYSQLD_OPTS, используемую MariaDB при запуске. Параметры -skip-grant-tables и -skip-network указывают, что MariaDB запускается без таблиц привилегий и сетевых функций:

sudo systemctl set-environment MYSQLD_OPTS="--skip-grant-tables --skip-networking"

Теперь запустите MariaDB:

sudo systemctl start mariadb

Команда не отображает никакого вывода, но она перезапустит сервер БД с учетом новых переменных.

Чтобы убедиться, что сервер запущен, введите команду:

sudo systemctl status mariadb

Теперь можно подключиться к MariaDB как пользователь root без пароля:

sudo mysql -u root

Вы увидите командную строку оболочки MariaDB:

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
MariaDB [(none)]>

Теперь переходите к разделу 3.

Настройка MySQL для запуска без привилегий

Чтобы запустить сервер MySQL без таблиц привилегий, нужно изменить конфигурацию systemd MySQL и передать серверу дополнительные параметры командной строки при запуске.

Для этого выполните следующую команду:

sudo systemctl edit mysql

Эта команда откроет новый файл в редакторе nano, который можно использовать для управления переопределений MySQL. Они изменяют параметры сервиса MySQL по умолчанию. Этот файл будет пустым, в него нужно вставить следующий контент:

[Service]
ExecStart=
ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid --skip-grant-tables --skip-networking

Первый оператор ExecStart очищает значение по умолчанию, а второй предоставляет systemd новую команду запуска с параметрами для отключения загрузки таблиц привилегий и сетевых функций.

Нажмите CTRL-Х, чтобы выйти из файла, затем Y, чтобы сохранить изменения, и ENTER, чтобы подтвердить имя файла.

Перезагрузите конфигурацию systemd, чтобы применить эти изменения:

sudo systemctl daemon-reload

Запустите сервер MySQL:

sudo systemctl start mysql

Команда не отображает никакого вывода, но она перезапустит сервер БД с учетом новых конфигураций.

Теперь можно подключиться к БД как пользователь root без пароля:

sudo mysql -u root

Вы увидите командную строку оболочки MySQL:

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

Теперь можно сбросить утраченный пароль.

3: Изменение root-пароля

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

Чтобы перезагрузить таблицы, введите команду FLUSH PRIVILEGES.

FLUSH PRIVILEGES;

Теперь вы можете изменить root-пароль. Дальнейшие действия зависят от того, какую СУБД вы используете, MariaDB или MySQL.

Изменение пароля в MariaDB

Если вы используете MariaDB, выполните следующую команду, чтобы установить пароль учетной записи root. Вместо new_password укажите свой новый пароль, который вы запомните.

UPDATE mysql.user SET password = PASSWORD('new_password') WHERE user = 'root';

Если пароль успешно изменен, вы увидите:

Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB позволяет использовать пользовательские механизмы аутентификации. Введите следующие два оператора, чтобы убедиться, что MariaDB будет использовать механизм аутентификации по умолчанию для нового пароля, который вы только что присвоили учетной записи root:

UPDATE mysql.user SET authentication_string = '' WHERE user = 'root';
UPDATE mysql.user SET plugin = '' WHERE user = 'root';

Вы увидите вывод:

Query OK, 0 rows affected (0.01 sec)
Rows matched: 1  Changed: 0  Warnings: 0

Пароль изменен. Введите exit, чтобы выйти из консоли MariaDB и перейдите к разделу 4, чтобы перезапустить сервер базы данных в обычном режиме.

Изменение пароля в MySQL

В MySQL выполните следующий оператор, чтобы изменить пароль пользователя root. Вместо new_password нужно указать новый надежный пароль, который вы запомните:

UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE user = 'root';

Если пароль успешно изменен, вы увидите:

Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

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

UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root';

Вы увидите вывод:

Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

Пароль изменен. Введите exit, чтобы выйти из консоли MySQL.

Теперь нужно перезапустить сервер базы данных в обычном режиме.

4: Перезапуск сервера БД в обычном режиме

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

В MariaDB отключите переменную среды MYSQLD_OPTS, которую вы установили ранее:

sudo systemctl unset-environment MYSQLD_OPTS

Теперь перезапустите сервис с помощью systemctl:

sudo systemctl restart mariadb

В MySQL удалите измененные конфигурации systemd.

sudo systemctl revert mysql

Вы увидите такой вывод:

Removed /etc/systemd/system/mysql.service.d/override.conf.
Removed /etc/systemd/system/mysql.service.d.

Обновите конфигурации systemd:

sudo systemctl daemon-reload

А затем перезапустите сервис:

sudo systemctl restart mysql

Теперь БД работает в нормальном режиме. Убедитесь, что новый пароль работает:

mysql -u root -p

Команда должна запросить у вас пароль. Введите новый пароль, чтобы получить доступ к данным.

Заключение

Вы восстановили административный доступ к серверу MySQL и MariaDB. Убедитесь, что новый пароль, который вы выбрали, является достаточно надежным и безопасным, и храните его в надежном месте.

Больше дополнительной информации об управлении пользователями, механизмах аутентификации или способах сброса пароля БД в других версиях СУБД можно найти в официальной документации MySQL и MariaDB.

Tags: MariaDB, MySQL, Ubuntu, Ubuntu 18.04

Пароли сложно запомнить, поэтому, если вы забыли пароль root MySQL, к счастью, есть способ его изменить. Этот пост был написан для вас, и к концу этого поста вы успешно измените пароль MySQL.

Прежде чем перейти непосредственно к решению, предполагается, что вы используете последнюю версию базы данных MySQL в системе Ubuntu 20.04 LTS. В этом посте будет предоставлено пошаговое руководство по изменению пароля root MySQL в Ubuntu 20.04. Итак, не теряя времени, приступим.

Шаг 1. Проверьте версию MySQL в Ubuntu 20.04

Прежде всего, проверьте версию своего MySQL, потому что этот пост содержит решение по изменению пароля root в версии 8 или выше. Если версия вашего MySQL ниже 8, решение будет другим. Команда для проверки версии MySQL приведена ниже.

Шаг 2. Остановите сервер MySQL

Чтобы изменить пароль root MySQL, вам сначала нужно выключить сервер MySQL, и вы можете сделать это с помощью команды:

$ sudo systemctl stop mysql.service

Проверьте состояние сервера MySQL, чтобы проверить его, используя команду:

$ sudo systemctl status mysql.service

Шаг 3. Пропустите таблицы грантов и нетворкинг

Чтобы запустить сервер MySQL без предоставления таблиц и проверки сети, установите переменную среды MYSQLD_OPTS, которую MySQL использует при запуске.

$ sudo systemctl set-environment MYSQLD_OPTS="--skip-networking --skip-grant-tables"

Хорошо, переменная среды установлена, и мы можем войти в оболочку MySQL без ввода пароля.

Шаг 4. Запустите службу MySQL

После установки переменной окружения MYSQLD_OPTS запустите службу MySQL, используя команду:

$ sudo systemctl start mysql.service

Шаг 5: Подтвердите статус сервера MySQL

Подтвердите статус службы MySQL, работает она или нет:

$ sudo systemctl status mysql.service

Шаг 6. Войдите в оболочку MySQL

Теперь вам нужно войти в систему как пользователь root на сервере MySQL, а для входа в оболочку MySQL введите команду:

Без ввода пароля вы войдете в оболочку MySQL.

Шаг 7. Измените пароль root

Теперь сначала удалите привилегии.

mysql> flush privileges;

Выберите базу данных MySQL.

И установите новый пароль для пользователя root с помощью команды Alter, набрав следующую инструкцию.

mysql> ALTER USER  'root'@'localhost' IDENTIFIED BY 'the-new-password';

Вместо «the-new-password» укажите свой новый пароль. После успешного изменения пароля root MySQL выйдите из оболочки MySQL.

Шаг 8. Завершите все процессы MySQL и перезапустите службу MySQL

Прежде всего, убейте все процессы MySQL еще до перезапуска сервера MySQL.

Получив результат, нажмите «Enter» и перезапустите сервер MySQL, используя команду, приведенную ниже.

$ sudo systemctl restart mysql.service

Шаг 9: Войдите в систему с новым паролем

Теперь войдите в оболочку MySQL с новым установленным паролем.

Введите недавно установленный пароль в команде ALTER.

Все. Пароль root MySQL успешно изменен, и вы снова вошли в оболочку MySQL.

Итог

В этой статье вы научились изменять пароль root MySQL в системе Ubuntu 20.04 LTS. Этот пост содержит глубокое и простое для понимания решение по сбросу пароля root MySQL в Ubuntu 20.04.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Как изменить пароль аутлук 2016
  • Как изменить пароль ати
  • Как изменить пароль аппле ид если забыл
  • Как изменить пароль амо срм
  • Как изменить пароль аккаунта инстаграм

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии