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

2

Боролся с перезагрузкой 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 , но не было «ясно», о чем я спрашивал. Я бы сказал, что это тоже не по теме, но ...

brandonscript
источник
Вы говорите «Amazon EC2 Linux», но знаете ли вы, что это за дистрибутив? CentOS? Красная шляпа? Ubuntu? Debian?
JakeGould
2
Это Amazon Linux - экземпляр EC2.
brandonscript
Спасибо напоминая мне об этом «У Amazon есть собственный дистрибутив Linux, основанный на Red Hat Enterprise Linux и более поздних версиях linux-xen-kernel».
JakeGould

Ответы:

13

В 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 Вы изменили это на.

JakeGould
источник
У него не установлен пароль по умолчанию. Чтобы установить его, вы запустите службу MySQL, а затем запустите #sudo mysql_secure_installation.
Codex73
1

Проверка выхода из работы 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 и тогда сброс пароля сработал.

brandonscript
источник
Рад, что это сработало. Помните, что в журналах всегда выявляются основные проблемы, даже если они на первый взгляд не ясны на 100%. И, как я уже сказал в своем ответе, Linux - это Linux, независимо от дистрибутива; поэтому любые общие инструкции о том, как сбросить пароли MySQL, должны хорошо работать в Amazon Linux, Ubuntu, Debian, CentOS, RedHat и т.д. сам.
JakeGould
1
Да - именно поэтому я сходил с ума по этому поводу. И я не мог видеть, где это регистрировалось (способ, которым я выполнял команды, не распечатывал всю консоль), таким образом, я становился вдвойне безумным!
brandonscript
0

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

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

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

Reinherd
источник