首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用其他虚拟机访问托管在虚拟机上的MySQL服务器?

问如何使用其他虚拟机访问托管在虚拟机上的MySQL服务器?
EN

Stack Overflow用户
提问于 2020-12-06 01:30:31
回答 2查看 466关注 0票数 0

我已经使用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“

EN

回答 2

Stack Overflow用户

发布于 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地址

使用创建了一个新用户

代码语言:javascript
复制
"CREATE USER 'test'@'172.18.1.2' IDENTIFIED BY 'password';"

...here您正在定义client连接的IP地址。

然后在客户机上:

代码语言:javascript
复制
"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

票数 1
EN

Stack Overflow用户

发布于 2020-12-07 01:32:23

你试过什么?您能从.5机器上的命令行连接吗?有一个mysql命令行工具可以用来连接,它可能会给你更多的信息,或者你有没有看过MySQL日志,看看它有什么不满意的?

这可能类似于用户的权限问题-仅创建一个用户是不足以允许他们访问数据库资源的。也许可以尝试一下这样的方法:

代码语言:javascript
复制
GRANT ALL ON Database.* TO test@'172.25.1.5' IDENTIFIED BY 'PASSWORD';

我假设你已经在数据库上配置了各种权限,并且只看到了连接问题,但从你的回答中,这一点并不清楚。

基本上,您需要隔离问题是用户权限问题、IP限制问题、VM问题、应用程序的编码问题还是其他问题。

如果你还在苦苦挣扎,请提供更多关于你尝试的反馈,但这可能是许多问题之一。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65159891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档