Проблеми при свързване към mysql сървър: ГРЕШКА 2003 (HY000)

  • IP адрес на сървъра: 172.16.1.169
  • mysql потребителско име: root
  • парола: xxxxxxxxxx
  • име на база данни: пример

Опитвам се да получа достъп до база данни от клиент (ip 172.16.0.114). И сървърът, и клиентът работят с Fedora дистрибуцията на Linux. Какви настройки трябва да бъдат конфигурирани и на какво трябва да бъдат зададени както за сървъра, така и за клиента? Как да получа достъп до конкретна база данни (тук, "пример")? Опитах, но получих грешка:

ГРЕШКА 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 run

service iptables status
person guido    schedule 01.08.2011

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

    sudo vim my.cnf

  2. Уверете се, че следното е коментирано.

    #skip-external-locking

    #пропускане на мрежи

    #bind-address = xx.xx.xx.xx

    Запази и излез

  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