我的邮件服务器(Ubuntu 10.04)使用mysql作为虚拟域,虚拟用户。 出于某种原因,mysqld已经开始拒绝来自本地主机的连接。 我在邮件服务器日志中看到这些:
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对中出现了磁盘故障。 所以这可能是我有一个损坏的configuration文件或东西。 但是邮件在驱车事件后至less工作了一个小时,所以谁知道呢?
phpmyadmin工作正常,数据库本身看起来像是完好的。
我认为/相信selinux和iptables被禁用,并没有运行。 那么…为什么mysqld拒绝来自本地主机的连接? 我应该检查什么? 如果一个.conf文件或者一个二进制文件被损坏,哪些进程可能会导致这种情况 哪些其他日志文件可能包含线索? 我在/etc/mysql/my.cnf中启用了“通用日志logging”,但是我没有收到有趣的信息。
谢谢,m00tpoint
开始解决您的问题,尝试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
用适当的pathreplace/var/lib/mysql/mysql.sock到你的mysql.sock文件。
另外,既然你说你有phpMyAdmin运行,你为什么不看看config.inc.php ,看看它是如何连接到你的mysqld 。
可能你的mysqld绑定是在特定的IP /接口上,而不是全部。
你检查了实际的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
尽pipelocalhost通常等同于127.0.0.1 ,但就MySQL而言,两者是不同的实体。
您所包含的Telnet日志部分显示Telnet首先尝试通过名称进行连接并失败。 然后通过IP地址尝试成功。 尽pipeTelnet然后报告它已经连接到localhost的MySQL,MySQL用户帐户显然是configuration为127.0.0.1 。 我怀疑这两个身份已经改变了一些configuration文件。 我不知道后缀,但我build议你检查它的configuration。 如果没有,你可以添加一个27.0.0.1的MySQL用户帐户。