今天装mysql5.5.28 ,完成后,启动它mysqld后,客户端链接,结果报下如下错误。
我下意识的去tmp下查,果然没有mysql.sock文件,也没有 mysqld.sock,然后以我经验就重启mysqld吧,中间重启不下了10次,但它还未给我自动生成这个mysql.sock文件。
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysqld.sock' (2)
然后,各种百度,各种试。最后百度到mysql客户端与mysql server 通信有两种模式,一种是tcp,一种是sock了。而sock比TCP要快得多(这个没有验证过,网上说的)。
那这两种模式有什么用呢?tcp就是我们的常见的IP访问mysql server,sock 则是localhost 访问 mysql server(客户端与mysql server 同在一台物理机时,一般用这种)。
现在少了sock文件,自然直接敲mysql 去访问 server,肯定会报错了。后来我试下了这个加主机名,命令如下
mysql -uroot -h 127.0.0.1 -p123456
果然成功进入mysql 了。
但我不甘心这个问题解决不了。
于是继续百度,百度到,即然在tmp下生成不了mysql.sock,那就改my.cnf 配置文件里的sock路径呀,然后重新启去下,说不准就可以了呢。
报着试一试的心态,改了my.cnf里的sock 路径,让基指到/var/lib/mysql/下。
然后重新启动mysqld ,果不其然。可以看到mysqld.sock的文件了。
试着mysql -uroot -p 123456也可以了。
但大家注意到没,生成的文件是mysqld.sock,而不是mysql.sock,多了个d。
不知道是不是我是centos 7.1 版本的原因。