Возможные проблемы с MySQL | ISPserver Перейти к основному содержанию

Помощь

Возможные проблемы с 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, прописана не верно.

Назад к категории