Вопрос или проблема
Я только что развернул сервер CentOS 6. Я установил на него mysql
yum install mysql-server
И после того как я запустил службу MySQL, она выдала в STDOUT кучу информации о необходимости смены пароля для моего корневого аккаунта. Я выполнил
/usr/bin/mysql_secure_installation
и следовал подсказкам.
Затем я понял, что версия MySQL, предлагаемая в репозиториях CentOS, сильно устарела, и я удалил её
service mysqld stop
yum remove mysql-*
Я скачал последнюю версию RPM MySQL Community Server с сайта Oracle и использовал
yum localinstall mysql-community-server-5.7.10-1.el6.x86_64.rpm
yum install mysql-community-server
Но когда я его запустил, я не получил никаких сообщений в STDOUT о необходимости установки пароля для моего корневого пользователя, и когда я снова запустил mysql_secure_installation, он не принял мои данные, как с пустым паролем, так и с паролем, который я установил ранее:
Ошибка: Доступ запрещен для пользователя 'root'@'localhost' (используя пароль: НЕТ)
Ошибка: Доступ запрещен для пользователя 'root'@'localhost' (используя пароль: ДА)
Я пробовал удалить mysql-community-server, вручную удалить /var/lib/mysql, вручную удалить /usr/share/mysql, а затем переустановить mysql-server, оригинальный пакет, который я установил, но я все равно не могу войти обратно в MySQL.
Я также пробовал использовать
mysql_safe --init-file=/home/resetPassword.sql
с файлом, который содержал команды для сброса аккаунта моего корневого пользователя и даже попытался создать новый корневой аккаунт, но это просто сбросило мою SSH-сессию и не сбросило мой пароль.
Я вошел как root, поэтому моя неприменимость sudo не должна иметь значения.
У меня нет никаких данных в базе данных, которые мне нужно сохранять, я просто хотел бы иметь возможность удалить её полностью и начать с нуля.
Спасибо,
YM
Окей, удалось решить эту проблему, хотя я не совсем уверен, как.
Вещи, которые я узнал:
-
Убедитесь, что все зависимости — последней версии, не запускайте что-то на 5.7.x и что-то еще на 5.5.x
-
Использование sudo для yum важно, даже когда вы вошли как root, поскольку в противном случае, похоже, права на файлы не настраиваются корректно
-
Удаление содержимого /var/lib/mysql и выполнение
sudo mysqld --initialize
сбрасывает всё -
Когда сервер MySQL переинициализируется, он случайным образом генерирует временный пароль для корневого пользователя, который сохраняется в лог-файл. Я не уверен, почему при первой установке пароль не был установлен, возможно, это связано с тем, что я использовал более старую версию MySQL Server
-
Удаление
/usr/share/mysql
— плохая идея, так как файл errmsg.sys, находящийся там, по какой-то причине трудно переустановить. -
Когда вы пытаетесь сбросить пароль для корневого пользователя, используя –init-file, убедитесь, что установленный вами пароль соответствует текущим требованиям к политике паролей.
Надеюсь, что-то из этого списка поможет кому-то другому.
Ответ или решение
Полный сброс MySQL на сервере CentOS 6
Введение
При установке и использовании MySQL на сервере CentOS 6 могут возникнуть проблемы с доступом к базе данных, особенно если версии MySQL различаются, или если сервер перезапускается с ранее настроенными пользователями и паролями. В данной статье мы подробно рассмотрим шаги, необходимые для полного сброса MySQL и устранения проблем, связанных с доступом к root-пользователю.
Запуск MySQL и Первоначальная Установка
После установки MySQL сервер может требовать изменения пароля для пользователя root
. Это поведение встречается как в установленных версиях MySQL, так и в обновленных версиях. Однако если по какой-либо причине вы решили удалить старую версию и установить новую (например, MySQL Community Server), это может привести к потерям настроек и данных.
Процедура Удаления MySQL
Удаление MySQL требуется при необходимости полной перезагрузки сервера базы данных. Если вы хотите удалить MySQL, выполните следующие команды:
service mysqld stop
yum remove mysql-*
Эти команды останавливают сервер и удаляют все установленные пакеты MySQL.
Удаление Данных и Сброс Настроек
Чтобы полностью сбросить MySQL и удалить все данные, выполните дополнительные шаги:
-
Удалите содержимое каталога данных MySQL:
rm -rf /var/lib/mysql/*
-
Иннициализируйте MySQL заново, используя следующую команду:
mysqld --initialize
Эта команда создаст новую базу данных и сгенерирует временный пароль для root-пользователя, который можно найти в лог-файле MySQL.
Установка Обновленной Версии MySQL
После удаления старых версий и сброса всех данных установите обновленную версию MySQL:
yum localinstall mysql-community-server-5.7.10-1.el6.x86_64.rpm
yum install mysql-community-server
Помощь Файла Запуска
Если вы все еще не можете получить доступ к MySQL, вы можете использовать параметр --init-file
, чтобы сбросить пароль пользователя root через скрипт:
-
Создайте файл
resetPassword.sql
со следующими командами:ALTER USER 'root'@'localhost' IDENTIFIED BY 'новыйПароль';
-
Запустите MySQL в безопаcном режиме:
mysql_safe --init-file=/home/resetPassword.sql
Рекомендации и Советы
-
Версии Соответствия: Убедитесь, что все зависимости MySQL соответствуют одной версии. Несоответствие версий может привести к ошибкам и проблемам с доступом.
-
Запуск Суперпользователя: Даже если вы работаете под пользователем root, используйте
sudo
сyum
для установки пакетов. Это поможет избежать проблем с правами доступа. -
Рекомендации по Паролям: При сбросе пароля убедитесь, что он соответствует стандартам безопасности, применимым к вашей версии MySQL.
-
Логи и Сообщения: Всегда проверяйте лог-файлы MySQL для получения информации о том, что происходит во время установки или инициализации.
Заключение
Сброс MySQL и установка обновлённой версии может быть сложной задачей, но следуя приведенным выше рекомендациям, вы сможете успешно восстановить доступ к вашему серверу. Ваши действия помогут избежать распространённых ошибок и повысят уровень безопасности вашего MySQL-сервера.