mysqli连接问题

Dav*_*lds 4 php mysqli centos

这很奇怪.我有2个盒子,prod(192.168.0.1)和vm(192.168.0.30).Mysql数据库坐在prod上.应用程序坐在虚拟机上.从vm,如果我输入

mysql -u user -p -h 192.168.0.1 -D mydb
Run Code Online (Sandbox Code Playgroud)

它连接可爱,所以端口是打开和倾听prod,但在应用程序,我做

$db=new mysqli('192.168.0.1','user','mypass','mydb');
Run Code Online (Sandbox Code Playgroud)

我明白了

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
Run Code Online (Sandbox Code Playgroud)

两个盒子都有完全相同的版本php,mysql,mysql.so,mysqli.so

有什么建议?

PS如果我尝试$ db = new mysqli('127.0.0.1',...但是如果我尝试$ db = new mysqli('localhost',...

如果它有帮助,这是my.cnf on 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
Run Code Online (Sandbox Code Playgroud)

a1e*_*x07 19

点击这里.它看起来与您的问题非常相似.

编辑:为后代添加了博客内容:

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

我希望我在谷歌找到的东西更快找到PHP脚本拒绝连接到远程MySQL服务器发出错误的原因之一SQLSTATE [HY000] [2003]无法连接到'xxx.xxxx上的MySQL服务器. xxx.xxx'(13)

我能够从本地shell连接,所以首先想到的是,如果最近的Zend Framework升级有问题,但过了一段时间我发现答案非常简单 - SELinux阻止了Apache Web服务器执行的PHP脚本的远程连接.错误消息末尾的错误代码(13)表示"权限被拒绝",这是指示您是否有类似问题的指示.

无论如何,以root用户身份登录并setsebool -P httpd_can_network_connect=1 确保其正常运行.

当然,请三思而后行,因为您使Web服务器的安全性降低,所以除非您确定需要它,否则不要这样做.

  • 血腥的SELINUX. (2认同)