[英]Use local network for DB connection
我们在OVH上有一个带有proxmox的专用服务器。 想法是在本地连接容器,但也可以通过互联网连接容器。 到目前为止,我有2个容器。
我添加了一个用于本地IP的桥接网络,由于能够相互ping通这些容器,因此该网络可以正常工作。
还添加了bind-address=192.168.1.3
到my.cnf。
1个容器正在运行apache + php 7.2(192.168.1.3)
另一个容器正在运行MySQL。 (192.168.1.2)
我的MySQL一直在说SQLSTATE[HY000] [2002] Connection timed out
这是我的PHP代码:
<?php
/**
* Configuration for database connection
*
*/
$host = "192.168.1.2";
$username = "root";
$password = "root";
$dbname = "test";
$dsn = "mysql:host=$host;dbname=$dbname";
$options = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
);
try
{
$connection = new PDO("mysql:host=$host", $username, $password, $options);
$sql = file_get_contents("data/init.sql");
$connection->exec($sql);
echo "Database and table users created successfully.";
}
catch(PDOException $error)
{
echo $sql . "<br>" . $error->getMessage();
}
据我了解,代码是正确的,因此它必须与我的mysql配置有关。
我敢肯定这确实很简单,但是我为此付出了很多时间。
尝试从Apache,PHP容器telnet 192.168.1.2 3306
。 你可以连接吗?
确保MySQL的侦听端口为3306,如果其他侦听端口,则相应地调整PHP代码。 还要确保iptables
不会阻止任何传入连接。 另外,还要确保您对root
具有正确的权限,并且需要具有来自其他主机的权限的任何其他用户。
另外,在对MySQL进行任何配置更改时,请检查重启服务。
经过一会儿的搜索。 发现我必须创建一个新用户并为其授予权限
mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'
-> WITH GRANT OPTION;
mysql> CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
-> WITH GRANT OPTION;
同样在我的服务器配置上/etc/mysql/mariadb.conf.d/50-server.conf
我不得不评论
bind-address = 192.168.1.3
进入
#bind-address = 192.168.1.3
然后重新启动mysql服务器,并用用户名“ monty”和密码“ some_pass”更改我的php代码上的mysql详细信息
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.