MySQL: не может получить доступ к учетной записи root - PullRequest
15 голосов
/ 13 марта 2009

Я использую MySQL 5.x на своем локальном компьютере с Windows и, используя администратор MySQL, не могу подключиться к базам данных, которые я создал, используя учетную запись root. Я получаю ошибку:

Ошибка MySQL № 1045 Доступ запрещен для пользователя 'root' @ 'localhost' (используя пароль: ДА)

Не могу вспомнить изменение учетных данных корневой учетной записи, но я знаю, что пытался предоставить другим компьютерам в локальной сети доступ к БД, добавив их IP-адреса. Одна вещь, которую я сделал для одного из IP-адресов, заключалась в том, чтобы указать доступ к учетной записи 'root' вместо root, то есть я заключил в корень символы одинарных кавычек. Все с помощью администратора MySQL. Может ли это быть причиной того, что я не могу войти в систему, используя root?

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

См. Эти вопросы

Ответы [ 4 ]

18 голосов
/ 09 декабря 2010

Вы можете использовать файлы инициализации. Обратитесь к официальной документации MySQL по Как сбросить пароль root (включая комментарии для альтернативных решений).

Таким образом, в основном используя файлы инициализации, вы можете добавить любые запросы SQL, которые вам нужны для фиксации доступа (например, GRAND, CREATE, FLUSH PRIVILEGES и т. Д.), В файл инициализации (любой файл). *

Вот мой пример восстановления учетной записи root:

echo "CREATE USER 'root'@'localhost' IDENTIFIED BY 'root';" > your_init_file.sql
echo "GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;" >> your_init_file.sql 
echo "FLUSH PRIVILEGES;" >> your_init_file.sql

и после того, как вы создали свой файл, вы можете запустить:

killall mysqld
mysqld_safe --init-file=$PWD/your_init_file.sql

затем, чтобы проверить, сработало ли это, нажмите Ctrl + Z и введите: bg, чтобы запустить процесс с переднего плана на задний план, а затем проверьте свой доступ с помощью:

mysql -u root -proot
mysql> show grants;
+-------------------------------------------------------------------------------------------------------------+
| Grants for root@localhost                                                                                   |
+-------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B' |

Смотри также:

4 голосов
/ 11 сентября 2017

Это сработало для меня:

https://blog.dotkam.com/2007/04/10/mysql-reset-lost-root-password/

Шаг 1. Остановите демон MySQL, если он в данный момент работает

  ps -ef | grep mysql      - checks if mysql/mysqld is one of the running processes.

  pkill mysqld             - kills the daemon, if it is running.

Шаг 2. Запуск демона безопасного MySQL с пропуском таблиц грантов

  mysqld_safe --skip-grant-tables &

  mysql -u root mysql

Шаг 3: Войдите в MySQL как пользователь root без пароля

  mysql -u root mysql

Шаг 4: Запустите запрос UPDATE, чтобы сбросить пароль root

  UPDATE user SET password=PASSWORD("value=42") WHERE user="root";
  FLUSH PRIVILEGES;

В MySQL 5.7 поле «пароль» было удалено, теперь имя поля «строка_ аутентификации»:

  UPDATE user SET authentication_string=PASSWORD("42") WHERE 
  user="root";
  FLUSH PRIVILEGES;

Шаг 5: Остановить безопасный демон MySQL

Шаг 6: запустить демон MySQL

1 голос
/ 20 марта 2013

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

Мы можем проверить это с помощью команды ls -l /var/lib/mysql, если у пользователя mysql нет прав на чтение или запись в некоторые файлы или каталоги, это может вызвать проблемы. Мы можем изменить владельца или режим этих файлов или каталогов с помощью команд chown/chmod.

После этих изменений перезапустите демон mysqld и войдите в систему как root с помощью команды:

mysql -u root

Затем смените пароли или создайте других пользователей для входа в mysql.

НТН

1 голос
/ 13 марта 2009

В руководстве MySQL есть раздел о , как сбросить пароль root , который решит вашу проблему.

...