1、检查是否能够## ping通虚拟机地址
2、检查虚拟机Mysql的端口3306是否对外开放
telnet ip 3306
注:一般22端口是默认开放的,3306需要设置对外开放
3、编辑防火墙文件打开3306端口
vi /etc/sysconfig/iptables
模仿22端口开放命令添加如图所示的一行即表示对外开放3306端口
注:若centos7没有iptables,则执行以下操作
a、停止并屏蔽firewalld服务
systemctl stop firewalld
systemctl mask firewalld
b、安装iptables-services软件包
yum install iptables-services
c、在引导时启用iptables服务
systemctl enable iptables
d、启动iptables服务
systemctl start iptables
e、保存防火墙规则
service iptables save或/usr/libexec/iptables/iptables.init save
另外:管理iptables服务
systemctl [stop|start|restart] iptables
4、远程连接虚拟机数据库访问
报1130错误
端口都开启了,但还是连不上,telnet 端口报错如下:
原因:一般mysql是不允许除了本机用户以外的用户进行访问的,所以需要给特定ip的用户开放权限,通过这个用户去访问连接
解决方法:给特定ip的用户开放权限
a.在本机登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称’%’。
mysql>use mysql;
查询出数据库的用户名
mysql>select host,user,password from user;
把用户表里面的host项改为“%”
mysql>update user set host = '%' where user ='zabbix';
mysql>flush privileges; #刷新用户权限表
mysql>select host,user,password from user where user='zabbix';
b.在本机登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称’%’
mysql>insert into user values('localhost', 'zabbix', '', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y','','','','',0,0,0,0,'','');
注:若没有此步骤使用zabbix用户连接mysql时会报1044错误
c. 重启mysql
systemctl restart mariadb;
重新使用zabbix用户连接,连接成功!