gpt4 book ai didi

mysql - Digital Ocean 将一个 Droplet 连接到另一个 Droplet 的 MySQL DB

转载 作者:行者123 更新时间:2023-11-29 17:56:31 25 4
gpt4 key购买 nike

我有 2 个 Droplet,都带有 LAMP 堆栈 (Ubuntu 16.04)。两者都安装了 PHPMyAdmin,运行 PHP 应用程序,并拥有自动重定向到 https 的自签名 SSH 证书。

我想要做的是从 Droplet 2 上的应用程序连接到 Droplet 1 上的 MySQL 数据库。我知道您可以通过在 Droplet 1 上运行 MySQL 服务器来完成此操作,但两者都需要运行完整的 PHP 应用程序在这种情况下。

这是我已经完成并尝试过的:

  • 在两个 Droplet 上启用专用网络(请参阅 this tutorial)
  • 在 Droplet 1 上,我已使用 sudo ufw allowed 3306/tcpsudo service ufw restart 将端口 3306 添加到防火墙
  • 两者都应用了在 DO 接口(interface)中配置的相同防火墙设置。我已从源“Droplet 2”添加了“所有 TCP”、“所有端口”
  • 防火墙设置中的出站规则为来自“所有端口”以及“所有 IPv4”和“所有 IPv6”的“ICMP”、“所有 TCP”和“所有 UDP”
  • 我已通过 PMA 在 Droplet 1 上创建了一个主机名为 % 的 MySQL 用户

我的 PHP 应用连接设置 (CodeIgniter 3.1.7)

$db['remotedb'] = array(
'dsn' => '',
'hostname' => 'PRIVATE IP OF DROPLET HERE', // in the format xx.xx.xx.xx so without https:// in front of it
'port' => 3306,
'username' => 'user',
'password' => 'password',
'database' => 'database',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'dbdebug' => FALSE,
'cacheon' => FALSE,
'cachedir' => '',
'charset' => 'utf8',
'dbcollat' => 'utf8generalci',
'swappre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'savequeries' => TRUE
);

目前,Droplet 2 上的应用程序无法连接到在 Droplet 1 上运行的数据库。我缺少什么?

几个问题:

  • 在安装这两个 Droplet 时,我运行了 mysql_secure_installation。如果我没记错的话,禁用远程访问 mysql 数据库,但不确定。我也不知道如何再次启用它(如果需要)。
  • 我需要在/etc/mysql/my.cnf 文件中使用绑定(bind)地址执行任何操作吗?
  • 通过 PMA 在 Droplet 1 上创建用户时,我使用了正确的设置吗?
  • 我还缺少其他设置吗?

编辑运行 netstat -nltp 给出

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
tcp6 0 0 :::25 :::* LISTEN -
tcp6 0 0 :::443 :::* LISTEN -
tcp6 0 0 :::80 :::* LISTEN -

最佳答案

确保您的 my.cnf 文件中有正确的绑定(bind)地址。

bind-address                   = << private IP here >>

注意,MySQL 仅支持绑定(bind)到服务器上的 0、1 或所有 IP 地址,因此如果您不想监听私有(private)和公共(public) IP,那么您必须使用私有(private) IP 和设置Droplet 上的 PHP 应用程序连接到该应用程序,而不是 127.0.0.1

关于mysql - Digital Ocean 将一个 Droplet 连接到另一个 Droplet 的 MySQL DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48762670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com