本机如何连接虚拟机MYSQL

发布于:2024-12-20 ⋅ 阅读:(10) ⋅ 点赞:(0)

要让本机(主机)连接到虚拟机上的 MySQL 数据库,你需要确保虚拟机和主机之间的网络连接正常,并且 MySQL 配置允许外部连接。以下是实现本机连接虚拟机 MySQL 的步骤:

步骤 1:确认虚拟机与本机的网络连接

  1. 确认虚拟机和主机在同一网络中

    • 如果虚拟机是使用 桥接模式(Bridge Mode)host-only 网络模式(Host-Only Network),则主机和虚拟机会在同一个网络中,通常可以直接连接。
    • 如果是使用 NAT 模式,可能需要做额外的端口转发,才能让虚拟机能被主机访问。
  2. 获取虚拟机的 IP 地址: 在虚拟机中执行以下命令来获取 IP 地址:

    ip addr show

    或者

    ifconfig

    获取到类似 192.168.x.x10.x.x.x 这样的 IP 地址。

步骤 2:配置 MySQL 允许外部连接

默认情况下,MySQL 只允许 localhost(即本地连接)进行连接。为了允许外部(即本机)连接,需要对 MySQL 配置进行一些修改。

  1. 修改 MySQL 配置文件

    • 打开 MySQL 配置文件 my.cnf(在大多数 Linux 系统中,文件路径通常是 /etc/mysql/my.cnf/etc/my.cnf)。

      sudo vi /etc/my.cnf
  2. 查找并修改 bind-address: 找到 bind-address 配置项,修改为 0.0.0.0,以允许从任意 IP 地址连接:

    bind-address = 0.0.0.0
  3. 允许远程用户连接: 确保 MySQL 用户可以通过远程连接访问数据库。你需要修改 MySQL 用户权限,让用户能够从其他主机连接。

    登录 MySQL:

    mysql -u root -p

    然后授予用户远程连接权限:

    GRANT ALL PRIVILEGES ON *.* TO 'your_username'@'%' IDENTIFIED BY 'your_password'; 
    FLUSH PRIVILEGES;

    这条命令的含义:

    • 'your_username' 是你用来连接 MySQL 的用户名。
    • '%' 表示允许任何 IP 地址连接,如果你想限制特定 IP,可以将 % 替换为具体的 IP 地址,如 '192.168.x.x'
    • 'your_password' 是该用户的密码。
  4. 如果出现 “ERROR 1819 (HY000): Your password does not satisfy the current policy requirements” 错误。这是因为不符合mysql的密码设置规范,原因可能因为密码设置的过于简单报错。如果想要查看MySQL完整的初始密码规则,登陆后执行以下命令: SHOW VARIABLES LIKE ‘validate_password',

    密码的长度是由validate_password_length决定的,但是可以通过以下命令修改

    set global validate_password_length=4;

    validate_password_policy  决定密码的验证策略,默认等级为MEDIUM(中等),可通过以下命令修改为LOW(低)

    set global validate_password_policy=0;

    修改完成后密码就可以设置的很简单,比如1234之类的。

  5. 重启 MySQL 服务: 修改配置后,需要重启 MySQL 服务使配置生效:

    sudo systemctl restart mysqld

步骤 3:检查防火墙设置

如果虚拟机上启用了防火墙,确保 MySQL 的端口(默认是 3306)已经开放。

  1. 检查防火墙规则: 查看是否有规则阻止连接:

    sudo firewall-cmd --list-all

  2. 允许 3306 端口: 如果防火墙阻止了 3306 端口,可以运行以下命令允许该端口通过防火墙:

    sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent sudo firewall-cmd --reload

通过以上步骤,你应该能够从本机连接到虚拟机上的 MySQL 数据库。