我已经使用VirtualBox创建了2个Ubuntu20.04虚拟机。我在一台虚拟机上安装了Django应用程序,在另一台虚拟机上安装了MySQL DB。如何使用第一个虚拟机访问MySQL DB?我使用ifconfig的输出中的inet作为IP地址
我尝试过的:
在具有MySQL DB的虚拟机上:
->将'/etc/mysql/mysql.conf.d/mysqld.cnf‘中的'bind_adress’字段更改为'0.0.0.0‘
->使用CREATE USER 'test'@'IP_Address1' IDENTIFIED BY 'password';创建了一个新用户
->运行了"sudo ufw allow from IP_Address1 to any port 3306“
在具有Django应用程序的虚拟机上:
->尝试使用mysql -u 'test' -h 'IP_ADDRESS2' -p连接到虚拟机
我得到的错误是:
“未知的MySQL主机‘地址’”
PS:我使用文件->首选项->网络在VirtualBox上创建了一个NAT网络,并将两个虚拟机连接到网络,并将混杂模式设置为"Allow All“
发布于 2020-12-06 03:07:41
您如何或在何处定义IP_Address1和IP_ADDRESS2?
具体地说,当您使用CREATE USER查询时,您的DB机器需要知道客户机的IP地址。因此,该机器必须“知道”IP_Address1。也许您只是在发布问题时隐藏了IP地址,但在获得连接之前,在这两种情况下使用实际的IP地址可能更容易。
例如,如果数据库计算机为172.18.1.1,客户端计算机为172.18.1.2,则应在上面列出的命令中使用这些IP地址
使用创建了一个新用户
"CREATE USER 'test'@'172.18.1.2' IDENTIFIED BY 'password';"...here您正在定义client连接的IP地址。
然后在客户机上:
"mysql -u 'test' -h '172.18.1.1' -p"...here,告诉客户机DB机器的IP地址
更重要的是,您可能还必须在DB的配置设置中向本地网络公开DB。如果这两台机器不在同一个本地子网上,您还必须处理任何路由问题。
有几篇文章描述了如何为网络访问配置MySQL,例如:https://www.digitalocean.com/community/tutorials/how-to-allow-remote-access-to-mysql
发布于 2020-12-07 01:32:23
你试过什么?您能从.5机器上的命令行连接吗?有一个mysql命令行工具可以用来连接,它可能会给你更多的信息,或者你有没有看过MySQL日志,看看它有什么不满意的?
这可能类似于用户的权限问题-仅创建一个用户是不足以允许他们访问数据库资源的。也许可以尝试一下这样的方法:
GRANT ALL ON Database.* TO test@'172.25.1.5' IDENTIFIED BY 'PASSWORD';我假设你已经在数据库上配置了各种权限,并且只看到了连接问题,但从你的回答中,这一点并不清楚。
基本上,您需要隔离问题是用户权限问题、IP限制问题、VM问题、应用程序的编码问题还是其他问题。
如果你还在苦苦挣扎,请提供更多关于你尝试的反馈,但这可能是许多问题之一。
https://stackoverflow.com/questions/65159891
复制相似问题