本机如何连接虚拟机MYSQL
要让本机(主机)连接到虚拟机上的 MySQL 数据库,你需要确保虚拟机和主机之间的网络连接正常,并且 MySQL 配置允许外部连接。以下是实现本机连接虚拟机 MySQL 的步骤:
步骤 1:确认虚拟机与本机的网络连接
-
确认虚拟机和主机在同一网络中:
- 如果虚拟机是使用 桥接模式(Bridge Mode) 或 host-only 网络模式(Host-Only Network),则主机和虚拟机会在同一个网络中,通常可以直接连接。
- 如果是使用 NAT 模式,可能需要做额外的端口转发,才能让虚拟机能被主机访问。
-
获取虚拟机的 IP 地址: 在虚拟机中执行以下命令来获取 IP 地址:
ip addr show
或者
ifconfig
获取到类似
192.168.x.x
或10.x.x.x
这样的 IP 地址。
步骤 2:配置 MySQL 允许外部连接
默认情况下,MySQL 只允许 localhost
(即本地连接)进行连接。为了允许外部(即本机)连接,需要对 MySQL 配置进行一些修改。
-
修改 MySQL 配置文件:
-
打开 MySQL 配置文件
my.cnf
(在大多数 Linux 系统中,文件路径通常是/etc/mysql/my.cnf
或/etc/my.cnf
)。sudo vi /etc/my.cnf
-
-
查找并修改
bind-address
: 找到bind-address
配置项,修改为0.0.0.0
,以允许从任意 IP 地址连接:bind-address = 0.0.0.0
-
允许远程用户连接: 确保 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'
是该用户的密码。
-
如果出现 “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之类的。
-
重启 MySQL 服务: 修改配置后,需要重启 MySQL 服务使配置生效:
sudo systemctl restart mysqld
步骤 3:检查防火墙设置
如果虚拟机上启用了防火墙,确保 MySQL 的端口(默认是 3306)已经开放。
-
检查防火墙规则: 查看是否有规则阻止连接:
sudo firewall-cmd --list-all
-
允许 3306 端口: 如果防火墙阻止了 3306 端口,可以运行以下命令允许该端口通过防火墙:
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent sudo firewall-cmd --reload
通过以上步骤,你应该能够从本机连接到虚拟机上的 MySQL 数据库。