我有2个液滴,两个都有一个LAMP堆栈(Ubuntu 16.04)。两者都安装了PHPMyAdmin,运行PHP应用程序,并拥有自动重定向到https的自签名SSH证书。
我想要做的是从Droplet 2上的应用程序连接到Droplet 1上的MySQL数据库。我知道你可以通过在Droplet 1上运行MySQL服务器来实现这一点,但两者都需要运行在这种情况下,一个完整的PHP应用程序。
以下是我已经完成并尝试过的事情:
sudo ufw allow 3306/tcp
和sudo service ufw restart
我的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上运行的数据库。我缺少什么?
几个问题:
mysql_secure_installation
。如果我没记错,禁止远程访问mysql数据库,但不确定。我也不知道如何重新启用它(如果需要)。 修改
正在运行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 -
答案 0 :(得分:0)
确保my.cnf
文件中包含正确的绑定地址。
bind-address = << private IP here >>
抬头,MySQL只支持绑定到服务器上的0,1或所有IP地址,因此如果您不想收听私有IP和公共IP,那么您将不得不使用私有IP和设置你在Droplet上的PHP应用程序连接到那个而不是127.0.0.1
。