Примерно каждый месяц я получаю следующую ошибку:
Ошибка MySQL: «Доступ запрещен для пользователя root» @ «localhost»
я перехожу к этот вопрос StackOverflow как бороться с ошибкой и
затем я возвращаюсь к тому, что я делал.
Решение обычно включает в себя выполнение оператора SQL из mysql
программа началась с корень
Unix-аккаунт:
ИЗМЕНИТЬ ПОЛЬЗОВАТЕЛЯ 'root'@'localhost' ИДЕНТИФИЦИРОВАННЫЙ С помощью mysql_native_password BY 'root';
Когда ты ИЗМЕНИТЬ ПОЛЬЗОВАТЕЛЯ
в MySQL он должен оставаться таким, пока вы не запустите другой ИЗМЕНИТЬ ПОЛЬЗОВАТЕЛЯ
команда.
В Ubuntu проблема возвращается через некоторое время. Однажды я попытаюсь подключиться к MySQL и замечу, что пароль больше не работает. Я не писал никаких сценариев, о которых забыл. Это произойдет при новой установке Ubuntu, будь то с компакт-диска, Vagrantfile или экземпляра AWS. Иногда какой бы сценарий ни отвечал за это, он так сильно все испортит, что ИЗМЕНИТЬ ПОЛЬЗОВАТЕЛЯ
заявление выше больше не восстанавливается после проблемы.
Ничего нет ни в одном из /и т.д./хрон.*
каталоги, которые должны вызвать это.
В /etc/mysql/* нет ничего, что явно могло бы вызвать это.
Я проверил всю файловую систему и обнаружил, что нет несжатых, незашифрованных скриптов, которые запускаются ИЗМЕНИТЬ ПОЛЬЗОВАТЕЛЯ
запросы для осуществления реверсии.
Единственное, что может иметь значение в /var/log, это автоматические обновления
, но я не понимаю, как обновление MySQL должно каждый раз сбрасывать все его настройки аутентификации.
В качестве обходного пути я прибегнул к грубой силе, чтобы остановить секретный скрипт Canonical:
chattr +i /var/lib/mysql/mysql/user.MYD
Это делает невозможным запуск ИЗМЕНИТЬ ПОЛЬЗОВАТЕЛЯ
команды, поэтому любая работа Canonical, которая делает это, должна завершиться неудачно. Но это также означает, что я должен помнить, что сделал это, если мне когда-нибудь понадобится внести законные изменения в эту таблицу.
Кто-нибудь знает, какая часть программного обеспечения в Ubuntu отвечает за такое поведение?