为什么SQLyog UItimate等软件连接不上mysql

哎,这事儿我以前也遇到过,真的挺头疼的。
记得那会儿我是在2 01 9 年,公司新上线了一个项目,用的是MySQL数据库。
那天我们团队的小张突然说,SQLyogUltimate连不上MySQL了,我当时就懵了,这可是我们日常维护的重要工具啊。

首先,我打开控制台,输入startmysqld,结果提示服务已经启动了,那我就纳闷了,为啥还连不上呢?然后我就一个个排查,先看环境变量,发现MySQL的bin目录没配置到环境变量里,这我就明白了,赶紧手动添加了上去。

然后我又检查了端口,发现3 3 06 端口被占用了,原来是另一个服务在用,这我就把那个服务停了。
接着我又去看了防火墙,发现它把SQLyogUltimate的通信给阻止了,我临时关闭了防火墙,一试,果然能连上了。

再后来,我还发现SQLyogUltimate里的用户名和密码填错了,这真是低级错误啊。
最后,我还检查了MySQL的配置文件,发现bind-address设置成了1 2 7 .0.0.1 ,这显然是不行的,我把它改成了0.0.0.0。

整个过程下来,真的是费了好大劲。
不过好在最后还是解决了,项目也能正常维护了。
这事儿给我留下的印象就是,遇到问题要一步步排查,不能急躁,也不能漏掉任何一个细节。
记得当时还特意记录下来,以后再遇到类似问题,就能快速解决了。

解决SQLyog连接MySQL8时报错:错误号码2058

说白了,解决SQLyog连接MySQL8 报错2 05 8 就两招:改用户密码加密方式或者改全局配置。
这事复杂在MySQL8 默认用了SQLyog不支持的加密插件。

展开讲,先说最重要的:方法一只要改用户密码加密方式就行。
去年我们跑的那个项目,直接用ALTERUSER'root'@'localhost'IDENTIFIEDWITHmysql_native_passwordBY'your_password'这行命令改密码,大概1 秒就成功了,前提是得用命令行登录MySQL。
另外一点要注意,改完密码后必须重启MySQL服务,不然根本没用。
还有个细节挺关键的,比如改root用户密码,如果用户多了,建议先备份好数据再操作。

思维痕迹:我一开始也以为用SQLyog自带的工具改就行,后来发现MySQL8 的版本太新了,根本不兼容caching_sha2 _password,必须用命令行手动改。

结尾:建议优先试试方法一,简单直接。
如果用户多或者不想改全局配置,方法二虽然也能解决,但说实话挺坑的,改完可能其他老客户端连不上了。
你们觉得还有没有更省事的方法?

sqlyog community连接到我的sql主机出现服务名无效

等等,我上周帮朋友排查过类似问题。
他直接用内网IP连外网服务器,结果提示服务名无效。
折腾了半天,原来是DNS没解析对。
这事儿提醒我,连接数据库真得像解谜一样,一步步来。

你看,先ping下域名试试,再看看服务是不是真的在跑。
我上次在阿里云上弄过,安全组没放行端口,直接ping不通。
临时关防火墙能连上,赶紧加规则,这一来一回耽误半天。
但关键还是得看用户权限,有个哥们儿权限设成localhost,结果远程连不上,还以为网络不行。

最逗的是SQLyog版本问题。
有个老代码库,MySQL8 .0后连不上,升级SQLyog才好使。
这就像换手机系统,旧App不兼容似的。
不过话说回来,为啥MySQL要整这么多加密方式?caching_sha2 _password搞得连本地登录都费劲,临时改回mysql_native_password倒是省事。

对了,容器化部署时端口映射不能忘。
我试过用Docker连MySQL,结果忘了映射3 3 06 端口,只能在宿主机上用telnet测。
不过容器网络还是有点意思,感觉像隔层玻璃看鱼,虽然能看到但摸不着。

所以啊,连接数据库这事儿,真得像找茬一样,从最简单的查起。
比如先确认IP对不对,再看看服务是不是真的在。
但有时候也怪,明明都对了,就是连不上,这时候是不是该怀疑是服务器被施了魔法?