详细解决linux安装mysql后登录报错:Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)
连接localhost通常通过一个Unix域套接字文件进行,一般会自动生成在/tmp/mysql.sock,所以我们登录mysql时是需要mysql.sock套接字的。但装完后发现/tmp下并没有mysql.sock文件也不要慌,要蛋定~
解决方式1
首先可以通过“ find / -name ‘mysql.sock’ ”找下当前环境中是否存在mysql.sock,
如果找到msyql.sock,并且不在/tmp下,直接建个软连接就可以了。不要想着把mysql.sock拷贝到/tmp下哦,这个文件是不能操作的,否则会报错cp: 无法打开"mysql.sock" 读取数据: 没有那个设备或地址。
如果本地环境下压根就没有mysql.sock这个文件,那就参考解决方式2。
ln -s /tmp/mysql.sock 路径/找到的mysql.sock
解决方式2
如果没有找到mysql.sock,那就找my.cnf文件,一般会在/etc/my.cnf,然后修改里面生成mysql.sock路径的信息,保存,重新登录就搞定了。然而~有些大哥可能连my.cnf这个文件也没有,就很神奇,很崩溃,那就跳过这个方式,看解决方式3
socket = /tmp/mysql.sock
解决方式3
如果没有my.cnf文件,其实也不一定要非得通过本地套接字的方式登录mysql,通过指定IP地址的方式也是可以登录mysql的,使用tcp方式连接mysql,而不使用本地sock方式
mysql -h127.0.0.1 -u root -p
如果通过指定ip还不能登录,或者报以下错误
那就修改my.cnf文件,注释掉下面这行,保存再重新登录就可以了。
#bind-address = 127.0.0.1
恶心的又回来了,有些大哥人家本来就没有my.cnf这个文件,改个毛线啊!哈哈哈,所以通过指定ip的方式还是行不通,最后最后,上面都解决不了你的问题,那就只能使用下面的最后一招必杀技了
最后一招必杀技
systemctl status mysqld #查看mysql的服务状态
systemctl restart mysqld #重启mysql服务
mysql -u root -p #重新登录