共计 1627 个字符,预计需要花费 5 分钟才能阅读完成。
参考:https://www.cnblogs.com/dump/…https://blog.csdn.net/asd104/…
1. 检查虚拟机 IP 在本地是否可以 ping 通过 虚拟机 IP:172.21.0.4
本地执行一下,没有问题
2. 检查虚拟机 Mysql 的端口是否对外开放(这个必须要开放)
查看 mysql 的端口,在 mysql 命令行模式下执行以下命令就可以查看, 查到的结果是 3306
[root@localhost ~]# mysql -u root -p
mysql> show variables like ‘%port%’;
查看虚拟机的 3306 端口是否开放
cmd 下执行 telnet 172.21.0.4 3306
无法执行,别方,这是因为 Windows telnet 默认是关闭的
重新打开 cmd 窗口执行命令,结果是无法连接,这是因为虚拟机上的 3306 并没有对外开放,可以用 22 的试下效果就知道了
3. 打开 linux 的 3306 端口首先安装 iptables
如果你要改用 iptables 的话,需要安装 iptables 服务:
安装
sudo yum install iptables-services
开启 iptables
sudo systemctl enable iptables
sudo systemctl enable ip6tables
启动服务
sudo systemctl start iptables
sudo systemctl start ip6tables
打开指定端口:打开 iptables 文件
vi /etc/sysconfig/iptables
进入编辑页面,在指定位置新增以下配置。放在 -A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT 后面
进入后用 i 编辑,将下列复制进去,然后按 ESC 键,输入:wq!保存退出
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT
修改完保存退出,重启网卡服务
service iptables restart
在 windwos 下 ping 172.21.0.4 3306 还是没成功,是因为 mysql 没有给外来主机的权限解决办法:1. 改表法
[root@localhost ~]# mysql -u root -p
mysql> use mysql;
mysql>update user set host = ‘%’ where user = ‘root’;
mysql>select host, user from user;
mysql> FLUSH PRIVILEGES;
其中更新表中数据报错,不用管它,已经改好了,不信可以查表来验证
2. 授权法。例如,你想 myuser 使用 mypassword 从任何主机连接到 mysql 服务器的话。
GRANT ALL PRIVILEGES ON *.* TO ‘myuser’@’%’ IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;
FLUSH PRIVILEGES;
如果你想允许用户 myuser 从 ip 为 192.168.1.6 的主机连接到 mysql 服务器,并使用 mypassword 作为密码
GRANT ALL PRIVILEGES ON *.* TO ‘myuser’@’192.168.1.3’ IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;
FLUSH PRIVILEGES;
如果你想允许用户 myuser 从 ip 为 192.168.1.6 的主机连接到 mysql 服务器的 dk 数据库,并使用 mypassword 作为密码
GRANT ALL PRIVILEGES ON dk.* TO ‘myuser’@’192.168.1.3’ IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;
FLUSH PRIVILEGES;
4、验证远程连接虚拟机数据库访问
在 windows 中的 cmd 输入 telnet 172.21.0.4 3306
连接成功
之后就可以用 Navicat 连接虚拟机中的数据库了