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

3 ответа3

13

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

Тем не менее, именно так я могу сбросить root пароли MySQL на серверах 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 вы его изменили.

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 и затем сброс пароля сработал.

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'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .