出现这个问题,首先要确定以下设置是否完成.
1.linux的防火墙是否开启,建议关闭
2.本地数据库mysql是否允许远程连接
3.本地系统3306是否对外开放(我是在这个地方出了问题).
步骤一:首先查看防火墙是否开启,常用命令
[root@localhost ~]# service iptables status
iptables: Firewall is not running.
参考博客
:https://blog.csdn.net/lv_shijun/article/details/52453882
步骤二:其次,数据库是否允许远程连接
增加一个host名字为%,密码为root的用户
修改权限:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
刷新权限:flush privileges;
参考博客:
https://blog.csdn.net/weixin_42813765/article/details/82185103
步骤三:最后为本机系统增加入站规则(关闭或者开启本机防火墙无效)
即增加一个需要开放远程连接的端口号
参考博客:http://www.cnblogs.com/klsw/p/8782595.html
相关操作
1.远程访问数据库命令:mysql -h服务器 ip地址 -P 3306 -uroot -p
如:mysql -h192.168.25.1 -P3306 -uroot -p
需要注意的问题,虚拟机连接宿主主机的ip为当前网段的网关,即XXX.XXX.XXX.1
如果出现这个错误,说明无法连接数据库,很有可能是远程端口号未开启,参照步骤三操作.
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.25.1' (110)
还有可能出现这个错误,偶然出现的现象,具体原因不详,过一段时间就成功连接了
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading authorization packet', system error: 0
2.如何确定3306端口连通性
wget ip:port
如:wget 192.168.25.1:3306
如果连通会显示:
如果连接失败,会自动尝试重连.