Can 't connect to local MySQL server through socket '/tmp/mysql.sock '(2)
知其所以然
这是个本人之前遇到过多次的问题,今天在实验室做数据库测验,没带充电器只好用实验室的旧主机通过远程连接云服务器上linux下安装的数据库,再次遇到。而本人有时会突然有强迫症,花了大量时间来解决这个问题,但是测验只能延期完成了。
该错误提示的意思:无法通过socket /tmp/MySQL.sock连接到本地MySQL服务器
该错误会导致的问题:无法通过socket连接数据库,有些同学例如我之前使用软连接link的方式暂时解决了问题,但是没有从根源的配置文件f上去修改,导致了数据库重启时软连接失效,而重复多次出现该问题。
如果你只是想暂时登录,用下面的方法即可
暂时登录
1.使用TCP/IP登录
使用TCP/IP登录暂时登录到数据库,但是如果设置了外部地址登录用户权限,可能会被限制权限。
mysql -h localhost(主机地址) -P端口地址
2.如果你知道服务器启动时创建sock的路径,一般为/var/lib/mysql/mysql.sock(安装目录)与/tmp/mysql.sock,使用指定sock路径登录
mysql -u -root(用户名) -p -s sock路径
3.设置软连接,主要的思路是设置/var/lib/mysql/mysql.sock(安装目录)与/tmp/mysql.sock的软连接。
因为在数据库重启即失效,不推荐,还不如用第二个方法。
修改f配置文件,解决根源问题
首先,mysql8.0.17版本默认登录时连接的mysql.sock文件路径:
/tmp/mysql.sock
(如果你不了解mysql的连接方式,文章后面有详细解释)
这时我们需要用vim命令将f配置中,mysqld服务器启动时创建的mysql.sock修改成与连接路径匹配。
或者将mysql默认登录时连接的sock文件改为/var/lib/mysql/mysql.sock(安装目录),在f里面写上[client]的相关配置,并将socket路径写在[client]下方的配置里,否则登陆时,mysql只会去默认的/tmp下寻找mysql.sock
mysql的连接方式有什么?
1.Socket(本地连接)
登录本地数据库默认方式是使用socket连接,即当server和client在同一台服务器上的时候,我们可以直接用mysql命令登陆。连接的代码:
mysql -u root(用户名) -p或 mysql -u -root(用户名) -p -s sock路径
2.TCP/IP(协议连接)
通过协议连接mysql,mysql登陆的时候,指定参数-h,会使用tcp/ip的方式连接,如果没有指定端口的话,默认是使用3306端口。代码为:
mysql -h主机地址 -P端口地址
我们平时使用的数据库管理工具如navicat,workbench等可以使用TCP/IP连接,这样可以实现远程连接,当然在本机上也可以使用TCP/IP协议并将主机地址改为localhost连接本地数据库,但是我认为在使用本机端口还多使用了TCP/IP端口,这样效率自然不如socket高。
如果觉得《解决mysql.sock连接不上问题:Can 't connect to local MySQL server through socket '/tmp/mysql.sock '(2)》对你有帮助,请点赞、收藏,并留下你的观点哦!