首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法通过套接字连接本地MySQL服务器

问无法通过套接字连接本地MySQL服务器
EN

Server Fault用户
提问于 2010-05-19 12:39:23
回答 3查看 11.3K关注 0票数 2

我试图通过运行以下命令来优化正在运行的mysql服务器的性能:

代码语言:javascript
复制
mysqld_safe --key_buffer_size=64M --table_cache=256 --sort_buffer_size=4M --read_buffer_size=1M &

之后,我无法从mysql运行的服务器连接mysql。我知道这个错误:

代码语言:javascript
复制
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)

不过,幸运的是,我仍然可以远程连接mysql。因此,我所有的are服务器仍然可以访问mysql,并且运行时没有任何问题。由于这个原因,我不想尝试重新启动mysql服务器,因为这可能会把一切搞砸。

现在我知道mysqld_safe正在启动mysql服务器,而且由于mysql服务器已经在运行,我猜这是两个mysql服务器运行和侦听同一个端口的问题。

有没有办法解决这个问题而不重新启动初始的mysql服务器?

更新:这就是ps xa \ grep "mysql“的意思:

代码语言:javascript
复制
11672 ?        S      0:00 /bin/sh /usr/bin/mysqld_safe
11780 ?        Sl   175:04 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306
11781 ?        S      0:00 logger -t mysqld -p daemon.error
12432 pts/0    R+     0:00 grep mysql

更新2:尝试重新启动。停止工作很好,但开始失败了。令我惊讶的是,mysql服务器仍然没有出现问题,所以我不知道它停止了什么。

更新3:我很确定这就是现在的问题:当我第一次启动mysql时,它将它的过程写到/var/run/mysqld/mysqld.pid,以及到/var/run/mysqld/mysqld.sock的套接字。

然后,当我运行mysqld_safe命令时,它删除了这些文件。现在我不能停止mysql服务器,因为停止命令需要这些文件。有什么办法可以恢复这些文件吗?我想pid文件只是一个进程id的文件?我不想仅仅终止这个进程,因为这个服务器上有很多写操作,并且通常在损坏的数据库中杀死mysql。

EN

回答 3

Server Fault用户

回答已采纳

发布于 2010-05-19 12:44:58

检查bind-address在您的my.cnf。它应该是0.0.0.0,以便允许本地和远程连接。

请与ps xa | grep mysql检查运行了多少个实例。

编辑

妄想:

Unix上的MySQL客户端可以通过两种不同的方式连接到mysqld服务器:使用Unix套接字文件通过文件系统中的文件连接(默认值/tmp/mysql.sock),或者使用通过端口号连接的TCP/IP。Unix套接字文件连接比TCP/IP更快,但只能在连接到同一台计算机上的服务器时使用。如果不指定主机名或指定特殊主机名localhost,则使用Unix套接字文件。

查看这里以获得一些有用的提示。

Edit2

出现Can't connect to local MySQL server的可能原因之一,似乎就是这里的问题:

有人删除了mysqld使用的Unix套接字文件(默认情况下为/tmp/mysql.sock)。例如,您可能有一个cron作业,它从/tmp目录中删除旧文件。您可以始终运行mysqladmin版本来检查mysqladmin试图使用的Unix套接字文件是否真的存在。在这种情况下,修复方法是将cron作业更改为不删除mysql.sock,或者将套接字文件放在其他地方。参见B.5.4.5节,“如何保护或更改MySQL Unix文件”。

Martin,确保socket = /var/run/mysqld/mysqld.sock在my.cnf中,我相信mysqld重新启动将解决您的问题,它应该重新创建mysqld.sock,并且您应该能够在本地连接。

票数 5
EN

Server Fault用户

发布于 2010-05-19 19:46:55

mysql日志错误日志中有什么内容(不同的发行版有不同的位置)?

您的实例设置是什么?连接到mysql并运行命令

代码语言:javascript
复制
show global variabes

注意变量socket和log-error

编辑:如果mysql正在运行,并且可以连接到它,则可以使用命令关闭它。

代码语言:javascript
复制
mysqladmin shutdown
票数 2
EN

Server Fault用户

发布于 2010-05-23 08:20:48

连接时,只需添加带有主机名的-h标志,以查看它是否有效。还尝试将--套接字=标志添加到MySQLd中。

mysql -h myserver.null.com -P 3306 -u bob -P dbname

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/143373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档