【问题标题】:How to access a MySQL server hosted on a Virtual Machine using another Virtual Machine?如何使用另一个虚拟机访问托管在虚拟机上的 MySQL 服务器?
【发布时间】:2020-12-05 17:30:30
【问题描述】:

我使用 VirtualBox 创建了 2 个 Ubuntu 20.04 虚拟机。我在一个 VM 上有一个 Django 应用程序,在另一个 VM 上有一个 MySQL DB。如何使用第一个 VM 访问 MySQL 数据库? 我使用 ifconfig 输出中的 inet 作为 IP 地址

我尝试了什么:

在具有 MySQL DB 的 VM 上:

-> 将'/etc/mysql/mysql.conf.d/mysqld.cnf'中的'bind_adress'字段改为'0.0.0.0'

-> 使用CREATE USER 'test'@'IP_Address1' IDENTIFIED BY 'password';创建了一个新用户

-> Ran "sudo ufw allow from IP_Address1 to any port 3306"

在具有 Django 应用程序的 VM 上:

-> 尝试使用mysql -u 'test' -h 'IP_ADDRESS2' -p连接到虚拟机

我得到的错误:

“未知的 MySQL 主机‘地址’”

PS: 我使用 File->Preference->Network 在 VirtualBox 上创建了一个 NAT 网络,并将两个 VM 连接到网络并将混杂模式设置为“全部允许”

【问题讨论】:

    标签: mysql django ubuntu virtualbox


    【解决方案1】:

    您如何或在哪里定义 IP_Address1 和 IP_ADDRESS2?

    具体来说,当您使用 CREATE USER 查询时,您的数据库机器需要知道客户端机器的 IP 地址是什么。因此,IP_Address1 必须对该机器“已知”。也许您在发布问题时只是隐藏了 IP 地址,但在这两种情况下使用实际 IP 地址可能会更容易,直到您获得连接。

    例如,如果您的数据库机器是 172.18.1.1,而您的客户端机器是 172.18.1.2,那么您应该在上面列出的命令中使用这些 IP 地址

    创建了一个新用户使用

    "CREATE USER 'test'@'172.18.1.2' IDENTIFIED BY 'password';"
    

    ...这里定义客户端连接的IP地址。

    然后在客户端机器上:

    "mysql -u 'test' -h '172.18.1.1' -p"
    

    ...这里,告诉客户端DB的IP地址机器

    更重要的是,您可能还必须在其配置设置中将数据库公开给本地网络。如果两台机器不在同一个本地子网上,您还必须处理任何路由问题。

    有几篇文章介绍了如何配置MySQL进行网络访问,例如:https://www.digitalocean.com/community/tutorials/how-to-allow-remote-access-to-mysql

    【讨论】:

    • 我的客户地址是“172.25.1.5”,我的主机是“172.25.1.4”。所以我跑了“CREATE USER 'test'@'172.25.1.5' IDENTIFIED BY 'password';”在主机上和客户端机器上的“mysql -u 'test' -h '172.25.1.4' -p”。弹出的错误是“Can't connect to MySQL server on "172.25.1.4 (110)”
    【解决方案2】:

    你试过什么?您可以从 .5 机器上的命令行连接吗?有一个 mysql 命令行工具可用于连接,它可能会为您提供更多信息,或者您是否查看了 MySQL 日志以了解它对什么不满意?

    这可能是用户的权限问题 - 单独创建用户不足以允许他们访问数据库资源。也许尝试类似:

    GRANT ALL ON Database.* TO test@'172.25.1.5' IDENTIFIED BY 'PASSWORD';
    

    我假设您已经配置了数据库的各种权限并且只看到了连接问题,但从您的回复来看,这并不清楚。

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

    如果您仍在苦苦挣扎,请提供有关您尝试过的方法的更多反馈,但这可能是众多问题之一。

    【讨论】:

      猜你喜欢
      • 2011-09-22
      • 1970-01-01
      • 1970-01-01
      • 2020-08-14
      • 2023-03-10
      • 1970-01-01
      • 2018-06-04
      • 2020-07-25
      • 1970-01-01
      相关资源
      最近更新 更多