【问题标题】:PHP - Problem with PDO / mysqli connection over VPNPHP - 通过 VPN 的 PDO / mysqli 连接问题
【发布时间】:2020-08-10 17:57:41
【问题描述】:

我正在尝试首先通过 VPN 连接创建到本地数据库服务器的连接。

通过 VPN 连接,我收到了我的网络的这个 IP: 192.168.30.2

数据库服务器: 192.168.40.150

如果我尝试通过 PHP ping 数据库服务器 IP,我也会收到来自服务器的响应。但是,当我尝试建立 PDO 连接或使用“mysqli”时,我收到以下错误:

lluminate \ Database \ QueryException: SQLSTATE [HY000] [1045] Access denied for user 'xxxx'@'192.168.30.2' (using password: YES) (SQL: select * from `xxxx`) in file

如果我在我的 PC 上使用 Mysql 客户端,它工作正常!

有什么想法吗?

【问题讨论】:

  • mysql 中的用户是否接受来自 192.168.30.2 的连接? ('xxxx'@'%') ?
  • @SmasherHell 如果我在本地机器上使用 mysql 客户端软件可以正常工作。 IP为:192.168.30.2
  • @Dlk 配置似乎没问题。我尝试调试PDO连接,主机是:192.168.40.150。我不明白,因为 PDO 连接器使用来自 VPN 的 IP 地址 ('xxxx'@'192.168.30.2')
  • 我不是 laravel 人。但这听起来您需要将端口包含在连接中?

标签: php mysql laravel pdo vpn


【解决方案1】:

已解决:数据库服务器需要 SSL 连接(无证书)。 PDO 连接中需要这些选项:

  • PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT
  • PDO::MYSQL_ATTR_SSL_CA

如果你使用 Laravel Illuminate 进行连接,你需要取消连接中的选项,例如:

...
        'options' => extension_loaded('pdo_mysql') ? array_filter([
            PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT => env('MY_SSL_VERIFY', ' '),
            PDO::MYSQL_ATTR_SSL_CA => env('MY_SSL_CA', ' '),
        ]) : [],
...

在这种情况下,提供带有空格的值 ' ' 非常重要,否则 Illuminate PDO 连接器将无法获取选项值。

【讨论】:

    猜你喜欢
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2016-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-06
    相关资源
    最近更新 更多