最近在做数据库迁移的时候,需要在一台全新机器上部署mysql,于是呢,我把旧机器上的mysql版本和配置文件全部挪了过来,并启动了mysql,一切看似都很顺利。。。。。
安装好配置完成密码之后,兴冲冲的跑去navicat连着试一下,结果。。。啪,连不上。。。。
于是呢,到处找经验,大致的意思就是客户端没有权限登录,于是按照推荐的方式查看了权限 select user,hosts from user;
这不是妥妥的有权限吗????
这里顺便记录下如果没有权限的话怎么处理,很简单,控制台登录mysql,
use mysql; 切换到mysql表
grant
all
privileges
on
*.*
to
root@
"%"
identified
by
"123456"
; 给所有的ip添加权限
flush privileges; 刷新mysql系统权限表,让生效
就可以了:
回归问题:
再次查资料,这次针对性的去查,直接插错误码10038,不查不知道,一查吓一跳,这TM妥妥的不是3306端口没有对外开放的意思么,这么简单直接。。
于是怀疑到两个地方:
1、防火墙
2、配置问题,真的没有配置对外开放
那么一个一个来看:
iptables -L 走你。。。
并没有开启软件防火墙。。
那么再看一下端口:netstat -anp |grep 3306 截图没有筛选,凑合看吧!
果然 ,这里是啥玩意配的,我都看不懂,不管他,反正是不太对,正常情况下应该是127.0.0.1:3306 或者0.0.0.0:3306,前者是只允许本机访问,后者是所有可访问,因此我们要用navicat访问,必须修改为0.0.0.0:3306
于是编辑 vim /etc/my.cfg
添加或者修改 bind-address = 0.0.0.0
重启在次连接,没有任何问题。。。