mysql奇怪的连接问题

Posted

技术标签:

【中文标题】mysql奇怪的连接问题【英文标题】:Mysql weird connection problem 【发布时间】:2010-12-17 16:16:01 【问题描述】:

我有一个奇怪的问题。我的 ubuntu 9.04 上安装了 mysql 5.1。

我已经使用了很长时间(比如 3 个月),一切正常。直到我遇到了这个非常奇怪的问题。

当我想连接到随机数据库时,我会收到以下消息:

ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    1
Current database: test_cake

ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)
ERROR: 
Can't connect to the server

它只发生在某些数据库中,而其他数据库则完全有用且健康。之后,如果我尝试重新启动服务器,我会得到这个。

shell> /etc/init.d/mysql restart
 * Stopping MySQL database server mysqld                                        cat: /var/run/mysqld/mysqld.pid: Permiso denegado
                                                                         [fail]
 * Starting MySQL database server mysqld                                        cat: /var/run/mysqld/mysqld.pid: Permiso denegado
cat: /var/run/mysqld/mysqld.pid: Permiso denegado
cat: /var/run/mysqld/mysqld.pid: Permiso denegado
cat: /var/run/mysqld/mysqld.pid: Permiso denegado
cat: /var/run/mysqld/mysqld.pid: Permiso denegado
cat: /var/run/mysqld/mysqld.pid: Permiso denegado
cat: /var/run/mysqld/mysqld.pid: Permiso denegado
cat: /var/run/mysqld/mysqld.pid: Permiso denegado
cat: /var/run/mysqld/mysqld.pid: Permiso denegado
cat: /var/run/mysqld/mysqld.pid: Permiso denegado
cat: /var/run/mysqld/mysqld.pid: Permiso denegado
cat: /var/run/mysqld/mysqld.pid: Permiso denegado
cat: /var/run/mysqld/mysqld.pid: Permiso denegado
cat: /var/run/mysqld/mysqld.pid: Permiso denegado
cat: /var/run/mysqld/mysqld.pid: Permiso denegado
cat: /var/run/mysqld/mysqld.pid: Permiso denegado
                                                                         [fail]
("permiso denegado" is "permission denied").

我不知道该怎么办。我更改了 /var/run/mysqld/mysqld.pid 属性但仍然无法正常工作。

谁能帮帮我?

【问题讨论】:

【参考方案1】:

看看这是否可行:

su                   (become root)
su mysql             (become user mysql, or whatever account mysql runs as)
cd /var/run/mysqld   (see if the directory is accessible to mysql)
cat mysqld.pid       (see if the file is accessible)

【讨论】:

它是可访问的。无论如何,它发生在某些数据库上。如果我选择另一个(使用“使用”命令)我可以正常操作。 其实.pid文件需要写权限。尝试“echo >>mysqld.pid #testing”作为mysql。 如果文件不存在怎么办?? 我用的是centos @NagaLokeshKannumoori:如果echo >>mysqld.pid #testing 有效,文件就会在那里。如果不是,它应该给出一个错误,这将有助于诊断。例如,user mysql 可能无法写入目录(因此更改目录所有权和权限),或者设备可能已满(因此清除不需要的文件)等.

以上是关于mysql奇怪的连接问题的主要内容,如果未能解决你的问题,请参考以下文章

我的 SQLAlchemy MySQL 连接总是以休眠结束,这很奇怪吗?

奇怪的 MySQL JOIN,我想包含匹配项并且没有来自连接的匹配项

Mysql连接数据库异常汇总必收藏

mysql:为啥左连接不使用索引?

使用 JDBC 获取与 MySQL 的连接时出现“连接过多”

mysql连接超时后无法从apache DBCP连接池获取连接