我在Ubuntu 18.04 Apache EC2 Machine/Server-172.2.27.1上遇到一个问题,即mysqli没有在那里连接到MariaDB Server-172.2.27.2(远程mysqli服务器(,但它是通过localhost连接的(因为目前172.2.27.1机器上也安装了MariaDB(,与172.2.27.2的远程连接也是通过终端:建立的
mysql -h 172.2.27.2 -u test -p
(在172.2.27.1机器上(
无法理解它的确切问题。我已经尝试调试所有可能的位置,但找不到任何位置。
当与Apache连接时,它给出错误:
Object
(
[affected_rows] =>
[client_info] =>
[client_version] => 50012
[connect_errno] => 2002
[connect_error] => Connection timed out
[errno] =>
[error] =>
[error_list] =>
[field_count] =>
[host_info] =>
[info] =>
[insert_id] =>
[server_info] =>
[server_version] =>
[stat] =>
[sqlstate] =>
[protocol_version] =>
[thread_id] =>
[warning_count] =>
)
PS:无论是在机器上还是在EC2实例上都没有防火墙规则问题。我已经查过了。连接到互联网上的远程MariaDB服务器的所有可用代码都给出了相同的结果。这不是代码问题,可能是apache扩展或PHP的问题。服务器172.2.27.1无法连接到互联网上的任何其他MariaDB服务器。它只在本地主机上工作,而不是在其他任何地方。
很可能防火墙规则正在阻止您的连接:(连接超时(
检查分配给Mysql/MariaDB实例的Security groups
,并确保在MariaDB设置中正确允许Mysql port (3306)
接受来自172.2.27.2
或整个子网的inbound
连接。
看起来您还没有为远程地址配置数据库。设置my.cnf
[mysqld]
skip-networking=0
skip-bind-address
然后设置mysql.user
GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.2.27.%'
IDENTIFIED BY 'password' WITH GRANT OPTION;
之后重新启动所有进程请参阅以下内容以供参考:https://mariadb.com/kb/en/configuring-mariadb-for-remote-client-access/