проблема подключения MySQL - PullRequest
4 голосов
/ 04 августа 2010

Это странно. У меня есть 2 цента коробки, prod (192.168.0.1) и vm (192.168.0.30). База данных Mysql сидит на продукт. Приложение сидит на вм. Из vm, если я наберу

mysql -u user -p -h 192.168.0.1 -D mydb

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

$db=new mysqli('192.168.0.1','user','mypass','mydb');

и я получаю

Warning: mysqli::mysqli() [function.mysqli-mysqli]: (HY000/2003): Can't connect to 
MySQL server on '192.168.0.1' (13) in /var/www/vhosts/myapp/httpdocs/dstest.php 
on line 123

Оба блока имеют одинаковые версии php, mysql, mysql.so, mysqli.so

Любой совет?

P.S. Это также происходит, если я пытаюсь $ db = new mysqli ('127.0.0.1', ... НО НЕ, если я пытаюсь $ db = new mysqli ('localhost', ...

В случае, если это поможет, вот my.cnf на prod:

[mysqld]
set-variable=local-infile=0
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1

max_connections = 500
max_user_connections = 150

key_buffer = 2048M

query_cache_limit=4M
query_cache_size=64M
table_cache=2048
tmp_table_size=64M
max_heap_table_size = 256M

# users buffers
sort_buffer_size=2M
read_buffer_size=2M
read_rnd_buffer_size=1M

max_allowed_packet=16M

thread_cache=16
thread_concurrency=8
thread_cache_size=128
innodb_buffer_pool_size = 128M
myisam_sort_buffer_size = 128M

wait_timeout = 240
interactive_timeout = 240
max_allowed_packet=32M

[mysql.server]
user=mysql
basedir=/var/lib

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

Ответы [ 3 ]

19 голосов
/ 04 августа 2010

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

Редактировать: добавлено содержание блога для потомков:

SQLSTATE[HY000] [2003] Can’t connect to MySQL server on ‘xxx.xxx.xxx.xxx’ (13)

Одна из вещейХотелось бы, чтобы я нашел в Google быстрее, когда пытался выяснить, почему PHP-скрипт отказывается подключаться к удаленному серверу MySQL, выдавая ошибку SQLSTATE [HY000] [2003] Не удается подключиться к серверу MySQL в «xxx.xxxx.xxx.xxx»(13)

Я могу подключиться из локальной оболочки, поэтому сначала подумала, что что-то не так с недавним обновлением Zend Framework, но через некоторое время я поняла, что ответ очень прост - SELinux блокировал удаленные подключения отPHP-скрипты, выполняемые веб-сервером Apache.Код ошибки (13) в конце сообщения об ошибке означает «отказано в разрешении», так что это указание, чтобы увидеть, есть ли у вас похожая проблема или нет.

В любом случае, войдите в систему как root и выполните setsebool -P httpd_can_network_connect=1, чтобы сделатьэто работает.

Конечно, подумайте дважды, потому что вы делаете веб-сервер немного менее безопасным, поэтому не делайте этого, если вы не уверены, что он вам нужен.

0 голосов
/ 28 августа 2018

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

service mysql restart

0 голосов
/ 29 мая 2014

Если этот сервер локальный, попробуйте сначала:

$db=new mysqli('localhost','user','mypass','mydb'); 

вместо

$db=new mysqli('192.168.0.1','user','mypass','mydb');

Это сработало для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...