Почему не работает mysql
Перейти к содержимому

Почему не работает mysql

  • автор:

Устраняем типичные ошибки в MySQL

Статья расскажет, как определять проблемы и ошибки на сервере баз данных MySQL. Вы научитесь определять причины проблем и устранять их.

Обложка поста Устраняем типичные ошибки в MySQL

MySQL — система управления базами данных (СУБД) с открытым исходным кодом от компании Oracle. Она была разработана и оптимизирована специально для работы веб-приложений. MySQL является неотъемлемой частью таких веб-сервисов, как Facebook, Twitter, Wikipedia, YouTube и многих других.

Эта статья расскажет, как определять, с чем связаны частые ошибки на сервере MySQL, и устранять их.

Не удаётся подключиться к локальному серверу

Одной из распространённых ошибок подключения клиента к серверу является «ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)».

Устраняем типичные ошибки в MySQL 1

Эта ошибка означает, что на хосте не запущен сервер MySQL ( mysqld ) или вы указали неправильное имя файла сокета Unix или порт TCP/IP при попытке подключения.

Убедитесь, что сервер работает. Проверьте процесс с именем mysqld на хосте сервера, используя команды ps или grep, как показано ниже.

$ ps xa | grep mysqld | grep -v mysqld 

Если эти команды не показывают выходных данных, то сервер БД не работает. Поэтому клиент не может подключиться к нему. Чтобы запустить сервер, выполните команду systemctl.

$ sudo systemctl start mysql #Debian/Ubuntu $ sudo systemctl start mysqld #RHEL/CentOS/Fedora 

Чтобы проверить состояние службы MySQL, используйте следующую команду:

$ sudo systemctl status mysql #Debian/Ubuntu $ sudo systemctl status mysqld #RHEL/CentOS/Fedora 

Устраняем типичные ошибки в MySQL 2

Если в результате выполнения команды произошла ошибка службы MySQL, вы можете попробовать перезапустить службу и ещё раз проверить её состояние.

$ sudo systemctl restart mysql $ sudo systemctl status mysql 

Устраняем типичные ошибки в MySQL 3

Если сервер работает (как показано) и вы по-прежнему видите эту ошибку, вам следует проверить, не заблокирован ли порт TCP/IP брандмауэром или любой другой службой блокировки портов.

Для поиска порта, который прослушивается сервером, используйте команду netstat .

$ sudo netstat -tlpn | grep "mysql" 

Не удаётся подключиться к серверу MySQL

Ещё одна похожая и часто встречающаяся ошибка подключения — «(2003) Can’t connect to MySQL server on ‘server’ (10061)». Это означает, что в сетевом соединении было отказано.

Следует проверить, работает ли в системе сервер MySQL (смотрите выше) и на тот ли порт вы подключаетесь (как найти порт, можно посмотреть выше).

Похожие частые ошибки, с которыми вы можете столкнуться при попытке подключиться к серверу MySQL:

ERROR 2003: Cannot connect to MySQL server on 'host_name' (111) ERROR 2002: Cannot connect to local MySQL server through socket '/tmp/mysql.sock' (111) 

Ошибки запрета доступа в MySQL

В MySQL учётная запись (УЗ) определяется именем пользователя и клиентским хостом, с которого пользователь может подключиться. УЗ может также иметь данные для аутентификации (например, пароль).

Причин для запрета доступа может быть много. Одна из них связана с учётными записями MySQL, которые сервер разрешает использовать клиентским программам при подключении. Это означает, что имя пользователя, указанное в соединении, может не иметь прав доступа к базе данных.

В MySQL есть возможность создавать учётные записи, позволяющие пользователям клиентских программ подключаться к серверу и получать доступ к данным. Поэтому при ошибке доступа проверьте разрешение УЗ на подключение к серверу через клиентскую программу.

Увидеть разрешённые привилегии учётной записи можно, выполнив в консоли команду SHOW GRANTS
Входим в консоль (пример для Unix, для Windows консоль можно найти в стартовом меню):

В консоли вводим команду:

> SHOW GRANTS FOR 'tecmint'@'localhost'; 

Дать привилегии конкретному пользователю в БД по IP-адресу можно, используя следующие команды:

> grant all privileges on *.test_db to 'tecmint'@'192.168.0.100'; > flush privileges; 

Ошибки запрещённого доступа могут также возникнуть из-за проблем с подключением к MySQL (см. выше).

Потеря соединения с сервером MySQL

С этой ошибкой можно столкнуться по одной из следующих причин:

  • плохое сетевое соединение;
  • истекло время ожидания соединения;
  • размер BLOB больше, чем max_allowed_packet .

В первом случае убедитесь, что у вас стабильное сетевое подключение (особенно, если подключаетесь удалённо).

Если проблема с тайм-аутом соединения (особенно при первоначальном соединении MySQL с сервером), увеличьте значение параметра connect_timeout .

В случае с размером BLOB нужно установить более высокое значение для max_allowed_packet в файле конфигурации /etc/my.cnf в разделах [mysqld] или [client] как показано ниже.

[mysqld] connect_timeout=100 max_allowed_packet=500M 

Если файл конфигурации недоступен, это значение можно установить с помощью следующей команды.

> SET GLOBAL connect_timeout=100; > SET GLOBAL max_allowed_packet=524288000; 

Слишком много подключений

Эта ошибка означает, что все доступные соединения используются клиентскими программами. Количество соединений (по умолчанию 151) контролируется системной переменной max_connections . Устранить проблему можно, увеличив значение переменной в файле конфигурации /etc/my.cnf .

[mysqld] max_connections=1000 

Недостаточно памяти

Если такая ошибка возникла, это может означать, что в MySQL недостаточно памяти для хранения всего результата запроса.

Сначала нужно убедиться, что запрос правильный. Если это так, то нужно выполнить одно из следующих действий:

  • если клиент MySQL используется напрямую, запустите его с ключом —quick switch , чтобы отключить кешированные результаты;
  • если вы используете драйвер MyODBC, пользовательский интерфейс (UI) имеет расширенную вкладку с опциями. Отметьте галочкой «Do not cache result» (не кешировать результат).

Также может помочь MySQL Tuner. Это полезный скрипт, который подключается к работающему серверу MySQL и даёт рекомендации по настройке для более высокой производительности.

$ sudo apt-get install mysqltuner #Debian/Ubuntu $ sudo yum install mysqltuner #RHEL/CentOS/Fedora $ mysqltuner 

MySQL продолжает «падать»

Если такая проблема возникает, необходимо выяснить, заключается она в сервере или в клиенте. Обратите внимание, что многие сбои сервера вызваны повреждёнными файлами данных или индексными файлами.

Вы можете проверить состояние сервера, чтобы определить, как долго он работал.

$ sudo systemctl status mysql #Debian/Ubuntu $ sudo systemctl status mysqld #RHEL/CentOS/Fedora 

Чтобы узнать время безотказной работы сервера, запустите команду mysqladmin .

$ sudo mysqladmin version -p 

Устраняем типичные ошибки в MySQL 4

Кроме того, можно остановить сервер, сделать отладку MySQL и снова запустить службу. Для отображения статистики процессов MySQL во время выполнения других процессов откройте окно командной строки и введите следующее:

$ sudo mysqladmin -i 5 status 
$ sudo mysqladmin -i 5 -r status 

Заключение

Самое важное при диагностике — понять, что именно вызвало ошибку. Следующие шаги помогут вам в этом:

  • Первый и самый важный шаг — просмотреть журналы MySQL, которые хранятся в каталоге /var/log/mysql/ . Вы можете использовать утилиты командной строки вроде tail для чтения файлов журнала.
  • Если служба MySQL не запускается, проверьте её состояние с помощью systemctl . Или используйте команду journalctl (с флагом -xe ) в systemd.
  • Вы также можете проверить файл системного журнала (например, /var/log/messages ) на предмет обнаружения ошибок.
  • Попробуйте использовать такие инструменты, как Mytop, glances, top, ps или htop, чтобы проверить, какая программа использует весь ресурс процессора или блокирует машину. Они также помогут определить нехватку памяти, дискового пространства, файловых дескрипторов или какого-либо другого важного ресурса.
  • Если проблема в каком-либо процессе, можно попытаться его принудительно остановить, а затем запустить (при необходимости).
  • Если вы уверены, что проблемы именно на стороне сервера, можете выполнить команды: mysqladmin -u root ping или mysqladmin -u root processlist , чтобы получить от него ответ.
  • Если при подключении проблема не связана с сервером, проверьте, нормально ли работает клиент. Попробуйте получить какие-либо его выходные данные для устранения неполадок.

Решение проблем с MySQL

url image

Панель управления ISPmanager значительно упрощает управление СУБД и базами данных. На корректно работающем VDS создание базы займет не больше 5 минут.

В левом меню ISPmanager переходим в раздел Базы данных и нажимаем Создать базу данных.

Заполняем необходимые поля: имя БД, владелец БД (должен совпадать с владельцем сайта), сервер БД, кодировка БД, после чего создаем нового пользователя БД (либо выбираем существующего) и задаем пароль. Рекомендуем создавать сложные пароли.

Подробнее о создании Базы данных можно узнать в отдельной статье.

Теперь немного о тех местах, где могут возникнуть сложности.

Раздела «Базы данных» нет в меню

Есть 2 возможных варианта решения проблемы:

1. На сервере не запущен сервер баз данных MySQL

Проверить, активен ли сервис, вы можете в разделе Мониторинг и журналы панели ISPmanager. Попробуйте запустить или перезапустить службу mariadb (в ОС CentOS и Debian) или mysql (в ОС Ubuntu) с помощью кнопок в панели.

Если не помогло, перезапустите из консоли командой systemctl restart mysql для Ubuntu/Debian или командой systemctl restart mariadb для Centos 7.

2. Проблемы с подключением к базе данных

Перейдите в раздел Серверы БД, двойным кликом откройте свойства и нажмите Сохранить, ничего не меняя. Это принудительно обновит информацию о MySQL в панели управления. После этого обновите страницу — раздел Базы данных должен появиться.

Не подходит пароль к серверу баз данных

Случается так, что пароль root от MySQL-сервера утерян и надо установить новый. Делается следующим образом:

В Debian/Ubuntu:

# systemctl stop mysql

В CentOS 7:

# systemctl stop mariadb
# systemctl stop mysqld

Запускаем его без проверки таблиц прав:

# mysqld_safe --skip-grant-tables &

Заходим root’ом без пароля:

# mysql -uroot
# use mysql;
# UPDATE user SET Password=PASSWORD("new_password") WHERE User='root';
# UPDATE user SET authentication_string=PASSWORD("new_password") WHERE User='root';

Проверить версию MySQL можно с помощью команды:

# mysql –version
# mariadb –version

Продолжаем для всех версий

# FLUSH PRIVILEGES;

В Debian/Ubuntu:

# systemctl restart mysql

В Centos 7:

# systemctl restart mariadb
# systemctl restart mysqld

Авторизуемся как root с паролем new_password

# mysql -uroot -p

После вводим новый пароль.

Где искать ошибки?

MySQL — свободная реляционная система управления базами данных. Поиск проблем с сервисом лучше всего начинать с изучения логов. Для этого необходимо подключиться на сервер по SSH. Их расположение разнится в зависимости от используемой файловой системы. В конфигурационном файле my.cnf нужно искать строки log и log-error , чтобы определить, где находятся логи. Также можно воспользоваться mysql запросом:

show variables like '%log%';

Если логирование не включено, сделать это можно следующим образом. Зайти в файл:

/etc/my.cnf #Centos /etc/mysql/my.cnf #Debian /etc/mysql/mysql.conf.d/mysql.cnf #Ubuntu

Расположение конфигурационного файла может отличаться в зависимости от дистрибутива или CMS.

И в секцию [mysqld] добавить строку:

log-error=/var/log/mysql-errors.log

Выйти из файла, выполнить команды:

touch /var/log/mysql-errors.log chown mysql:mysql /var/log/mysql* chmod 640 /var/log/mysql*

Следующая команда включит просмотр созданного лога в режиме реального времени(tail –f) и оставить его в фоне(&) что бы можно было параллельно запускать другие команды:

tail –f /var/log/mysql-errors.log &

Данная команда позволяет проводить действия с БД или сайтов и одновременно смотреть на ошибки в логе. Чтобы остановить команду, нажмите Ctrl+C .

Перечень возможных проблем

Table ‘./site/content’ is marked as crashed and should be repaired

Такое сообщение может появиться в логах или на сайте. Оно означает, что таблица одной из БД «побилась» и требуется ее восстановление. Необходимо подключится на сервер по SSH, выполнить команду, которая проверит все базы данных на предмет ошибок

mysqlcheck —repair —analyze —optimize —all-databases -u –p

Если эта команда выдаёт ошибку, вставьте ключи раздельно:

mysqlcheck —repair —all-databases -u –p mysqlcheck —analyze —all-databases -u –p mysqlcheck —optimize —all-databases -u –p

  • — имя пользователя базы данных или root,
  • — заменить на пароль пользователя или root от MySQL (его можно посмотреть в ISPmanager — Базы данныхСерверы БД — двойной клик на сервер MySQL для просмотра пароля root (либо Базы данных — двойной клик на нужную базу данных и двойной клик на нужного пользователя).

Либо можно выполнить исправление конкретной базы данных:

mysqlcheck —repair —analyze —optimize -u -p

  • — имя пользователя базы данных или root,
  • — заменить на пароль пользователя или root от MySQL (его можно посмотреть в ISPmanager — Базы данныхСерверы БД — двойной клик на сервер MySQL для просмотра пароля root (либо Базы данных — двойной клик на нужную базу данных и двойной клик на нужного пользователя),
  • — база данных, которой требуется исправление.
mysql_connect() [function.mysql-connect]: Access denied for user ‘user_xxx’@’localhost’ (using password: YES)

Чаще всего связана с тем, что в настройках сайта указаны не верные данные (логин и/или пароль) для подключения к базе. Вариант решения: посмотреть в админ-панели сайта данные пользователя, пароль и название базы для подключения к базе. Зайти в ISPmanager — Базы данных — кликнуть на базу, затем на пользователя и в графу Пароль поставить пароль из админ-панели.

Может быть обратная ситуация, когда в панели ISPmanager указаны верные данные, а в конфигурационных файлах указаны неверные. В таком случае нужно править конфигурационные файлы, для CMS Bitrix, например, это /bitrix/.settings.php и /bitrix/php_interface/dbconn.php .

На сайте ошибка «Не удалось подключиться к базе данных»

В зависимости от используемой CMS эта ошибка может по-разному выглядеть:

Возникла ошибка при подключении сервера баз данных MySQL Can't connect to local MySQL server Error connect to mysql Unable to connect to the database:Could not connect to .

Подключится на сервер по SSH, выполнить:

systemctl restart mysql #перезапуск MySQL для Ubuntu, Debian systemctl restart mariadb #перезапуск MySQL для Centos 7 ps axuw | grep mysql #Эта команда должна вывести список процессов MySQL. #Если ничего не вывела – значит, MySQL не запустился.

Убедится что в ISPmanager, в разделе Службы лампочка mysql или mariadb горит.

В панели ISPmanager не удается создать базу данных, ошибка «Недостаточно данных»

Это значит у вас в ISPmanagerСерверы БД не создано ни одного сервера баз данных. Для создания нажмите на Серверы БД, далее на Создать сервер. В полях введите название сервера БД (например, MySQL), придумайте имя пользователя и пароль. Также в панели ISPmanager можно установить более 1 СУБД, альтернативные СУБД будут работать в контейнерах Docker.

MySQL не запускается ни в сервисах, ни через консоль

При запуске через консоль ошибки могут быть вида:

cant connect to local mysql server throught socket /var/run/mysqld/mysql.d.sock /etc/init.d/mysql start Starting MySQL database server: mysqld . . . . . . . . . . . . . . failed! /usr/local/etc/rc.d/mysql-server restart mysql not running? (check /var/db/mysql/peroksid.ispvds.com.pid). Starting mysql.

Проверить свободное место на диске:

df –h #общая информация du –hs /* #сколько занимает конкретные папки

Если не осталось места, удалить ненужные файлы.

Частая ситуация, когда логи сайтов разрастаются и места на диске свободного не остается, MySQL не может нормально работать (справедливо и для всех остальных сервисов – apache, exim и т.д.)

Снова пробуем перезапустить MySQL:

systemctl restart mysql #перезапуск MySQL для Ubuntu и Debian systemctl restart mariadb #перезапуск MySQL для Centos 7

Если проблема не со свободным местом, в логах должны появиться записи, похожие на эти:

130929 06:16:05 mysqld_safe Starting mysqld daemon with databases from /var/db/mysql 130929 6:16:05 [Warning] '--skip-locking' is deprecated and will be removed in a future release. Please use '--skip-external-locking' instead. 130929 6:16:05 [Warning] option 'max_allowed_packet': unsigned value 5824839680 adjusted to 1073741824 Unknown suffix '-' used for variable 'sort_buffer_size' (value '--read_buffer_size=256K') 130929 6:16:05 [Warning] option 'sort_buffer_size': unsigned value 0 adjusted to 32776 130929 6:16:05 [ERROR] /usr/local/libexec/mysqld: Error while setting value '--read_buffer_size=256K' to 'sort_buffer_size' 130929 6:16:05 [ERROR] Aborting

Смотрим записи с меткой [ERROR]. В логе выше ошибка «Error while setting value ‘—read_buffer_size=256K’ to ‘sort_buffer_size’» означает, что в конфиге my.cnf неверно прописана директива ‘sort_buffer_size. Этот случай приведен только для примера. В каждом конкретном случае лог будет различаться. Ошибки могут быть самые разные. Дальнейшие действия зависят от конкретной ошибки и требуют детального разбирательства.

Решение проблем с кодировками MySQL

Чтобы решить проблему — достаточно понять логику работы. MySQL, начиная с версии 4.1, знает, что такое кодировки и как с ними работать. Если до 4.0 она работала с байтами, то теперь работает с символами.

MySQL написали шведы, поэтому кодировкой по умолчанию (сразу после установки) является latin1, а «сравнение» (последовательность букв, алфавит; влияет на сортировки) — latin1_swedish.

Итак, где кодировки указываются.

1. Кодировка конкретной базы/таблицы/столбца. Это кодировка, в которой MySQL будет хранить данные. Например, если у вас данные в cp1251, то будет большой ошибкой указывать для хранения кодировку latin1. В ней нет соответствий для русских символов, все они будут заменены на вопросы.

Кодировку хранения можно задать, например, так.В терминале открываем MySQL с помощью команды mysql или mysql -u имя_пользователя -p , вводим пароль, после чего пишем в консоли MySQL:

create database `имя базы` default charset cp1251;

Если кодировка не указана — будет использовано значение параметра default-character-set из файла /etc/my.cnf (либо latin1, если параметра нет). Кстати, именно этот параметр редактирует ISPmanager в свойствах сервера баз данных.

2. Кодировка соединения. Это кодировка, в которой клиент (скрипт пользователя, форум, mysql-клиент и т.д.) общается с MySQL. Когда клиент подсоединяется к серверу, тот ему сообщает значение параметра default-character-set . Таким образом они договариваются о том, в какой кодировке будут общаться. Кодировку общения можно изменить запросом (его лучше выполнять сразу после соединения с сервером):

set names cp1251

где вместо cp1251 вы можете указать нужную кодировку.

Кстати, множество современных правильных скриптов именно это и делают.

Одна сложность: есть ряд кривых клиентов, которые всего этого не понимают и общаются в какой-то своей кодировке. Персонально для них можно написать в /etc/my.cnf , секцию [mysqld] :

[mysqld] set init_connect="set names utf8"

где вместо utf8 вы можете указать нужную кодировку.

Что это означает? Сразу после подсоединения любого клиента, MySQL выполнит запрос set names utf8 , как будто смену кодировки общения запросил сам клиент.

Это всё, что нужно знать для решения любой проблемы с кодировками в MySQL. Осталось несколько уточнений (самое интересное):

phpMyAdmin, mysqldump — обычные клиенты, на них действуют те же самые правила. Одно «но»: на все PHP-скрипты (включая phpMyAdmin) действует default-character-set из секции [client] в my.cnf . Для mysqldump есть отдельная секция [mysqldump] . Часто бывает так, что команда mysqldump «не видит» секцию [mysqldump] , поэтому в случаях, когда необходимо делать дамп БД в определенной кодировке, лучше использовать mysqldump с параметром —default-character-set=utf8 (вместо utf8 укажите нужную кодировку). ISPmanager прописывает default-character-set во все секции.

Дамп базы — это обычный набор MySQL-команд. Если вы в самое его начало напишете set names cp1251; , то эта команда тоже выполнится, и MySQL будет считать, что дальше все данные в дампе идут в кодировке cp1251.

Кодировки в MySQL-командах пишутся без кавычек и без «-» (дефисов). Популярные в России кодировки: utf8, cp866 (DOS), cp1251 (windows-1251), koi8r, utf8mb4.

И, наконец, пара советов:

  • Если вы в этом новичок, постарайтесь свести всё к одной кодировке. Пусть у вас дамп и default-character-set (напомню, влияет на кодировку хранилища при создании таблиц и на кодировку общения с клиентом) будет в одной кодировке. Это избавит от путаницы и решит 90% проблем.
  • Если есть возможность — используйте консольную утилиту mysqldump. phpMyAdmin — это дополнительная прослойка, которая лишь добавляет свою путаницу и свои баги.

Русификация MySQL

Чтобы русифицировать базу данных MySQL, не вдаваясь в подробности почему и как, проделайте следующие процедуры:

1. В конфигурационном файле /etc/my.cnf добавьте следующие строчки:

Под разделом [client]:

default-character-set=cp1251

Под разделом [mysqld]:

character-set-server=cp1251 collation-server=cp1251_general_ci init-connect = "set names cp1251"

2. После этого перезапустите базу MySQL или весь ваш виртуальный сервер (из ISPmanager или консоли).

Помощь

В случае утери пароля создайте новый, выполнив следующие команды.

Остановите 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 –p

В случае ошибки запустите несколько команд:

mysqlcheck --repair --all-databases -u –p mysqlcheck --analyze --all-databases -u –p mysqlcheck --optimize --all-databases -u –p где - пользователь базы данных, - пароль.

Если вы знаете, какая именно база данных повреждена, выполните команду:

mysqlcheck --repair --analyze --optimize -u -p где - пользователь базы данных, - пароль, - имя поврежденной базы.
Возникает ошибка вида:

Сообщение говорит о том, что запрещен доступ для пользователя 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, прописана не верно.

Установился но не запускается MySQL?

Делаю всё по инструкции ( https://zen.yandex.ru/media/oleglav/ustanovka-vebs. ) установил apache, php, phmmyadmin, но с MySQL какая то шляпа.

[mysqld] sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES basedir="C:/Server/data/DB/" datadir="C:/Server/data/DB/data/" default_authentication_plugin=mysql_native_password port = 3306

Пробовал и без строчки порт

В сети есть одно из решений это прописать следующее в CMD

mysqld —initialize

net start mysql

55555555555555555555555555.jpg

Но результат тот же

Через СЛУЖБЫ пытался запустить MySQL но выдаёт ошибку

the MySQL service on local computer started and then stopped. Some services stop automatically if they are not in use by other services or programs.

1111111111111111111111111111111111.jpg

И выбивает ошибку :

  • Вопрос задан более трёх лет назад
  • 3086 просмотров

17 комментариев

Простой 17 комментариев

Compolomus

Дмитрий @Compolomus

Зачем ставить что то руками, когда можно скачать опенсервер , там и выбор версий и разные серверы и прочее
https://ospanel.io/

Compolomus

Дмитрий @Compolomus

Ну а вообще гляньте диспетчер задач и если что то там запущено убейте и попробуйте ещё раз запустить, ну и как вариант ещё винду перезагрузить

flapflapjack

Талян @flapflapjack
Дмитрий, openserver, который весит 100500 гигов, ради одного mylsq? Отлично.

flapflapjack

Талян @flapflapjack

что показывает
netstat -a | find -i 3306

что показывает
ipconfig

и что внутри my.cnf?

foowee800

Артём @foowee800 Автор вопроса

ФАЙЛА my.cnf В МОИХ ФАЙЛАХ нет.

flapflapjack

Талян @flapflapjack
Артём, ПОНЯЛ.
НУ ТОГДА ЖАЛЬ, ЧТО В ВАШИХ ФАЙЛАХ НЕТ.
Может тогда есть my.ini?

foowee800

Артём @foowee800 Автор вопроса

[mysqld] sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES basedir="C:/Server/data/DB/" datadir="C:/Server/data/DB/data/" default_authentication_plugin=mysql_native_password port = 3306

flapflapjack

Талян @flapflapjack
Артём, а вы как mysql ставили?

Compolomus

Дмитрий @Compolomus

Талян, это в разы быстрее, не знаю в чем проблема скачать и распаковать, интернет или место свободное? Плюс есть минимальная сборка, которая почти не весит

foowee800

Артём @foowee800 Автор вопроса

Талян, по инструкции :
Установка и настройка MySQL:

В каталог bin распаковываем файлы MySQL (из архива mysql-8.0.16-winx64.zip). Переименовываем папку mysql-8.0.16-winx64 переименовать в mysql-8.0. Заходим в эту папку и создаём там файл my.ini Открываем этот файл любым текстовым редактором.

Добавьте туда следующие строки:

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
datadir=»C:/Server/data/DB/data/» default_authentication_plugin=mysql_native_password

Выполняем инициализацию и установку:

$ C:\Server\bin\mysql-8.0\bin\mysqld —initialize-insecure —user=root
$ C:\Server\bin\mysql-8.0\bin\mysqld —install
$ net start mysql

В каталоге C:\Server\data\DB\data\ должны появиться автоматически сгенерированные файлы и служба MySQL будет запускаться при каждом запуске Windows.

Compolomus

Дмитрий @Compolomus

Талян, по вашему лучше неделю потратить чтоб поднять мускул, плюс если какие проблемы помочь будет куда больше народу, чем заниматься этим ананизмом в винде

foowee800

Артём @foowee800 Автор вопроса

Дмитрий, ))) Я скачиваю как вы посоветовали опенсервер 1.5 гб, там скорость минимальная, но пока надеюсь что кто-нибудь поможет

flapflapjack

Талян @flapflapjack

Дмитрий,
неделю потратить чтоб поднять мускул
ы.
setup.msi->далее->далее->готово.

плюс если какие проблемы помочь будет куда больше народу

Понятно. Клуб особенных.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *