【问题标题】:Remote MySQL Connection returns System Error: 111 or PDO error [2002]远程 MySQL 连接返回系统错误:111 或 PDO 错误 [2002]
【发布时间】:2014-01-22 19:13:41
【问题描述】:

最近我将我的数据库移动到另一台主机,设置后,我无法使用 PHP 从我的应用程序服务器或从服务器本身以外的任何地方连接到它。

PHP 将返回以下内容: 错误!:SQLSTATE[HY000] [2002] 没有这样的文件或目录

我也在这个网站上测试过:http://www.rainbowspuppiessunshine.com/tools/dbtest/index.php 返回的错误是: “读取初始通信数据包”时与 MySQL 服务器的连接丢失,系统错误:111

我已经尝试或检查过的内容:

  • my.cnf 文件没有绑定地址,也没有跳过网络
  • 即使绑定地址设置为服务器的 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

提前谢谢你

【问题讨论】:

  • 刚刚测试了我是否可以通过 MySQL 端口上的 telnet 连接到服务器。连接成功

标签: php mysql sockets pdo


【解决方案1】:

您的 PHP 配置错误,正在错误的位置寻找 mysql 套接字文件。查看 php.ini 中的 mysql.default_socket 并确保它与 my.cnf 文件中指定的路径完全匹配。

【讨论】:

  • 感谢马克的回答。我应该在哪个服务器上检查?数据库服务器还是应用程序服务器?再次感谢您
  • 两个物理上独立的盒子?在这种情况下,您的客户端(php 系统)应该使用 TCP 连接到 mysql。使用套接字文件是一个 unix 域套接字,它纯粹是本地的 - 你只能通过 mysql 盒子上的那个连接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-08
  • 2014-12-09
  • 2016-02-22
  • 1970-01-01
  • 2012-08-15
  • 2018-04-02
相关资源
最近更新 更多