这很奇怪。我有 2 个 centos 盒子,prod(192.168.0.1)和 vm(192.168.0.30)。
Mysql 数据库位于 prod 上。
应用程序位于 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

有什么建议吗?

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

如果有帮助,这里是 prod 上的 my.cnf:
[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

最佳答案

检查 here 。它看起来与您的问题非常相似。

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

关于php - mysqli连接问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3407281/

10-16 15:24