最近,我将数据库移至另一台主机,设置后,我无法使用 PHP 从我的应用程序服务器或除服务器本身以外的任何地方连接到它。
PHP 将返回以下内容: 错误!:SQLSTATE[HY000] [2002] 没有这样的文件或目录
我也在这个网站上测试过:http://www.rainbowspuppiessunshine.com/tools/dbtest/index.php 返回的错误是: 在“读取初始通信数据包”时失去与 MySQL 服务器的连接,系统错误:111
我已经尝试或检查过的内容:
- my.cnf 文件没有绑定(bind)地址,也没有跳过网络
- 即使将bind-address设置为服务器的IP地址,它也不会工作
- MySQL上的用户拥有所有权限,包括从任何主机接受
- MySQL 服务器正在监听端口 3306
- 没有设置可能阻止端口 3306 的防火墙
- 套接字文件存在
所以基本上互联网上针对这些错误给出的所有建议都没有解决问题。
这是 my.cnf 文件:
[mysql]
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld]
user = mysql
default_storage_engine = MyISAM
socket = /var/run/mysqld/mysqld.sock
pid_file = /var/run/mysqld/mysqld.pid
key_buffer_size = 2G
myisam_recover = FORCE,BACKUP
max_allowed_packet = 16M
max_connect_errors = 1000000
datadir = /database/database/mysql
log_bin = /var/lib/mysql/mysql-bin
expire_logs_days = 14
sync_binlog = 1
tmpdir = /database/database/mysqltmp
tmp_table_size = 2G
max_heap_table_size = 2G
query_cache_type = 1
query_cache_size = 64M
max_connections = 1500
thread_cache_size = 50
open_files_limit = 65535
table_definition_cache = 1024
table_open_cache = 5000
max_length_for_sort_data = 4096
innodb_flush_method = O_DIRECT
innodb_log_files_in_group = 2
innodb_log_file_size = 32M
innodb_flush_log_at_trx_commit = 1
innodb_file_per_table = 1
innodb_buffer_pool_size = 8M
log_error = /var/lib/mysql/mysql-error.log
log_queries_not_using_indexes = 1
提前谢谢
最佳答案
您的 PHP 配置错误,并且正在错误的位置查找 mysql 套接字文件。请参阅mysql.default_socket在 php.ini 中,并确保它与 my.cnf 文件中指定的路径完全匹配。
关于php - 远程 MySQL 连接返回系统错误 : 111 or PDO error [2002],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21291866/