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.
Во время работы с СУБД MySQL крайне важно знать, как сменить пароль пользователя. Кажется, что эту задачу можно решить, только обладая правами суперпользвователя. Но даже обычный пользователь сможет сменить пароль при определенных обстоятельствах. В этой статье мы расскажем, как это делается при обычных условиях.
Меняем пароль пользователя в СУБД MySQL
Сменить пароль пользователя можно разными способами. В среде MySQL для этой задачи предусмотрены две команды – SET PASSWORD и ALTER USER. Подробно расскажем о каждом из этих двух способов.
Узнаем версию MySQL
На начало текущего года в MySQL предусмотрены две основные версии. Первая устаревшая, но все еще поддерживаемая (это версия 5.7), а самая актуальная на данный момент – версия 8.0. Как узнать версию MySQL? Сделать это можно с помощью специальной команды, которую следует выполнить в терминале:
$ mysql –version
Как видим из изображения выше, используется версия 8.0.28, но при этом важно учесть, что ALTER USER актуальна только в прежних версиях MySQL.В более новых версиях можно использовать обе версии.
Как зайти в консоль
Для входа в консоль следует авторизоваться в MySQL, используя логин и пароль. Когда на сервере уже авторизован пользователь, то все действия нужно выполнять от его имени. В том случае, когда MySQL задействована впервые, то нужно использовать права root.
Команда для входа в root:
$ mysql -u root –p
После чего произойдет запрос пароля. Останется ввести пароль, нажать клавишу Enter, сразу после этого загрузится интерфейс MySQL со всеми доступными командами.
Просмотр хостов
Особенность MySQL в том, что в ней есть отдельный хост, к которой привязана учетная запись. Отметим три основных хоста:
- Localhost;
- %;
- IP адрес/доменное имя.
localhost допускает только локальный вход без возможности удаленного подключения, символ % означает, что использовать такую учетную запись можно с любых хостов, IP адрес/доменное имя означает, что использовать учетную запись можно только на выбранном доменном имени/IP адресе.
Чтобы узнать тип хоста учетной записи необходимо выполнить следующий SQL запрос:
$ SELECT user, host FROM mysql.user
На скриншоте выше мы видим, что для пользователя alex задействован хост %. Этот хост и надо использовать при смене пароля. Пользователи в MySQL и вся информация о пользователях хранятся в базе данных mysql в таблице user.
Меняем пароль с помощью SET PASSWORD
Также поменять пароль можно командой SET PASSWORD. Чтобы сменить пароль для пользователя alex с хостом % на somepassword666 нужно использовать следующую команду:
$ SET PASSWORD FOR ‘alex’@’%’ = ‘somepassword666’;
Меняем пароль с помощью ALTER USER
Сменить код пользователя можно, используя другую команду – ALTER USER. Поменять пароль для пользователя alex с хостом % на anotherpassword666 выполним SQL запрос:
$ ALTER USER ‘alex’@’%’ IDENTIFIED BY ‘anotherpassword666’;
Здесь следует учитывать, что имя пользователя и хост пользователя заключены в одинарные кавычки, без этих кавычек MySQL не сможет распознать строку.
Теперь сбрасываем кэш привилегий:
$ FLUSH PRIVILEGES;
Как проверить новый пароль
Как только вы изменили пароль, изменили привилегия и сбросили кэш, следует выполнить проверку вход от имени пользователя, чей пароль был изменен.
Выйдите из оболочки MySQL, выполнив команду exit:
$ exit
Теперь входим в оболочку:
$ mysql -u alex -p
Если вы видите приглашение системы во время входа, то все сделали правильно, а значит, пароль успешно был сменен.
Одной из важных операций при работе с пользователями в СУБД MySQL является смена пароля пользователя. Как правило изменить пароль пользователя может только суперпользователь с именем root. Однако если обычный пользователь наделен полномочиями на смену пароля то он также может это сделать.
В данной статье будет рассмотрено как изменить пароль пользователя MySQL в операционной системе Ubuntu 20.04.
Для смены пароля пользователя в MySQL присутствует несколько способов, в частности, это смена пароля при помощи команды SET PASSWORD или ALTER USER. Далее в статье будут рассмотрены все 2 способа.
Шаг 1. Как узнать версию MySQL
На данный момент (Февраль 2022 года) MySQL поддерживает две основные версии. Первая это устаревшая, но все еще поддерживая версия 5.7 и последняя актуальная версия 8.0. Для того чтобы узнать используемую версию необходимо выполнить следующую команду в терминале:
mysql --version
В данном случае используется версия 8.0.28. Инструкция ALTER USER доступна только в современных версиях MySQL. Если у вас версия 5.x.x. то в ней следует использовать SET PASSWORD. В более новых версиях можно применять обе инструкции.
Шаг 2. Вход в консоль MySQL
Для того чтобы попасть в консоль MySQL необходимо авторизоваться при помощи логина и пароля. Если на сервере уже зарегистрирован необходимый пользователь, то вход необходимо выполнять от имени этого пользователя. Если MySQL используется впервые после установки, то входить необходимо при помощи пользователя root. Команда входа под пользователем root выглядит следующим образом (где вместо пользователя root можно использовать имя необходимого пользователя):
mysql -u root -p
Далее программа запросит пароль. В целях безопасности пароль не отображается в терминале. После ввода пароля необходимо нажать на клавишу Enter. После этого отобразится интерфейс консольного клиента MySQL, где можно использовать SQL команды.
Шаг 3. Просмотр хостов пользователя
В MySQL у каждой учетной записи есть свой хост, к которому данная учетная запись привязана. Есть 3 основных типа хостов в MySQL: localhost, % и IP адрес/доменное имя.
Тип записи localhost означает что под учетной записью можно входить только локально без возможности удаленного подключения, символ % (процент) означает что использовать такую учетную запись можно с любых хостов (в том числе и удаленных), IP адрес/доменное имя означает что использовать учетную запись можно только на выбранном доменном имени/IP адресе. Для того чтобы узнать тип хоста учетной записи необходимо выполнить следующий SQL запрос:
SELECT user, host FROM mysql.user;
На данном снимке экрана видно, что для пользователя alex используется хост %. Соответственно, этот хост и надо использовать при смене пароля. Пользователи в MySQL и вся информация о пользователях хранятся в базе данных mysql в таблице user.
Шаг 4. Смена пароля пользователя при помощи SET PASSWORD
Если требуется изменить пароль для пользователя root воспользуйтесь статьей Сброс пароля root в MySQL. Сменить пароль пользователя MySQL можно при помощи команды SET PASSWORD. Для того чтобы сменить пароль для пользователя alex с хостом % на somepassword666 выполните такую команду:
SET PASSWORD FOR 'alex'@'%' = 'somepassword666';
Шаг 5. Смена пароля пользователя при помощи ALTER USER
Также установить пароль пользователя можно при помощи команды ALTER USER. Для того чтобы поменять пароль для пользователя alex с хостом % на anotherpassword666 выполните SQL запрос:
ALTER USER 'alex'@'%' IDENTIFIED BY 'anotherpassword666';
Обратите внимание что имя пользователя и хост пользователя заключены в одинарные кавычки, без этих кавычек MySQL не сможет распознать строку.
Шаг 6. Сброс кэша привилегий
Вне зависимости от того какая команда была выполнена для смены пароля, после изменения пароля необходимо сбросить кэш привилегий. Сделать это можно, выполнив команду:
FLUSH PRIVILEGES;
Шаг 7. Проверка нового пароля
После того как пароль был изменен и кэш привилегий сброшен, необходимо проверить вход от имени пользователя чей пароль был изменен. Для этого необходимо выйти из оболочки MySQL выполнив команду exit:
exit
Далее необходимо войти в оболочку MySQL под необходимым пользователем ведя его новый пароль. Для примера войдем под пользователем alex, чей пароль был изменен ранее:
mysql -u alex -p
Если после ввода пароля появилось приглашение к вводу MySQL, то это означает что пароль был успешно обновлен.
Выводы
Теперь вы знаете как выполняется смена пароля пользователя MySQL. Изменить пароль можно несколькими способами. Оба способа являются простыми и быстрыми. А каким способом предпочитаете пользоваться вы? Поделитесь об этом в комментариях!
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .
Об авторе
Бывший системный администратор и DevOps инженер. Ныне работаю по направлению DevSecOps. Использую Linux более 5 лет. Помимо Linux интересую языком программирования Python, базами данных и языком SQL а также информационной безопасностью.
В этом руководстве мы покажем вам, как изменить пароль пользователя 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 .
Не стесняйтесь оставлять комментарии, если у вас есть вопросы.
Общая информация
Сбросить пароль root пользователю базы данных MySQL может потребоваться в случае, если потерян доступ к системе управления базами данных.
Требования для сброса пароля
- Локальный доступ или подключение по SSH к серверу на Ubuntu Linux.
- Предустановленная система СУБД MySQL с отсутствующим доступом.
План сброса
- Определение версии MySQL.
- Остановка сервера.
- Отключение привилегий MySQL сервера.
- Изменение пароля Root пользователя MySQL.
- Восстановление привилегий и запуск MySQL.
- Проверка нового пароля.
Определение версии 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
Summary: in this tutorial, you will learn how to change MySQL user password using various statements such as UPDATE, SET PASSWORD,and ALTER USER statements.

Before changing the password of a MySQL user account, you should consider the following important questions:
- Which user account do you want to change the password?
- What application is using the user account whose password is being changed? If you change the password without changing the connection string of the application that is using the user account, the application will not be able to connect to the database server.
After having these questions answered. You can start changing the user account’s password.
MySQL provides various statements that you can use to change the password of a user including the UPDATE , SET PASSWORD, and GRANT USAGE statements.
Change MySQL user password using UPDATE statement
The first way to change the password is to use the UPDATE statement to update the user table of the mysql database.
After executing the UPDATE statement, you also need to execute the FLUSH PRIVILEGES statement to reload privileges from the grant table in the mysql database.
Suppose you want to change the password for the dbadmin user that connects from the localhost to dolphin, you need to execute the following statements:
Code language: SQL (Structured Query Language) (sql)
USE mysql; UPDATE user SET password = PASSWORD('dolphin') WHERE user = 'dbadmin' AND host = 'localhost'; FLUSH PRIVILEGES;
Note that from MySQL 5.7.6, the user table uses the authentication_string column only to store the password. In addition, it removed the password column.
Therefore if you use MySQL 5.7.6+, you must use the authentication_string column in the UPDATE statement instead:
USE mysql; UPDATE user SET authentication_string = PASSWORD('dolphin') WHERE user = 'dbadmin' AND host = 'localhost'; FLUSH PRIVILEGES;Code language: SQL (Structured Query Language) (sql)
Notice that the PASSWORD() function computes the hash value from a plain text.
Change MySQL user password using the SET PASSWORD statement
The second way to change the password is by using the SET PASSWORD statement.
You use the user account in user@host format to update the password. If you need to change the password for other accounts, your account needs to have at least UPDATE privilege.
By using the SET PASSOWORD statement, you don’t need to execute the FLUSH PRIVILEGES statement to reload privileges from grant tables.
The following statement changes the password of dbadmin user account using the SET PASSWORD statement.
Code language: SQL (Structured Query Language) (sql)
SET PASSWORD FOR 'dbadmin'@'localhost' = PASSWORD('bigshark');
Notice that from version 5.7.6, MySQL depreciated this syntax and may remove it in the future releases. Instead, it uses the plaintext password as follows:
Code language: SQL (Structured Query Language) (sql)
SET PASSWORD FOR 'dbadmin'@'localhost' = bigshark;
Change MySQL user password using ALTER USER statement
The third way to change the password for a user account is to use the ALTER USER statement with the IDENTIFIED BY clause.
The following ALTER USER statement changes the password of the dbadmin user to littlewhale:
Code language: SQL (Structured Query Language) (sql)
ALTER USER dbadmin@localhost IDENTIFIED BY 'littlewhale';
In case you want to reset the password of the MySQL root account, you need to force the MySQL database server to stop and restart without using grant table validation.
In this tutorial, we have introduced you to some handy statements that allow you to change the password for a user account in MySQL database.
Was this tutorial helpful?
















