Проблемы сброса пароля MySQL в экземпляре Amazon EC2 "Amazon Linux"

Боролся с перезагрузкой root пароль для MySQL на Amazon Linux, размещенный на EC2. Версия:

mysql Ver 14.14 Distrib 5.5.42, для Linux (x86_64) с использованием readline 5.1

При установке я решил, что будет разумно сменить пароль root на что-нибудь безопасное! Ура! Безопасность! За исключением того, что он не позволит мне войти с этим паролем сейчас, поэтому я пытаюсь сбросить его.

Я следовал инструкциям здесь, но это не работает. Я думал, что это могут быть разрешения на файл инициализации, но они установлены в rwxrwxrwt так наверное нет, а может быть? Даже не уверен, какие файлы журналов нужно проверить, чтобы увидеть, где идет ошибка.

Итак, как я могу успешно сбросить пароль MySQL на EC2 Amazon Linux? Связан ли набор инструкций с предполагаемым, или Amazon делает что-то по-другому?

Также я спросил об этом на ServerFault, но не было "ясно", о чем я спрашивал. Я бы сказал, что здесь тоже не по теме, но...

3 ответа

Решение

Проверка выхода из работы mysqld_safeэто любезно указывает на то, что /var/log/mysqld, Известная часть это говорит:

150830 6:32:18 [ERROR] /usr/libexec/mysqld: File '/home/ec2-user/mysql-init' not found (Errcode: 2)

Оказывается, что root не может получить доступ к этому местоположению. Переместил файл в /tmp/mysql-init и тогда сброс пароля сработал.

В Amazon Linux, размещенном на экземпляре EC2, нет ничего волшебного. Причина, по которой все используют какой-то вариант Linux, заключается в том, что Linux - это Linux.

Тем не менее, это, как я сбрасываю MySQL root пароли на серверах Ubuntu, если я столкнусь с такими проблемами. Общие концепции должны работать для любой версии Linux с небольшими изменениями, чтобы справиться со спецификой.

Во-первых, я бы остановил MySQL вот так; это команда, которую я бы использовал в Ubuntu:

sudo service mysql stop

Сделав это, запустите MySQL снова вручную с --skip-grant-tables вариант; это считается рискованным для некоторых сред, поскольку в основном запускает MySQL со всеми разрешениями / разрешениями, предоставленными всем в мире. Но это то, что вам нужно сделать, чтобы исправить root вопрос:

sudo mysqld --skip-grant-tables &

В некоторых случаях вам может потребоваться ввести полный путь к mysqld или же mysqld_safe чтобы это работало так:

sudo /usr/bin/mysqld_safe --skip-grant-tables &

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

mysql -u root mysql

Это в основном входит в систему как пользователь root в базу данных mysql который управляет всеми административными аспектами доступа MySQL.

Теперь запустите этот запрос; конечно изменить YOURNEWPASSWORD соответствовать новому желаемому паролю, который вы хотите назначить root пользователь:

UPDATE user SET Password=PASSWORD('YOURNEWPASSWORD') WHERE user='root'; FLUSH PRIVILEGES; exit;

Как вы можете видеть, это составная команда, которая выполняет UPDATE, затем FLUSH PRIVILEGES перезагрузить таблицы грантов MYSQL и exit чтобы вытащить вас из MySQL.

С этим вы все должны быть настроены и root должен сбросить пароль, чтобы соответствовать YOURNEWPASSWORD Вы изменили это на.

Я боролся с этим пару часов, и я только что нашел решение.

В моем случае я пытался установить пароль для root пользователь. Я видел это, когда я побежал select * from mysql.user; пользователь root имел как plugin Значение socket, Я просто заставил изменения использовать mysql_native_password Плагин, выполнив эту команду:

ALTER USER 'root'@'localhost' identified with mysql_native_password by 'password_goes_here'

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