【问题标题】:unable to access MySQL server remotely from centOS VM无法从centOS VM远程访问MySQL服务器
【发布时间】:2016-01-03 12:03:51
【问题描述】:

MySQL 服务器在 Dreamhost VPS 上运行,我能够通过我的开发机器 (Windows) 与它建立连接,当我从我的 CentOS7 虚拟机与 MySQL 服务器连接时,我收到以下错误:

PHP message: SQLSTATE[HY000] [2003] Can't connect to MySQL server on '*******' 

我已将我的 MySQL 服务器配置为接受来自所有主机的连接 (%) 不知道为什么我能够通过我的 Dev 机器而不是从我的 Dev 机器上运行的 CentOS 7 VM 连接,我没有在我的 CentOS 上安装 MySQL VM (Minimal) 只安装了 PHP + nginx。

谢谢 -沙赫拉姆

【问题讨论】:

  • 我正在通过 PDO 建立连接,并且我的 VM 上启用了 PDO

标签: php mysql centos7


【解决方案1】:

听起来您的权限已在 mysql 中正确设置,以便用户从所有主机 (%) 进行连接。这听起来更像是网络设置问题。

默认情况下,mysql 配置文件只允许从 localhost 连接。要启用 localhost 以外的连接,您需要编辑此配置文件(通常在 Unix/OSX 上的 /etc/mysql/my.cnf 和文件名为 my.ini 的“C:\Program Files\MySQL\”中找到)

编辑该行:

bind-address = 127.0.0.1

您可以通过注释掉这一行来允许来自任何来源的连接,将其更改为:

# bind-address = 127.0.0.1

另请参阅:How to allow remote connection to mysql

【讨论】:

  • 就像我说的,我可以从我的开发机器上连接到我的删除 MySQL 服务器,
【解决方案2】:

在我看来,您的虚拟化软件不允许您离开 vm 的专用网络。

您使用哪种虚拟化软件(virtualbox、vmware)?可以在 3306 端口启用与telnet your_mysql_server_ip 的连接吗?

【讨论】:

  • 使用 Virtualbox,是的,我已经启用了与我的 MYSQL Server 的连接
  • 能否在代码中提供php连接线?您的 CENTOS 虚拟机是否配置了 natted 或桥接网络?
  • try{ $db_info['db_options'] = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_PERSISTENT => true); $dsn = $db_info['db_type'] 。 ':dbname=' 。 $db_info['db_name'] 。 ';主机='。 $db_info['db_host']; $this->connection = new PDO($dsn, $db_info['db_user'], $db_info['db_password'], $db_info['db_options']); }catch (Exception $ex) { error_log($ex->getMessage()) }
  • 我不认为代码有任何问题,因为我的开发机器 Application Server 上正在运行相同的代码
  • 你在 $db_info['db_host'] 中使用ip地址还是fqdn?你确定这个变量被填充了吗
猜你喜欢
  • 2015-01-08
  • 2013-03-17
  • 1970-01-01
  • 2017-04-21
  • 1970-01-01
  • 1970-01-01
  • 2012-12-13
  • 2022-01-12
  • 2020-03-06
相关资源
最近更新 更多