- Хостинг
- Услуги
- Помощь
- Акции
Помощь
Возможные проблемы с MySQL
Пароль к серверу баз данных утерян
В случае утери пароля создайте новый, выполнив следующие команды.
Остановите MySQL командой:
# service mysql stop - ОС Centos 6/Debian/Ubuntu # systemctl stop mariadb - ОС Centos 7
либо
# systemctl stop mysqld
Выполните запуск MySQL без учета прав доступа командой:
# mysqld_safe --skip-grant-tables &
Зайдите пользователем root командой:
# mysql -uroot
Измените пароль:
# use mysql; # UPDATE user SET Password=PASSWORD("mypassword") WHERE User='root'; # FLUSH PRIVILEGES;
Перезагрузите сервер баз данных с учетом прав доступа командой:
# service mysqld restart - ОС Centos 6/Debian/Ubuntu # systemctl restart mariadb - ОС Centos 7
либо
# systemctl restart mysqld
Выполните вход на MySQL сервер с новым паролем:
# mysql -uroot -p mypassword
Как просмотреть перечень ошибок MySQL сервера?
Для получения списка ошибок сервера баз данных просмотрите его лог-файлы. Для каждой ОС и файловой системы они располагаются в разных местах. Чтобы определить, где находятся лог-файлы MySQL на вашем сервере, подключитесь к серверу через консоль (например, Putty) и выполните команду, которая найдет файл my.cnf:
find / -name ‘my.cnf’
Результатом выполнения этой команды будут пути, по которым находится файл с этим именем.
Откройте любым редактором, например vi, найденный файл и найдите строки, начинающиеся с “log” или “log-error”
vi /etc/my.cnf
Откройте редактором лог-файл по найденному пути и просмотрите ошибки.
Если в файле my.cnf нет строк, указывающих на лог-файлы, это значит, что контроль ошибок (логирование) не включен. Включите эту функцию, добавив в my.cnf строку:
[mysqld] log-error=/var/log/mysql.log где mysql.log – новый файл, куда будут записываться ошибки.
Создайте его и наделите привилегиями командами:
touch /var/log/mysql.log chown mysql:mysql /var/log/mysql* chmod 640 /var/log/mysql*
При необходимости просмотр лог-файла можно запустить в фоновом режиме, чтобы параллельно запускать другие директивы. Для этого выполните команду:
tail –f /var/log/mysql.log &
Возможные ошибки в лог-файле и их решение
В лог-файле или в браузере выдается ошибка:
Сообщение говорит о том, что в одной из баз данных появилась поврежденная таблица, которую можно восстановить. Для этого подключитесь через консоль к серверу и выполните команду проверки всех таблиц на целостность:
mysqlcheck --repair --analyze --optimize --all-databases -u<USER> –p<PASSWORD>
В случае ошибки запустите несколько команд:
mysqlcheck --repair --all-databases -u<USER> –p<PASSWORD> mysqlcheck --analyze --all-databases -u<USER> –p<PASSWORD> mysqlcheck --optimize --all-databases -u<USER> –p<PASSWORD> где <USER> - пользователь базы данных, <PASSWORD> - пароль.
Если вы знаете, какая именно база данных повреждена, выполните команду:
mysqlcheck --repair --analyze --optimize <DB> -u<USER> -p<PASSWORD> где <USER> - пользователь базы данных, <PASSWORD> - пароль, <BD> - имя поврежденной базы.
Возникает ошибка вида:
Сообщение говорит о том, что запрещен доступ для пользователя user_xxx к базе данных или какой-то ее таблице.
Зайдите в ISPmanager, перейдите в раздел «Базы данных» - нажмите кнопку «Управление серверами БД», двойным кликом на имени сервера баз данных откройте его настройки.
Проверьте, что указанные данные в полях «Имя пользователя» и «Пароль» соответствуют тем, которые находятся в настройках сайта для подключения к этой БД.
На сайте возникает ошибка вида «Не удалось подключиться к базе данных»
Варианты сообщения об ошибке в случае неудачи при подключении к базе данных могут быть следующими:
Убедитесь, что сервер баз данных MySQL запущен. Зайдите в ISPmanager а раздел «Настройки» -> «Конфигурация ПО» и проверьте, что в списке возможностей присутствует строка «Сервер СУБД MySQL» и лампочка в этой строке зелёного цвета. Если лампочка выключена, то выделите строку и нажмите «Установить» на панели инструментов.
Если проблема не исчезла, то подключитесь к серверу через консоль и перезапустите MySQL командой:
/etc/init.d/mysqld restart - ОС Centos 6, Debian systemctl restart mysqld - ОС Centos 7
Проверьте, что сервер корректно запустился, выполнив команду, которая выводит список процессов MySQL:
ps axuw | grep mysql
Если в результате не вывелось ни одного процесса, то MySQL не запустился.
Не удается запустить MySQL
Попробуйте запустить MySQL через панель управления ISPmanager. Если не получилось, то подключитесь к серверу по SSH и попробуйте запустить MySQL через консоль командой:
/etc/init.d/mysqld restart - ОС Centos 6, Debian systemctl restart mariadb - ОС Centos 7
Если MySQL не запускается через консоль, вы получите сообщение об ошибке вида:
Проверьте свободное место на диске командой
df -h
Команда
du –hs /*
выведет, сколько места занимает каждая директория.
Если свободного места осталось мало, освободите его, очистив в первую очередь лог-файлы MySQL и других служб.
Перезапустите MySQL через консоль командами, приведенными выше.
Если проблема сохранилась, внимательно изучите записи в лог-файле MySQL, начинающиеся с [ERROR]. Например, запись Error while setting value '--read_buffer_size=256K' to 'sort_buffer_size' означает, что директива sort_buffer_size в конфигурационном файле MySQL, прописана не верно.