不能创建 mysql.sock.lock是怎么回事

2025-02-22 16:28:21
推荐回答(2个)
回答1:

一、原因:

1、linux系统一次不正常关机后,连接mysql的时候系统提示不能通过/tmp/mysql.sock文件进行连接,或者非正确关闭时,导致mysql.sock文件再次丢失,当你在次启动时出现如下错误,connect mysqld faild ,/tmp/mysql.sock can't find
mysql.sock的丢失主要是因为更改了机器名,在没有正确关闭mysqld的情况下,去执行mysqld_safe,这样他就删除已经运行的mysql.sock了。正常情况下,mysqld_safe 应该告诉我们是已经有Mysqld运行了,而上边并没有这样提示,主要是更改机器名导致mysqld_safe判断是否已经运行,去找的是newhostname.pid文件,但已经运行的mysqld生成的是oldhostname.pid, 肯定找不到newhostname.pid,所以mysqld_safe收拾一下(清理了mysql.sock),然后去重启,但是ibdata需要lock,它lock不了,还是起不了,但是老的mysql.sock就消失。
2、连接localhost通常通过一个Unix域套接字文件进行,一般是/tmp/mysql.sock。如果套接字文件被删除了,本地客户就不能连接。这可能发生在你的系统运行一个cron任务删除了/tmp下的临时文件。
如果你因为丢失套接字文件而不能连接,你可以简单地通过重启服务器重新创建得到它。因为服务器在启动时重新创建它。

二、解决方法:

方法一:
mysql --port=3306 -uroot -p123qwe*** -S /var/lib/mysql/mysql.sock
方法二:
mysql --socket=/var/lib/mysql/mysql.sock --port=3306 -uroot -p123qwe***
方法三:
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
三、步骤:

我的startmysql.sh :

my.cnf位置:

里面都是关于启动Mysql的一些东西。

vi /etc/my.cnf

默认去连接的/var/lib/mysql/mysql.sock 这个文件。
而我们的启动配置文件在:--socket=/tmp/mysql.sock
两个配置文件:启动运行的时候是在/data0/mysql/3306/my.cnf 的mysql.sock在位置/tmp/mysql.sock,而/etc/my.cnf 的mysql.sock在位置/var/lib/mysql/mysql.sock 刚好和在终端运行mysql出现在错误相同:Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

my.cnf是mysql的启动配置文件。所以为了使改动生效必须重启mysql!

回答2:

你自己 可以在 sql 的设计表里 自己设计 啊 当什么高手满 用dos啊 方法一: 尝试用MySQL Adminstrator GUI Tool登入MySQL Server,Server却回复错误讯息:Host '60-248-32-13.HINET-IP.hinet.net' is not allowed to connect to this MySQL serv...