Прежде чем что-то испортить, при входе в систему использую $ mysql -u root -p
и покажу базы данных:
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| game_data |
| test |
+--------------------+
Затем я попытался создать нового пользователя и заметил, что что-то не так с привилегиями.
Поэтому я удалил новых пользователей, и, думаю, случайно удалил «root» и «Admin».
Затем я снова пытаюсь создать «root», но при попытке предоставить все привилегии выдается ошибка «Отказано в доступе».
mysql> CREATE USER 'root'@'localhost' IDENTIFIED BY 'password';
mysql> grant all privileges on *.* to 'root'@'localhost' identified by 'password' with grant option;
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Если я снова войду в MySQL $ mysql -u root -p
и покажу базы данных,
+--------------------+
| Database |
+--------------------+
| information_schema |
+--------------------+
Все остальные базы данных исчезли.
Как мне исправить MySQL сейчас?
Я не могу найти базу данных «mysql», не могу создать базу данных, создать пользователя, все, что я пытаюсь сделать, приведет к ошибке.
ОШИБКА 1045 (28000): доступ запрещен для пользователя 'root' @ 'localhost' (с использованием пароля: ДА).
Должен ли я переустановить MySQL с помощью MacPorts? Если переустановить, я потеряю базу данных game_data
, верно?
источник
-p
паролем. Я знаю, это глупо, но может кому-то помочь.Ответы:
Следуйте инструкциям ниже.
Запустите экземпляр или демон сервера MySQL с
--skip-grant-tables
параметром (настройка безопасности).Выполните эти заявления.
Если вы сталкиваетесь с неизвестным полем Ошибка пароля выше, используйте:
Наконец, перезапустите экземпляр / демон без
--skip-grant-tables
опции.Теперь вы сможете подключиться с новым паролем.
Введите пароль:
my_password
Исправлена ошибка в MySQL «Невозможно заблокировать ibdata1»
источник
Ничто из вышеперечисленного не помогло мне. Я обнаружил, что мне нужно очистить метод плагина. В 5.6 я мог сделать:
В 5.7 я обнаружил, что мне нужно:
Согласно документации, с плагином, установленным в пустую строку, он должен был по умолчанию иметь значение mysql_native_password, но может быть запутан пустым хэшем пароля. Для большего количества нюансов вы можете прочитать документацию здесь: https://dev.mysql.com/doc/refman/5.7/en/native-authentication-plugin.html
источник
set plugin='mysql_native_password'
сделал это для меня, спасибо! Для справки: dev.mysql.com/doc/refman/5.7/en/...Также убедитесь, что нужная запись в таблице
user
имеет пустоеplugin
поле (может быть, например,"unix_socket"
).Начиная с версии 5.5.7, mysql поддерживает различные плагины авторизации https://dev.mysql.com/doc/refman/5.6/en/authentication-plugins.html.
Так что, если у вас есть непустое
plugin
поле, пароль будет проигнорирован, и в журнале ошибок mysql появится предупреждение (для меня это/var/log/mysql/error.log
):[Warning] 'user' entry 'root@localhost' has both a password and an authentication plugin specified. The password will be ignored.
источник
plugin
офmysql_native_password
.Вы можете увидеть что-то вроде этого;
Обеспечение безопасности развертывания сервера MySQL.
Если вы видите, это говорит
Посмотрите последние 10 минут этого видео , оно научит вас, как вы это делаете.
источник
Попробуй:
источник
--no-defaults --force
делают переключатели? В противном случае это дубликат VLQ вышеупомянутого принятого ответа.ERROR 1054 (42S22): Unknown column 'Password' in 'field list'
В моем случае у меня была повреждена база данных, после перезапуска mysql в Debian вход в систему root был без пароля. Решение было таким:
В некоторых других ответах также упоминается плагин native_password, но это то, как вы можете сделать это без особых сложностей. Вот как это должно быть изменено.
источник