要让本机(主机)连接到虚拟机上的 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 数据库。
到此这篇关于本机连接虚拟机mysql的操作指南的文章就介绍到这了,更多相关本机连接虚拟机mysql内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论