Проблемы при подключении к серверу mysql: ОШИБКА 2003 (HY000)

  • IP сервера: 172.16.1.169
  • имя пользователя mysql: root
  • пароль: xxxxxxxxxx
  • имя базы данных: пример

Я пытаюсь получить доступ к базе данных с клиента (ip 172.16.0.114). И сервер, и клиент работают под управлением дистрибутива Linux Fedora. Какие параметры необходимо настроить и на что они должны быть установлены как для сервера, так и для клиента? Как мне получить доступ к конкретной базе данных (здесь «пример»)? Я попытался, но получил ошибку:

ОШИБКА 2003 (HY000): Не удается подключиться к серверу MySQL по адресу «172.16.1.169».


person Jagan    schedule 07.03.2011    source источник
comment
У вас разные сети, например: 172.16.0.* и 172.16.1.*. Вы вообще можете пинговать с 172.16.0.114 на 172.16.1.169?   -  person Arman    schedule 07.03.2011
comment
Та же сеть .... я могу пинговать ...   -  person Jagan    schedule 07.03.2011
comment
Та же проблема здесь. [Ответ guido][1] решает мою проблему. Спасибо. [1]: stackoverflow.com/a/6897627/2760065   -  person robersonfox    schedule 09.09.2013


Ответы (4)


Это сообщение об ошибке генерируется клиентом (а не сервером), потому что была предпринята попытка подключения к серверу, но сервер недоступен.

Возможны различные причины этого:

1) проверьте, что mysqld запущен на сервере:

ps -ef | grep mysqld

должно вернуть что-то вроде:

root      2435  2342  0 15:49 pts/1    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/var/ --user=mysql  
mysql     2480  2435  0 15:49 pts/1    00:00:00 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/var/ --user=mysql ...

Чтобы запустить службу демона, запустите на redhat/fedora/centos:

service mysqld start

или в версии Fedora >= 16, которая зависит от systemd:

systemctl start mysqld.service

и для включения автозапуска демона при загрузке системы:

systemctl enable mysqld.service

2) проверьте порт, на котором работает mysqld на сервере:

netstat -lnp | grep mysql

должен вернуться:

tcp        0      0 0.0.0.0:3306 0.0.0.0:* LISTEN 2480/mysqld 
unix  2      [ ACC ]     STREAM     LISTENING     8101   2480/mysqld /tmp/mysql.sock

последний — это сокет для локальных подключений, первый — TCP-порт для работы в сети (по умолчанию 3306). Если порт не является портом по умолчанию, вы должны установить порт соединения на клиенте. Если вы используете клиент mysql:

mysql dbname -uuser -ppasswd -P<port> ...

3) находясь на другом сетевом адресе, убедитесь, что сервер прослушивает сетевые адреса, с которых вы подключаетесь: в файле /etc/my.cnf найдите строку:

bind_address=127.0.0.1

если адрес 127.0.0.1 разрешены только локальные соединения; если бы это был 172.16.1.0, вы не смогли бы подключиться с 172.16.2.xxx

4) проверьте, что на сервере не запущен брандмауэр и не блокирует подключения к порту mysql (3306 порт по умолчанию); если это redhat/fedora/centos

service iptables status
person guido    schedule 01.08.2011

  1. Откройте файл конфигурации MySQL

    sudo vim my.cnf

  2. Убедитесь, что следующее закомментировано.

    #скип-внешняя-блокировка

    #скип-нетворкинг

    #bind-адрес = хх.хх.хх.хх

    Сохранить и выйти

  3. Перезапустите службу mysql

person Pankaj Khurana    schedule 07.06.2013
comment
Спасибо, это сработало! Можете ли вы объяснить, что меняют эти строки? - person Aline Matos; 08.01.2014

В файле конфигурации MySQL (/etc/mysql/my.cnf) комментарий '#bind-address = 127.0.0.1'

Сохраните и перезапустите службу mysql.

person Ramil Mammadov    schedule 12.05.2016
comment
Это решение этого вопроса. У меня была такая же проблема на сервере ubuntu 14.04, mysql 5.6. Я комментирую комментарий '#bind-address = 127.0.0.1', и у меня это сработало - person Ramil Mammadov; 12.05.2016

Я думаю, что сервер назначения mysql может использовать другой порт. Сначала нужно найти правильный порт.

Как только вы получите правильный порт, вы можете подключиться к этому mysql серверу с помощью этой команды:

mysql -h 172.16.1.169 -P (port) -u root -p (password)
person Vanmen    schedule 30.07.2013