openstack的default group非常重要!!!关于在实例上安装mysql后无法远程登录的问题!!!

先说明我的镜像是ubuntu16.04哦,此处没有其他操作系统的指令提示。

由于尝试了网上各种方式,仍旧是远程登录mysql失败,解决方法参考网上的有如下:

首先检查防火墙,我的是关闭的,只是做实验用,如果你们是打开的,记得开放3306端口

(1)先检查mysql是否处于运行状态

ps -ef | grep mysql

如果只有一行,而且mysql红红的,那就是没打开啦,执行:

service mysql start/restart

openstack的default group非常重要!!!关于在实例上安装mysql后无法远程登录的问题!!!

(2)查看3306端口是否处于打开状态

netstat -tlanp | grep 3306

如果输出像这样,则证明已经打开,并且正确:

openstack的default group非常重要!!!关于在实例上安装mysql后无法远程登录的问题!!!

相反,若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,入栈规则(默认即可),如图:

openstack的default group非常重要!!!关于在实例上安装mysql后无法远程登录的问题!!!

完成后,如下,此时重新尝试telnet 虚拟机实例IP 3306,应该是可以的,然后就可以远程登录啦

openstack的default group非常重要!!!关于在实例上安装mysql后无法远程登录的问题!!!

可以通过mysql -h IP -u root -p登录root用户下的mysql,也可以通过sqlyog工具进行连接,都可以啦!