openstack的default group非常重要!!!关于在实例上安装mysql后无法远程登录的问题!!!
先说明我的镜像是ubuntu16.04哦,此处没有其他操作系统的指令提示。
由于尝试了网上各种方式,仍旧是远程登录mysql失败,解决方法参考网上的有如下:
首先检查防火墙,我的是关闭的,只是做实验用,如果你们是打开的,记得开放3306端口
(1)先检查mysql是否处于运行状态
ps -ef | grep mysql
如果只有一行,而且mysql红红的,那就是没打开啦,执行:
service mysql start/restart
(2)查看3306端口是否处于打开状态
netstat -tlanp | grep 3306
如果输出像这样,则证明已经打开,并且正确:
相反,若3306前面是127.0.0.1,则需要修改my.cnf,一定要修改mysql默认执行使用的my.cnf,可以参考这个网址:
https://blog.csdn.net/fdipzone/article/details/52705507
找到对应的my.cnf,修改bind-address为0.0.0.0或者直接注释掉也ok的(表示监听所有客户端连接),一定注意修改的是server配置文件,不是client内的
(3)检查root用户能否在远程登录,这个不具体
修改用户访问权限:
mysql -u root -p
use mysql;
update user set host='%' where user='root;
解释:host改为%,允许所有机器访问
重启mysql:
service mysql restart
(4)使用telnet来检测问题:
先在本地执行
telnet 127.0.0.1 3306
如果成功,证明mysql是在监听,然后去主机执行:
telnet 你的IP 3306
如果成功,则ok;如果失败,则是安全组的问题(只针对于搭建openstack的小伙伴们)
因为openstack默认是不会打开3306端口的,所以登录dashoard,找到project下的network中的security groups,去default group管理规则,新增一条定制tcp,端口设为3306,入栈规则(默认即可),如图:
完成后,如下,此时重新尝试telnet 虚拟机实例IP 3306,应该是可以的,然后就可以远程登录啦
可以通过mysql -h IP -u root -p登录root用户下的mysql,也可以通过sqlyog工具进行连接,都可以啦!