mysqld 拒绝来自本地主机的连接

mysqld 拒绝来自本地主机的连接

我的邮件服务器 (Ubuntu 10.04) 使用 mysql 作为虚拟域和虚拟用户。出于某种原因,mysqld 已开始拒绝来自 localhost 的连接。我在邮件服务器日志中看到以下内容:

Oct 6 00:31:14 apollo postfix/trivial-rewrite[16888]: fatal:
proxy:mysql:/etc/postfix/mysql-virtual_domains.cf(0,lock|fold_fix): table
lookup problem

和:

Oct 7 13:39:15 apollo postfix/proxymap[25839]: warning: connect to mysql server
127.0.0.1: Lost connection to MySQL server at 'reading initial communication
packet', system error: 0

我还在 auth.log 中收到以下内容:

Oct 6 22:33:31 apollo mysqld[31775]: refused connect from 127.0.0.1

Telnet 到本地端口:

root@apollo:/var/log/mysql# telnet localhost 3306
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
root@apollo:/var/log/mysql#

我不确定为什么会发生这种情况,但那天早些时候 RAID 1 对中发生了磁盘故障。因此,我的配置文件或类似的东西可能已损坏。但邮件在驱动器事件发生后至少一个小时内仍在运行,所以谁知道确切原因呢?

phpmyadmin 运行良好,并且数据库本身看起来完好无损。

我认为/相信 selinux 和 iptables 已被禁用且未运行。那么...为什么 mysqld 拒绝来自 localhost 的连接?我应该检查什么?如果 .conf 文件或二进制文件损坏,哪些进程可能会导致这种情况?哪些其他日志文件可能包含线索?我在 /etc/mysql/my.cnf 中启用了“常规日志记录”,但在那里没有得到有趣或有用的条目。

谢谢,m00tpoint

答案1

要开始解决您的问题,请尝试netstat以下命令:

# netstat -anp | egrep '3306.*LISTEN'
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      4118/mysqld         
# 

或尝试这个:

mysql --socket=/var/lib/mysql/mysql.sock

/var/lib/mysql/mysql.sock用适合您的文件的路径替换mysql.sock

另外,既然你说你正在phpMyAdmin运行,为什么不看看config.inc.php它是如何连接到你的呢mysqld

可能你的绑定mysqld是在特定的 IP/接口上,而不是全部。

答案2

您检查过实际的 mysql 日志文件吗?

/var/lib/mysql/"your-server-name".err

另外也许您达到了 max_connections 的限制。运行此命令进行检查:

show variables like 'max_connections';
show status like 'Max_used_connections';

如果 max_connections 和 Max_used_connections 相等,则需要提高 max_connections

答案3

尽管localhost通常相当于127.0.0.1,但就 MySQL 而言,两者是不同的实体。

您包含的 Telnet 日志部分显示 Telnet 首先尝试通过名称连接,但失败了。然后它尝试通过 IP 地址连接并成功。尽管 Telnet 随后报告它已连接到 的 MySQL localhost,但 MySQL 用户帐户显然是为 设置的127.0.0.1。我怀疑这两个身份已在某些配置文件中更改。我不了解 postfix,但我建议您检查其配置。如果失败,您可以为 增加一个 MySQL 用户帐户27.0.0.1

相关内容