- Исправляем Error MySQL connect
- Устраняем типичные ошибки в MySQL
- Не удаётся подключиться к локальному серверу
- Не удаётся подключиться к серверу MySQL
- Ошибки запрета доступа в MySQL
- Потеря соединения с сервером MySQL
- Слишком много подключений
- Недостаточно памяти
- MySQL продолжает «падать»
- Заключение
- mysqli::$connect_error
- Описание
- Возвращаемые значения
- Примеры
- Смотрите также
- User Contributed Notes 1 note
- Не удается подключиться к серверу MySQL на ‘localhost’ (10061)
- 18 ответов:
Исправляем Error MySQL connect
Ошибка Error MySQL connect возникает по причине того, что невозможно соединиться с mysql сервером. Так же, часто php возвращает похожую ошибку: Access denied for user ‘bd’@’localhost’ (using password: YES) in db.php on line 6. Connection error! , что говорит о том, что не получается подключиться к базе данных. Ошибка Error MySQL connect вызывается если: сервер MySQL не доступен, либо вы не можете к нему подключиться, т.е. логин, пароль или адрес сервера указаны не верно. Еще раз убедитесь, что данные введены верно и нет никаких опечаток.
Если у вас есть SSH доступ, попробуйте перезагрузить SQL. Для этого авторизуйтесь в системе с правами администратора и выполните команду
# service mysqld restart
Если MySQL сервер на Debian или Ubuntu Linux, то команда будет
/etc/init.d/mysql restart
или же
systemctl restart mysqld.service
Узнать состояние mysql — вместо команды restart выполните команду status. Более подробно читайте тут: Error connecting mysql server
- первым делом проверяйте, верны ли доступы к БД — сервер, логин, пароль, юзер.
- Если эта ошибка появилась на хостинге и сайт работал до этого нормально — пишите в поддержку — что то не так сервером БД. Может быть так что на хостинге ведутся тех.работы.
- Если ошибка Error MySQL connect появляется на сервере, проверяйте статус БД, перезагружайте.
- Используете виртуальный сервер, типа Open Server — перезагрузите его.
У движков есть файл конфигурации, где указываются доступы к MySQL. Приведем 6 самых распространенных движков.
Устраняем типичные ошибки в 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 ( mysqld ) или вы указали неправильное имя файла сокета Unix или порт TCP/IP при попытке подключения.
Убедитесь, что сервер работает. Проверьте процесс с именем mysqld на хосте сервера, используя команды ps или grep, как показано ниже.
Если эти команды не показывают выходных данных, то сервер БД не работает. Поэтому клиент не может подключиться к нему. Чтобы запустить сервер, выполните команду systemctl.
Чтобы проверить состояние службы MySQL, используйте следующую команду:
Если в результате выполнения команды произошла ошибка службы MySQL, вы можете попробовать перезапустить службу и ещё раз проверить её состояние.
Если сервер работает (как показано) и вы по-прежнему видите эту ошибку, вам следует проверить, не заблокирован ли порт TCP/IP брандмауэром или любой другой службой блокировки портов.
Tproger , Москва, можно удалённо , От 80 000 до 250 000 ₽
Для поиска порта, который прослушивается сервером, используйте команду netstat .
Не удаётся подключиться к серверу MySQL
Ещё одна похожая и часто встречающаяся ошибка подключения — «(2003) Can’t connect to MySQL server on ‘server’ (10061)». Это означает, что в сетевом соединении было отказано.
Следует проверить, работает ли в системе сервер MySQL (смотрите выше) и на тот ли порт вы подключаетесь (как найти порт, можно посмотреть выше).
Похожие частые ошибки, с которыми вы можете столкнуться при попытке подключиться к серверу MySQL:
Ошибки запрета доступа в MySQL
В MySQL учётная запись (УЗ) определяется именем пользователя и клиентским хостом, с которого пользователь может подключиться. УЗ может также иметь данные для аутентификации (например, пароль).
Причин для запрета доступа может быть много. Одна из них связана с учётными записями MySQL, которые сервер разрешает использовать клиентским программам при подключении. Это означает, что имя пользователя, указанное в соединении, может не иметь прав доступа к базе данных.
В MySQL есть возможность создавать учётные записи, позволяющие пользователям клиентских программ подключаться к серверу и получать доступ к данным. Поэтому при ошибке доступа проверьте разрешение УЗ на подключение к серверу через клиентскую программу.
Увидеть разрешённые привилегии учётной записи можно, выполнив в консоли команду SHOW GRANTS
Входим в консоль (пример для Unix, для Windows консоль можно найти в стартовом меню):
В консоли вводим команду:
Дать привилегии конкретному пользователю в БД по IP-адресу можно, используя следующие команды:
Ошибки запрещённого доступа могут также возникнуть из-за проблем с подключением к MySQL (см. выше).
Потеря соединения с сервером MySQL
С этой ошибкой можно столкнуться по одной из следующих причин:
- плохое сетевое соединение;
- истекло время ожидания соединения;
- размер BLOB больше, чем max_allowed_packet .
В первом случае убедитесь, что у вас стабильное сетевое подключение (особенно, если подключаетесь удалённо).
Если проблема с тайм-аутом соединения (особенно при первоначальном соединении MySQL с сервером), увеличьте значение параметра connect_timeout .
В случае с размером BLOB нужно установить более высокое значение для max_allowed_packet в файле конфигурации /etc/my.cnf в разделах [mysqld] или [client] как показано ниже.
Если файл конфигурации недоступен, это значение можно установить с помощью следующей команды.
Слишком много подключений
Эта ошибка означает, что все доступные соединения используются клиентскими программами. Количество соединений (по умолчанию 151) контролируется системной переменной max_connections . Устранить проблему можно, увеличив значение переменной в файле конфигурации /etc/my.cnf .
Недостаточно памяти
Если такая ошибка возникла, это может означать, что в MySQL недостаточно памяти для хранения всего результата запроса.
Сначала нужно убедиться, что запрос правильный. Если это так, то нужно выполнить одно из следующих действий:
- если клиент MySQL используется напрямую, запустите его с ключом —quick switch , чтобы отключить кешированные результаты;
- если вы используете драйвер MyODBC, пользовательский интерфейс (UI) имеет расширенную вкладку с опциями. Отметьте галочкой «Do not cache result» (не кешировать результат).
Также может помочь MySQL Tuner. Это полезный скрипт, который подключается к работающему серверу MySQL и даёт рекомендации по настройке для более высокой производительности.
MySQL продолжает «падать»
Если такая проблема возникает, необходимо выяснить, заключается она в сервере или в клиенте. Обратите внимание, что многие сбои сервера вызваны повреждёнными файлами данных или индексными файлами.
Вы можете проверить состояние сервера, чтобы определить, как долго он работал.
Чтобы узнать время безотказной работы сервера, запустите команду mysqladmin .
Кроме того, можно остановить сервер, сделать отладку MySQL и снова запустить службу. Для отображения статистики процессов MySQL во время выполнения других процессов откройте окно командной строки и введите следующее:
Заключение
Самое важное при диагностике — понять, что именно вызвало ошибку. Следующие шаги помогут вам в этом:
- Первый и самый важный шаг — просмотреть журналы 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 , чтобы получить от него ответ.
- Если при подключении проблема не связана с сервером, проверьте, нормально ли работает клиент. Попробуйте получить какие-либо его выходные данные для устранения неполадок.
mysqli::$connect_error
mysqli::$connect_error — mysqli_connect_error — Возвращает описание последней ошибки подключения
Описание
Возвращает последнее сообщение об ошибке после вызова mysqli_connect() .
Возвращаемые значения
Сообщение об ошибке. null , если ошибка отсутствует.
Примеры
Пример #1 Пример использования $mysqli->connect_error
= @new mysqli ( ‘localhost’ , ‘fake_user’ , ‘my_password’ , ‘my_db’ );
if ( $mysqli -> connect_error ) <
die( ‘Ошибка при подключении: ‘ . $mysqli -> connect_error );
>
?>
= @ mysqli_connect ( ‘localhost’ , ‘fake_user’ , ‘my_password’ , ‘my_db’ );
if (! $link ) <
die( ‘Ошибка при подключении: ‘ . mysqli_connect_error ());
>
?>
Результат выполнения данных примеров:
Смотрите также
- mysqli_connect() — Псевдоним mysqli::__construct
- mysqli_connect_errno() — Возвращает код ошибки последней попытки соединения
- mysqli_errno() — Возвращает код ошибки последнего вызова функции
- mysqli_error() — Возвращает строку с описанием последней ошибки
- mysqli_sqlstate() — Возвращает код состояния SQLSTATE последней MySQL операции
User Contributed Notes 1 note
class bDBresult <
private $result ;
public function __construct ( $res ) <
$this -> result = $res ;
>
public function num_rows () <
return $this -> result -> num_rows ;
>
public function next_row () <
return $this -> result -> fetch_assoc ();
>
class bDB <
private static $conf ;
private $conn ;
public static function set_conf_file ( $dbconf_path ) <
self :: $conf = parse_ini_file ( $dbconf_path );
>
public function __construct () <
$this -> conn = new mysqli (
self :: $conf [ ‘db.host.address’ ],
self :: $conf [ ‘db.user.admin.name’ ],
self :: $conf [ ‘db.user.admin.password’ ],
self :: $conf [ ‘db.bibliotecando.name’ ]
);
>
public function send_query ( $coms ) <
return new bDBresult ( $this -> conn -> query ( $coms ));
>
Не удается подключиться к серверу MySQL на ‘localhost’ (10061)
Я недавно установил MySQL 5 на Windows 2003 и попытался настроить экземпляр. Все работало нормально, пока я не добрался до «применения настроек безопасности», после чего он дал мне вышеуказанную ошибку ( Can’t connect to MySQL server on ‘localhost’ (10061) ).
У меня есть исключение порта 3306 в моем брандмауэре для «MySQL Server».
18 ответов:
вам, вероятно, придется предоставить привилегии «localhost» в таблице пользователю. Смотрите ‘GRANT’ синтаксис документации. Вот пример (из какого источника).
«предоставить все привилегии на %s.* для’%s’@ ‘localhost’, идентифицированного ‘%s'»;
Это самая распространенная проблема с MySQL.
кроме этого, вы можете проверить, что пользователь, которого вы определили для создания вашего экземпляра, имеет полные права, иначе пользователь не может предоставлять привилегии.
кроме того, убедитесь, что служба mysql запущена.
убедитесь, что у вас не включен сторонний брандмауэр или Служба безопасности Интернета.
кроме того, есть несколько страниц форума MySQL, посвященных этому: http://forums.mysql.com/read.php?11,9293, 9609#msg-9609
попробуйте прочитать это.
получил эту ошибку на Windows, потому что мой mysqld.exe не работал.
побежал «C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqld» —install из командной строки, чтобы добавить его в мои службы, запустите службы.msc (start -> run), нашел службу MySQL и запустил ее.
не пришлось беспокоиться об этом оттуда.
- идем в Диспетчер задач
- выберите вкладку Услуги
- найти службу MySql
- под управлением
У меня были трудности с доступом к MySQL при подключении через соединение localhost на стандартном порту 3306, который отлично работал, когда я установил и настроил его для предыдущих классов, которые я взял в MySQL и Java. Я получал ошибки, такие как» ошибка 2003 «и»не удается подключиться к серверу MySql на localhost (10061)». Я попытался подключиться как из MySQL Workbench (5.2.35 CE), так и из Netbeans (7.2). Я использую Windows 7 64 bit professional.
Я попытался ввести службы.msc в самом начале окно поиска меню, которое открыло диалоговое окно службы, чтобы показать все службы, установленные в windows. Я прокрутил вниз к MySQL и запустил эту службу. Последующие попытки подключиться к MySQL из MySQL WorkBench и из командной строки завершились успешно.
убедитесь, что ваш хост-файл windows (расположен по адресу c://windows/system32/drivers/etc.host ) имеет следующие линии. Если нет, добавьте его в конце
иногда mysql не может вызвать Windows для принудительного запуска служб хоста, если брандмауэр блокирует его, поэтому запустите его вручную
win + выполнить >>услуги.msc, выберите «MySQL_xx», где» xx » — это имя, которое вы назначили службам хоста MySQL во время установки. Нажмите на кнопку «начать», чтобы начать с гиперссылки появился на левой стороне.
Я попробовал решение Kuzhichamadam Inn и обнаружил, что необходимо внести небольшое изменение.
MYSQL57 был сетевой службой. Я пробовал это неоднократно без успеха. Когда я открыл службы.msc я нашел другой сервис для localhost: MySQL. Я начал это с помощью процесса ниже, и это сработало.
выполнить > Services.МСЦ > правой кнопкой мыши по MySQL > «свойства» >в начало
пресс клавиша Windows + R напишите » услуги.МСЦ» введите ищите «MYSQL56» напишите нажмите на нее и Запустите сервис