射雕游戏初始化数据库失败,解决mysql提示Can ‘t connect to local MySQL server through socket ‘/tmp/mysql.sock ‘(2) “

启动游戏发现,初始化数据库失败,错误信息为:dial tcp 127.0.0.1:3306: connect: connection refused

mysql -uroot -p  之后输入密码提示:Can 't connect to local MySQL server through socket '/tmp/mysql.sock '(2) ";

https://blog.csdn.net/hjf161105/article/details/78850658

 

find / -name mysql.sock

这条命令,并且能查到结果的话,只需将查到的结果做一个软连接到/tmp目录下即可解决(网上都是这么解决的)。

但是,我执行了这条语句之后,并没有任何反应,没有找到mysql.sock文件。

在这之前,需要明白mysql.sock这个文件有什么用?

连接localhost通常通过一个Unix域套接字文件进行,一般是/tmp/mysql.sock。如果套接字文件被删除了,本地客户就不能连接。这可能发生在你的系统运行一个cron任务删除了/tmp下的临时文件。

如果你因为丢失套接字文件而不能连接,你可以简单地通过重启服务器重新创建得到它。因为服务器在启动时重新创建它。

如果和我一样,重启服务器还是没有任何变化,你可以先执行下面的语句:

# mysql -uroot -h 127.0.0.1 -p 
不出意外,这句话应该是可以执行的, 你现在不能用套接字建立连接因为它不见了,所以可以建立一个TCP/IP连接
如果套接字文件被一个cron任务删除,问题将重复出现,除非你修改cron任务或使用一个或使用一个不同的套接字文件,我的解决办法是重新指定一个不同的套接字,或者说,我现在没有mysql.sock文件,所以我要想办法生成一个。
首先,更改my.cnf文件,我的服务器中的目录为/etc/my.cnf,如果没有的话可以用find去查找

接下来就是保存退出,然后确保这个目录存在,并且将这个目录的权限修改一下

mkdir /var/lib/mysqld

chmod 777 /var/lib/mysqld/

准备步骤做好,然后就是mysql和mysqld服务重启

# service mysql  restart
# service mysqld restart

建完目录后,重新运行mysqld服务,发现重启成功了,那么我们再来看看为什么刚才要建这个目录呢?打开这个目录看看:

ls /var/run/mysqld
mysqld.pid  mysqld.sock  mysqld.sock.lock
发现了一个熟悉的东西,mysqld.sock,但是这个是不是我们需要的东西呢?不管他,先用这个sock文件登下mysql看看行不行:

mysql -uroot -p -S /var/lib/mysqld/mysql.sock 
Enter password: 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

这么一运行,发现好像可以了,那接下来好办了,我们把之前改的配置改回来就行了,之前的目录应该是/tmp/mysql.sock,我们可以建立一个软连接连上去就可以了,

ln -s /var/lib/mysqld/mysql.sock /tmp/mysql.sock
ls /tmp/
mysql.sock
这样,tmp目录下就有了my.cnf配置文件中需要的mysql.sock文件了,然后把my.cnf改回就行了,

mysql -uroot -p
Enter password: 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

OK,搞定!
 

 


版权声明:本文为tiging原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>