Невозможно войти на мой сервер mySql как root и не удалось сбросить пароль root.

Я пытаюсь получить доступ к базе данных mySql и создать ее резервную копию, но безуспешно. Я знаю пароль root, но если я попытаюсь войти в БД, используя его, я получу

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

ошибка.

Я пытался следовать различным руководствам о том, как изменить пароль root mySql, но безуспешно:

  • попытался перезапустить mySql в безопасном режиме иALTERработа с системной таблицей
  • попытался использовать mysqladmin для смены пароля (как описано здесь)
  • попытался использовать файл конфигурации сmysqld --init-file=./mysql-init &

Все они терпят неудачу с одной и той же ошибкой. Мой план состоял в том, чтобы сделать резервную копию БД перед отключением сервера, но, не имея возможности войти в систему, я не могу ничего сделать резервную копию.

Я обнаружил проблему с паролем root, поскольку заметил, что не могу войти в базу данных с помощью phpMyAdmin или Webmin. Все остальные пользователи БД (те, которые созданы для разных приложений), похоже, работают, поскольку я не вижу ничего сломанного в своих интерфейсах.

Могу ли я выполнить какой-либо другой тест, чтобы восстановить пароль? Или есть ли простой способ сделать резервную копию моих данных, прежде чем все выбрасывать?

Система:Ubuntu 18.04.6 LTS (GNU/Linux 4.15.0-193-generic x86_64)
Версия MySQL:mysql Ver 14.14 Distrib 5.7.39, for Linux (x86_64) using EditLine wrapper

Заранее благодарю, С.

ОБНОВЛЯТЬ

Попытка того, что @user9517 предложил в своем комментарии, привела к:

      # mysql_secure_installation

Securing the MySQL server deployment.

Enter password for user root: 
Error: Access denied for user 'root'@'localhost' (using password: YES)
      # mysql --protocol=tcp -uroot -pPASSWORD
mysql: [Warning] Using a password on the command line interface can be insecure.

(and terminal freezed)

ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (110)

ОБНОВЛЕНИЕ 2

Мне удалось войти в систему, используя--skip-grant-tablesвариант, после создания вручную/var/run/mysqldфайл, который отсутствовал в моей системе. Мне удалось обновить пароль и перезагрузить систему. Но я все еще не могу войти в свою базу данных какroot. Я думаю, проблема не в пароле, а в какой-то конфигурации. Если я проверю содержимоеusertable, я вижу этот вывод:

SELECT * FROM user WHERE User = 'root'

      +-----------+------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+-----------------------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
| Host      | User | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv | Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv | Show_db_priv | Super_priv | Create_tmp_table_priv | Lock_tables_priv | Execute_priv | Repl_slave_priv | Repl_client_priv | Create_view_priv | Show_view_priv | Create_routine_priv | Alter_routine_priv | Create_user_priv | Event_priv | Trigger_priv | Create_tablespace_priv | ssl_type | ssl_cipher | x509_issuer | x509_subject | max_questions | max_updates | max_connections | max_user_connections | plugin                | authentication_string                     | password_expired | password_last_changed | password_lifetime | account_locked |
+-----------+------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+-----------------------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+
| *         | root | Y           | Y           | Y           | Y           | Y           | Y         | Y           | Y             | Y            | Y         | Y          | Y               | Y          | Y          | Y            | Y          | Y                     | Y                | Y            | Y               | Y                | Y                | Y              | Y                   | Y                  | Y                | Y          | Y            | Y                      |          |            |             |              |             0 |           0 |               0 |                    0 | mysql_native_password | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX | N                | 2018-01-10 10:58:05   |              NULL | N              |
| 127.0.0.1 | root | Y           | Y           | Y           | Y           | Y           | Y         | Y           | Y             | Y            | Y         | Y          | Y               | Y          | Y          | Y            | Y          | Y                     | Y                | Y            | Y               | Y                | Y                | Y              | Y                   | Y                  | Y                | Y          | Y            | Y                      |          |            |             |              |             0 |           0 |               0 |                    0 | mysql_native_password | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX | N                | 2018-01-10 10:58:05   |              NULL | N              |
| ::1       | root | Y           | Y           | Y           | Y           | Y           | Y         | Y           | Y             | Y            | Y         | Y          | Y               | Y          | Y          | Y            | Y          | Y                     | Y                | Y            | Y               | Y                | Y                | Y              | Y                   | Y                  | Y                | Y          | Y            | Y                      |          |            |             |              |             0 |           0 |               0 |                    0 | mysql_native_password | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX | N                | 2018-01-10 10:58:05   |              NULL | N              |
+-----------+------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+--------------+------------+-----------------------+------------------+--------------+-----------------+------------------+------------------+----------------+---------------------+--------------------+------------------+------------+--------------+------------------------+----------+------------+-------------+--------------+---------------+-------------+-----------------+----------------------+-----------------------+-------------------------------------------+------------------+-----------------------+-------------------+----------------+

Есть идеи, что я могу проверить, чтобы решить проблему?

ОБНОВЛЕНИЕ 3

Как ни странно, если я попытаюсь подключиться к серверу с помощью SequelPro через ssh, я смогу подключиться, просмотреть таблицы и экспортировать их...

2 ответа

ДЛЯ AWS Linuxsystemctl stop mysqldsystemctl set-environment MYSQLD_OPTS=--skip-grant-tablessystemctl start mysqld mysql mysql> ОБНОВЛЕНИЕ mysql.user SET аутентификация_строка = ПАРОЛЬ ('ENTER_NEW_PASSWORD') ГДЕ Пользователь = 'root' И Хост = 'localhost';mysql> УДАЛЕНИЕ ПРИВИЛЕГИЙ;mysql> выйти из systemctl остановить mysqldsystemctl unset-environment MYSQLD_OPTS systemctl запустить mysqld

mysql -u root@localhost -p

Я использую CentOS Linux версии 7.9.2009 (Core) — MySQL Ver 14.14 Distrib 5.7.36. MYSQLD_OPTS — это ключ.

      systemctl stop mysqld
systemctl set-environment MYSQLD_OPTS=--skip-grant-tables
systemctl start mysqld
mysql
    mysql> UPDATE mysql.user SET authentication_string = PASSWORD ('ENTER_NEW_PASSWORD') WHERE User = 'root' AND Host = 'localhost'; 
    mysql> FLUSH PRIVILEGES; 
    mysql> quit
systemctl stop mysqld
systemctl unset-environment MYSQLD_OPTS
systemctl start mysqld
# test #
mysql -u root@localhost -p

Надеюсь, это работает в вашей среде.

Другие вопросы по тегам