Mysql linux сбросить пароль root

How to reset the root password in MySQL 8.0.11?

It looks like it has a problem with the keyword TOOR , but I cannot see where you have used that. Would you show us the actual SQL you are running?

7 Answers 7

This function was removed in MySQL 8.0.11

1.if you in skip-grant-tables mode
in mysqld_safe:

UPDATE mysql.user SET authentication_string=null WHERE User='root'; FLUSH PRIVILEGES; exit; 
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'yourpasswd'; 

2.not in skip-grant-tables mode
just in mysql:

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'yourpasswd'; 

For in SKIP-GRANT-TABLES mode — sudo /usr/local/mysql/bin/mysqld_safe —skip-grant-tables . Works for 8.0.1

I got ERROR 1146 (42S02): Table ‘mysql.role_edges’ doesn’t exist so I had to do a mysql_upgrade -u root after I set the root password to null for this to work.

I had to use mysql_native_password instead of caching_sha2_password for this to work: ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘yourpasswd’; . Not sure why, though.

I had trouble with the order of the commands but in ubuntu 20 worked for me: sudo service mysql stop sudo mysqld_safe —skip-grant-tables & then opening mysql console with mysql -u root UPDATE mysql.user SET authentication_string=null WHERE User=’root’; flush_privileges; ALTER USER ‘root’@’localhost’ IDENTIFIED WITH caching_sha2_password BY ‘yourpasswd’; exit; ps -fea | grep mysqld sudo kill -9 [pid from previous command] then finally sudo service mysql stop

Jus login to mysql with sudo

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'yourpasswd'; exit; 

Please note, that using this password algo breaks Java applications with the error «public key retrieval is not allowed» It’s better to use the good ol’ native password algo ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘your_password; or you may be forced to change the application settings

Читайте также:  Netcat linux как пользоваться

I wasted so much time following the actual official MySQL 8 instructions and this is what worked. Thanks

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

This statement is not available before adding skip-grant-tables and after that user gets: ERROR 1290 (HY000): The MySQL server is running with the —skip-grant-tables option so it cannot execute this statement

If you are on Windows you can try following steps

Reset MySQL 8.0 root Password in Windows

  1. Stop the MySQL 8.0 service from services
  2. Go to path C:\Program Files\MySQL\MySQL Server 8.0\bin and open cmd
  3. Run mysqld —console —skip-grant-tables —shared-memory
  4. Open new cmd in the same path
  5. Run following commands
  6. mysql -u root
  7. select authentication_string,host from mysql.user where user=’root’;
  8. UPDATE mysql.user SET authentication_string=» WHERE user=’root’;
  9. Now close both the cmd .
  10. Try to start the MySQL 8.0 service.
  11. Connect using username as root & password as blank.
  12. Change the password from the user management.

Step 1: Create a new file in your root directory( e.g C:) Step 2: Write this ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘abc’ and save it Step 3: If your Mysql service is already running, please stop this and open your CMD Step 4: Go to your Mysql installation directory (e.g C:\Program Files\MySQL\MySQL Server 8.0\bin) and type this command

Step 5: Execute this command and you are good to go 🙂

I am using 8.0.23 but had multiple issues. Here are the issues and solutions. I followed the mysql docs and was able to do the reset, though I had isues. I have provided my solutions and a sample reset script.

  1. following steps outlined by others had various failures
  2. user running daemon is mysql and I cannot su to mysql id
  3. getting error can’t create lock file /var/run/mysqld/mysqlx.sock.lock , mysqld folder is getting deleted by the mysql service.
  4. had to kill -9 mysql process after running, very ugly
  1. use steps from https://dev.mysql.com/doc/refman/8.0/en/resetting-permissions.html
  2. use —user=mysql when running mysql commands
  3. Create folder /var/run/mysqld and chown for mysql:mysql before runing comamnds
  4. use mysqladmin shutdown to stop sql after starting it for reset

In the script, I will reset root to New%Password

# create password reset file cat /tmp/deleteme ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'New%Password'; EOF # create /var/run/mysqld mkdir /var/run/mysqld chown mysql:mysql /var/run/mysqld # start mysqld and run the command mysqld --init-file=/tmp/deleteme --user=mysql & # wait for sql to start while [ ! -f /var/run/mysqld/mysqlx.sock.lock ]; do sleep 1; done sleep 3 # stop sql mysqladmin -u root -pNew%Password shutdown while [ -f /var/run/mysqld/mysqlx.sock.lock ]; do sleep 1; done #clean up temp file rm /tmp/deleteme 

Источник

Читайте также:  Настройка центра сертификации linux

Сброс пароля root в MySQL на Ubuntu

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

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

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

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

План сброса

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

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

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

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

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 пользователя без авторизации.

Читайте также:  Linux как правильно разбить диск

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

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

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

Изменение пароля для 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

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

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

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

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

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

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

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

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

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

Надежный хостинг для сайта. 14 дней — бесплатно!

Источник

Оцените статью
Adblock
detector