какая будет ошибка если не будет запущен субд mysql а требуется организовать доступ к бд
Что делать при ошибках базы данных MySQL
Здравствуйте!
Собственно, ниже рассмотрим, что можно сделать, если появилась-таки ошибка, что база данных недоступна (или не может быть прочитана, или. ). Заранее скажу, что подобные ошибки далеко не всегда означает полную утрату БД, во многих случаях удается сравнительно-легко восстановить работоспособность сайта (интернет-магазина, и пр.).
Несколько рекомендаций, если возникла ошибка с MySQL БД
👉 Совет 1
Если вы накануне никак не взаимодействовали с БД (например, не переносили сайт с одного сервера на другой), и всё работало в штатном режиме — возможно, что ошибка недоступности к базе связана с возникшими проблемами на стороне хостинг-компании (⇒ запрос в поддержку. ).
Кроме этого, обратите внимание на конфигурационные файлы CMS, отвечающие за доступ к базе данных. Возможно, что с самой БД всё в порядке, а вот путь (или пароль) для доступа к ней указан некорректно.
Параметры MySQL — эту информацию можно получить у хостинг-провайдера
👉 Совет 2
Еще одна довольно очевидная рекомендация — проверить наличие бэкапа (резервной копии). Даже если вы самостоятельно не делали его — возможно его сделал хостинг-провайдер.
Кроме этого, как только возникла какая-то ошибка с БД — я бы порекомендовал в любом случае сделать ее копию (если это возможно). Вдруг диск начал «сыпаться», и в дальнейшем даже текущая БД исчезнет «на совсем».
PHP My Admin — экспорт базы данных
👉 Совет 3
Далее следует попробовать провести восстановление БД встроенными средствами MySQL.
Итак, что нужно сделать в случае, если БД MySQL перестала запускаться:
my.cnf — это файл конфигурации MySQL. Чтобы найти файл, используйте команду: locate my.cnf
В Linux’e обычно он находится по такому пути:
Перезапуск MySQL подобным образом не ведет к запуску всех связанных процессов и в некоторых случаях позволяет открыть старую БД.
С помощью указанных команд мы пробуем создать дамп БД, затем импортировать его в новую базу, которую далее можно будет открыть обычным способом.
При нормальном запуске БД система пытается запустить все процессы, включая и те, которые были завершены аварийно (например, из-за проблем с электричеством).
Благодаря опции innodb_force_recovery можно отключить некоторые параметры, которые мешают штатному запуску БД.
Цифры означают следующее:
👉 Совет 4 (альтернативный способ восстановления БД)
Описанный выше способ довольно эффективен, хотя, к сожалению, может оказаться сложным для некоторых пользователей. Но работа с любым форматом базы данных — это всегда непросто.
Recovery Toolbox for MySQL — скриншот главного окна программы
Пожалуй, это самый простой и эффективный способ восстановления БД MySQL, именно то, что нужно большинству начинающих пользователей. 👌
Вариантов, собственно, немного — разобраться со всем самому, потратив несколько дней, или в течение часа восстановить базу данных, продолжить работу и избежать убытков.
Стоит сразу отметить, что Recovery Toolbox for MySQL работает только с копией базы, поэтому никогда не испортит то, что осталось от старой БД. Почувствуйте разницу, копаясь в конфигах и настройках «боевого» сервера, и каждую минуту опасаясь сделать что-то неправильно, что приведет к полному уничтожению того, что еще осталось.
👉 Как восстановить базу с помощью Recovery Toolbox for MySQL:
Для восстановления поврежденной БД MySQL при помощи этой программы нужно сделать следующее:
Пример восстановления БД
Программа загружается совершенно бесплатно и устанавливается без регистрации. С помощью Recovery Toolbox for MySQL можно бесплатно просматривать восстановленные данные, оценивать эффективность работы.
Можно даже подсмотреть какие-то изменения и легко внести их руками в «протухший», но еще пригодный к использованию бэкап. Заплатить предложат только в том случае, если потребуется сохранить восстановленные данные, пересоздать базу MySQL и подключить ее к системе.
👉 «Пару слов» о безопасности при работе с Recovery Toolbox for MySQL
Самое главное – программа всегда работает только с копией исходной базы, поэтому этот способ восстановления намного надежнее, чем вносить изменения в конфиги БД и смотреть, что из этого получится. Помните, попытка ремонта БД на «продакшн» сервере может окончательно добить ее, такое бывает даже у опытных админов.
Также стоит отметить, что Recovery Toolbox for MySQL не использует сторонние подключения. В процессе восстановления (может занять довольно продолжительное время, в зависимости от размеров исходной базы данных) ПО не использует доступ к Интернет.
Проконтролировать отсутствие подозрительных подключений можно разными способами, самым простым из которых является физическое отключение сетевого кабеля.
Конечно, этот способ предполагает некий здоровый энтузиазм, желание познать новое (мануалы на WireShark совсем немаленькие) и, самое главное, наличие свободного времени.
Решение проблем с MySQL
Статья давно не обновлялась, поэтому информация могла устареть.
Содержание
Создание базы через ISPmanager
Теперь немного о тех местах, где могут возникнуть сложности.
Раздела «Базы данных» нет в меню
Есть 2 возможных варианта и пути решения проблемы:
1)На сервере не запущен сервер баз данных MySQL:
Не подходит пароль к серверу баз данных
Случается так, что пароль root от MySQL-сервера утерян, и надо установить новый. Делается следующим образом:
В Centos 6/Debian/Ubuntu:
Запускаем его без проверки таблиц прав:
Заходим root’ом без пароля:
Продолжаем для всех версий
В Centos 6/Debian/Ubuntu:
Авторизуемся как root с паролем new_password
Где искать ошибки?
Если логирование не включено, сделать это можно следующим образом: Зайти в файл:
И в секцию [mysqld] добавить строку:
Выйти из файла, выполнить команды:
Следующая команда включит просмотр созданного лога в режиме реального времени(tail –f) и оставить его в фоне(&) что бы можно было параллельно запускать другие команды:
Перечень возможных проблем
Table ‘./site/content’ is marked as crashed and should be repaired
Такое сообщение может появиться в логах или на сайте. Оно означает, что таблица одной из БД «побилась» и требуется ее восстановление. Необходимо подключится на сервер по SSH, выполнить команду, которая проверит все базы данных на предмет ошибок
Если эта команда выдаёт ошибку, вставьте ключи раздельно
Либо можно выполнить исправление конкретной базы данных
mysql_connect() [function.mysql-connect]: Access denied for user ‘user_xxx’@’localhost’ (using password: YES)
На сайте ошибка: Не удалось подключиться к базе данных
В зависимости от используемой CMS эта ошибка может по-разному выглядеть:
Подключится на сервер по SSH, выполнить:
Убедится что в ISPmanager, в разделе «Службы» лампочка mysqld горит.
В панели ISPmanager 5 нет пункта Базы данных
MySQL не запускается ни в сервисах, ни через консоль.
При запуске через консоль ошибки могут быть вида:
Проверить свободное место на диске.
Если не осталось места, удалить не нужные файлы.
Частая ситуация, когда логи сайтов разрастаются и места на диске свободного не остается, MySQL не может нормально работать(справедливо и для всех остальных сервисов – apache, exim и т.д.)
Снова пробуем перезапустить MySQL:
Если проблема не со свободным местом, в логах должны появиться записи, похожие на эту:
Смотрим записи с меткой [ERROR]. В логе выше, ошибка «Error while setting value ‘—read_buffer_size=256K’ to ‘sort_buffer_size’» означает, что в конфиге my.cnf не верно прописана директива ‘sort_buffer_size. Этот случай приведен только для примера. В каждом конкретном случае – лог будет различаться. Ошибки могут быть самые разные. Дальнейшие действия зависят от конкретной ошибки и требуют детального разбирательства.
Решение проблем с кодировками MySQL
Итак, где кодировки указываются:
1. Кодировка конкретной базы/таблицы/столбца. Это кодировка, в которой MySQL будет хранить данные. Например, если у вас данные в cp1251, то будет большой ошибкой указывать для хранения кодировку latin1. В ней нет соответствий для русских символов, все они будут заменены на вопросы. Кодировка хранения можно задать, например, так:
2. Кодировка соединения. Это кодировка, в которой клиент (скрипт пользователя, форум, mysql-клиент и т.д.) общается с MySQL. Когда клиент подсоединяется к серверу, тот ему сообщает значение параметра default-character-set. Таким образом, они договариваются о том, в какой кодировке они будут общаться. Кодировку общения можно изменить запросом (его лучше выполнять сразу после соединения с сервером):
Кстати, множество современных правильных скриптов именно это и делают.
Одна сложность: есть ряд кривых клиентов, которые всего этого не понимают и общаются в какой-то своей кодировке. Персонально для них можно написать в /etc/my.cnf, секцию [mysqld]:
Что это означает? Сразу после подсоединения любого клиента, MySQL выполнит запрос «set names utf8», как будто смену кодировки общения запросил сам клиент.
Это всё, что нужно знать для решения любой проблемы с кодировками в MySQL. Осталось несколько уточнений (самое интересное 🙂
Кодировки в MySQL-командах пишутся без кавычек и без «-» (дефисов). Популярные в России кодировки: utf8, cp866 (DOS), cp1251 (windows-1251), koi8r.
И, наконец, пара советов:
Русификация MySQL
Чтобы русифицировать базу данных MySQL, не вдаваясь в подробности почему и как, проделайте следующие процедуры:
1. В файле /etc/my.cnf добавьте следующие строчки:
1.1. Под разделом [client]
1.2. Под разделом [mysqld]
После этого перезапустите базу MySQL или весь ваш виртуальный сервер (из ISPmanager или консоль).
🍌 Полезные советы по устранению распространенных ошибок в MySQL
MySQL – широко используемая система управления реляционными базами данных (RDMS) с открытым исходным кодом, принадлежащая Oracle.
На протяжении многих лет он был выбором по умолчанию для веб-приложений и по-прежнему остается популярным по сравнению с другими механизмами баз данных.
MySQL был разработан и оптимизирован для веб-приложений – он является неотъемлемой частью основных веб-приложений, таких как Facebook, Twitter, Wikipedia, YouTube и многих других.
Ваш сайт или веб-приложение работают на MySQL?
В этой подробной статье мы расскажем, как устранять проблемы и распространенные ошибки в сервере баз данных MySQL.
Мы опишем, как определить причины проблем и что нужно сделать для их решения.
1. Не удается подключиться к локальному серверу MySQL
Одной из распространенных ошибок подключения клиента к серверу в MySQL является “ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)”.
Эта ошибка указывает на то, что на хост-системе не запущен сервер MySQL (mysqld) или что вы указали неправильное имя файла сокета Unix или порт TCP / IP при попытке подключения к серверу.
Убедитесь, что сервер работает, проверив процесс с именем mysqld на хосте сервера базы данных, используя команду ps и команду grep, как показано далее.
Если вышеприведенные команды не показывают выходных данных, то сервер базы данных не работает.
Поэтому клиент не может подключиться к нему.
Чтобы запустить сервер, выполните следующую команду systemctl.
Чтобы проверить состояние службы MySQL, используйте следующую команду.
В результате выполнения вышеприведенной команды произошла ошибка службы MySQL.
В таком случае вы можете попробовать перезапустить его и еще раз проверить его состояние.
Кроме того, если сервер работает, как показано в следующей команде, но вы по-прежнему видите вышеуказанную ошибку, вам также следует убедиться, что порт TCP / IP не заблокирован брандмауэром или любой службой блокировки портов.
2. Не удается подключиться к серверу MySQL
Здесь начнем с проверки того, что в системе работает сервер MySQL, как показано выше.
Также убедитесь, что на сервере включены сетевые подключения и что сетевой порт, который вы используете для подключения, настроен на сервере.
Другие распространенные ошибки, с которыми вы можете столкнуться при попытке подключиться к серверу MySQL:
Эти ошибки указывают на то, что сервер может работать, однако вы пытаетесь подключиться с использованием порта TCP / IP, именованного канала или файла сокета Unix, отличного от того, который прослушивает сервер.
3. Доступ запрещен – ошибка в MySQL
В MySQL учетная запись пользователя определяется на основе имени пользователя и клиентского хоста или хостов, с которых пользователь может подключиться к серверу.
Кроме того, учетная запись может также иметь учетные данные для аутентификации, такие как пароль.
Хотя существует много разных причин ошибок «Доступ запрещен», одна из распространенных причин связана с учетными записями MySQL, которые сервер разрешает использовать клиентским программам при подключении.
Это означает, что имя пользователя, указанное в соединении, не имеет прав доступа к базе данных.
MySQL позволяет создавать учетные записи, которые позволяют пользователям клиентов подключаться к серверу и получать доступ к данным, управляемым сервером.
В связи с этим, если вы столкнулись с ошибкой в доступе, проверьте, разрешено ли учетной записи пользователя подключаться к серверу через клиентскую программу, которую вы используете, и, возможно, хост, с которого происходит соединение.
Вы можете увидеть, какие привилегии имеет данная учетная запись, выполнив команду SHOW GRANTS, как показано ниже.
Вы можете предоставить привилегии конкретному пользователю в конкретной базе данных для удаленного IP-адреса, используя следующие команды в оболочке MySQL.
Кроме того, ошибки запрещенного доступа могут также возникнуть из-за проблем с подключением к MySQL, обратитесь к ранее объясненным ошибкам.
4. Потерянное соединение с MySQL сервером
Вы можете столкнуться с этой ошибкой Lost Connection to MySQL Server по одной из следующих причин: плохое сетевое соединение, время ожидания соединения или проблема со значениями BLOB, которые больше, чем max_allowed_packet.
В случае проблем с сетевым подключением убедитесь, что у вас хорошее сетевое подключение, особенно если вы обращаетесь к удаленному серверу баз данных.
Если это проблема тайм-аута соединения, особенно когда MySQL пытается использовать первоначальное соединение с сервером, увеличьте значение параметра connect_timeout.
Но в случае значений BLOB, которые больше, чем max_allowed_packet, вам нужно установить более высокое значение для max_allowed_packet в вашем файле конфигурации /etc/my.cnf в разделе [mysqld] или [client], как показано далее.
Если файл конфигурации MySQL недоступен, вы можете установить это значение с помощью следующей команды в оболочке MySQL.
5. Слишком много подключений MySQL
Если клиент MySQL обнаруживает ошибку «too many connections», это означает, что все доступные соединения используются другими клиентами.
Количество соединений (по умолчанию 151) контролируется системной переменной max_connections;
Вы можете устранить проблему, увеличив ее значение, чтобы разрешить больше подключений в файле конфигурации /etc/my.cnf.
6. Недостаточно памяти MySQL
Первый шаг – убедиться, что запрос правильный, если это так, то выполните следующие действия:
Еще один замечательный инструмент – MySQL Tuner – полезный скрипт, который подключается к работающему серверу MySQL и дает рекомендации по его настройке для более высокой производительности.
7. MySQL продолжает ломаться
Если вы столкнулись с этой проблемой, вы должны попытаться выяснить, заключается ли проблема в том, что сервер MySQL умирает или это клиентская проблема.
Обратите внимание, что многие сбои сервера вызваны поврежденными файлами данных или индексными файлами.
Вы можете проверить состояние сервера, чтобы определить, как долго он работал.
Либо запустите следующую команду mysqladmin, чтобы узнать время безотказной работы сервера MySQL.
Другие решения включают в себя, помимо прочего, остановку сервера MySQL и включение отладки, а затем снова запуск службы.
Вы можете попытаться создать контрольный пример, который можно использовать для повторения проблемы.
Кроме того, откройте дополнительное окно терминала и выполните следующую команду, чтобы отобразить статистику процесса MySQL во время выполнения других ваших запросов:
Почему не запускается MySQL – чиним СУБД самостоятельно
Дата публикации: 2016-06-15
От автора: не запускается MySQL? Наверно «стартер» барахлит. Нужно показать опытному «механику». Хотя в некоторых случаях можно обойтись и собственными силами. Вот сегодня и разберемся, как произвести починку «заглохнувшей» СУБД самостоятельно.
Использование теории «чужих ошибок»
Но в MySQL столько «граблей», что их умудряются не перешагнуть и «чайники», и профессионалы по всему миру. Попробуем в этом материале собрать наиболее частые причины того, почему не подключается база данных MySQL и другие распространенные проблемы.
Особенности синтаксиса
Для примера возьмем один, и выполним его в программной оболочке, которую часто используем. А также запустим его в командной строке. Таким образом мы выясним особенности синтаксиса MySQL, «царящих» в каждом из вариантов. Начнем, как предписывает традиция, с phpMySQL. Но сначала запрос, написанный по всем «канонам» SQL:
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Теперь введем его и выполним в программе:
Как видим, приложение «ругается» на несоответствующий синтаксис. Правильно:
В phpMyAdmin (чтобы не говорили потом «не удалось запустить MySQL») название столбцов экранируются грависом, а все указываемые значения – одинарными кавычками. Кстати, гравис находится над клавишей буквы «Ё».
На самом деле использование грависов не является обязательным. Они прописываются программой в автоматически сгенерированных запросах. Ошибки синтаксиса в командной строке
Теперь переходим в командную строку, и попытаемся запустить вариант запроса, корректный для phpMyAdmin. Здесь нас сразу подстерегает ошибка, поскольку мы не выделили ни одной БД.
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
И еще раз выполним предыдущий код SQL. Теперь все прошло успешно. Для чистоты эксперимента введем первый вариант запроса. Сервер СУБД говорит нам, что такого столбца в этой таблице нет. Исправим запрос, и экранируем значение одинарными кавычками.
Но что-то опять пошло не так, и MySQL ждет от нас ввода дополнительных параметров. Это потому, что мы забыли поставить точку с запятой. Хотя она не является обязательной в phpMyAdmin.
Кстати (пока мы находимся в CMD) одной из причин, почему не удается запустить службу MySQL из командной строки, может быть нарушение синтаксиса команды входа. «Неправильный» пример:
Другие распространенные ошибки
Вот еще несколько самых частых ошибок, которые допускают пользователи СУБД:
«Acces danied» — сервер говорит, что доступ запрещен. Чаще всего эта ошибка выскакивает, когда пользователь или приложение пытается совершить операцию, которая не разрешена для используемой учетной записи.
Поясню следующий скриншот, и почему и не удается подключиться к MySQL базе. Я зашел на сервер БД под учеткой пользователя (user), привилегии которого распространяются только на одну базу. При попытке вывести список всех баз, имеющихся на сервере, MySQL вернул пустой результат. А когда я попытался «пробраться» на другую БД, система выдала мне «Access denied».
«Не удается найти указанный диск» — эта ошибка возникает, если вы работаете с Денвером, который при запуске эмулирует (создает) виртуальный диск. Причина – локальный сервер не запущен.
«Can’t connect to MySQL server on…» — такая ошибка возникает, если неправильно указан в параметрах хост или локальный сервер не запущен.
Не устанавливается MySQL – причин этого может быть много. Например, если вы пытаетесь инсталлировать СУБД через командную строку, то она должна быть запущена от имени администратора устройства.
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Помощь
Вход в личный кабинет
Регистрация клиента
Сообщить об ошибке
Возможные проблемы с MySQL
Пароль к серверу баз данных утерян
В случае утери пароля создайте новый, выполнив следующие команды.
Остановите MySQL командой:
Выполните запуск MySQL без учета прав доступа командой:
Зайдите пользователем root командой:
Перезагрузите сервер баз данных с учетом прав доступа командой:
Выполните вход на MySQL сервер с новым паролем:
Как просмотреть перечень ошибок MySQL сервера?
Для получения списка ошибок сервера баз данных просмотрите его лог-файлы. Для каждой ОС и файловой системы они располагаются в разных местах. Чтобы определить, где находятся лог-файлы MySQL на вашем сервере, подключитесь к серверу через консоль (например, Putty) и выполните команду, которая найдет файл my.cnf:
Результатом выполнения этой команды будут пути, по которым находится файл с этим именем.
Откройте любым редактором, например vi, найденный файл и найдите строки, начинающиеся с “log” или “log-error”
Откройте редактором лог-файл по найденному пути и просмотрите ошибки.
Если в файле my.cnf нет строк, указывающих на лог-файлы, это значит, что контроль ошибок (логирование) не включен. Включите эту функцию, добавив в my.cnf строку:
Создайте его и наделите привилегиями командами:
При необходимости просмотр лог-файла можно запустить в фоновом режиме, чтобы параллельно запускать другие директивы. Для этого выполните команду:
Возможные ошибки в лог-файле и их решение
В лог-файле или в браузере выдается ошибка:
Сообщение говорит о том, что в одной из баз данных появилась поврежденная таблица, которую можно восстановить. Для этого подключитесь через консоль к серверу и выполните команду проверки всех таблиц на целостность:
В случае ошибки запустите несколько команд:
Если вы знаете, какая именно база данных повреждена, выполните команду:
Возникает ошибка вида:
Сообщение говорит о том, что запрещен доступ для пользователя user_xxx к базе данных или какой-то ее таблице.
Проверьте, что указанные данные в полях «Имя пользователя» и «Пароль» соответствуют тем, которые находятся в настройках сайта для подключения к этой БД.
На сайте возникает ошибка вида «Не удалось подключиться к базе данных»
Варианты сообщения об ошибке в случае неудачи при подключении к базе данных могут быть следующими:
Если проблема не исчезла, то подключитесь к серверу через консоль и перезапустите MySQL командой:
Проверьте, что сервер корректно запустился, выполнив команду, которая выводит список процессов MySQL:
Если в результате не вывелось ни одного процесса, то MySQL не запустился.
Не удается запустить MySQL
Попробуйте запустить MySQL через панель управления ISPmanager. Если не получилось, то подключитесь к серверу по SSH и попробуйте запустить MySQL через консоль командой:
Если MySQL не запускается через консоль, вы получите сообщение об ошибке вида:
Проверьте свободное место на диске командой
выведет, сколько места занимает каждая директория.
Если свободного места осталось мало, освободите его, очистив в первую очередь лог-файлы MySQL и других служб.
Перезапустите MySQL через консоль командами, приведенными выше.
Если проблема сохранилась, внимательно изучите записи в лог-файле MySQL, начинающиеся с [ERROR]. Например, запись Error while setting value ‘—read_buffer_size=256K’ to ‘sort_buffer_size’ означает, что директива sort_buffer_size в конфигурационном файле MySQL, прописана не верно.