这里是 mail.log
server localhost: Can't connect to local MySQL server through socket '/var/run/mysqld
/mysqld.sock' (2)
Mar 23 23:07:19 ubuntu postfix/trivial-rewrite[6417]: fatal: mysql:/etc/postfix/mysql_virtual_alias_maps.cf(0,lock|fold_fix): table lookup problem
Mar 23 23:07:20 ubuntu postfix/smtpd[6401]: warning: problem talking to service rewrite: Success
Mar 23 23:07:20 ubuntu postfix/cleanup[6296]: warning: problem talking to service rewrite: Connection reset by peer
Mar 23 23:07:20 ubuntu postfix/master[6291]: warning: process /usr/lib/postfix/trivial-rewrite pid 6417 exit status 1
Mar 23 23:07:20 ubuntu postfix/master[6291]: warning: /usr/lib/postfix/trivial-rewrite: bad command startup -- throttling
netstat -l|grep mysql
tcp 0 0 localhost:mysql *:* LISTEN
unix 2 [ ACC ] STREAM LISTENING 10671 /var/run/mysqld/mysqld.sock
我可以通过这个连接
mysql -u postfix -h 127.0.0.1 -p postfix
答案1
启动本地 MySQL 服务器。
答案2
MySQL 通常有两种方式连接它:Unix套接字和IP地址。
在上面的错误信息中,Postfix 使用套接字,而您的测试使用 IP 地址。
检查套接字是否存在以及是否位于 Postfix 认为的位置(/var/run/mysqld/mysqld.sock
)。
还要检查 Postfix 使用的用户名和密码是否通过套接字对您有效。MySQL 权限关心用户名、密码和连接的来源。您可以从一个 IP 地址连接并不意味着您可以从另一个 IP 地址连接。这意味着,如果您从不同的地方连接,则使用相同的用户名,您可以拥有不同的密码和权限。这还包括通过 Unix 套接字连接。确保您的测试以与 Postfix 连接相同的方式进行。
答案3
您的操作系统版本和 mysql 版本是什么?根据它们的版本,您可以使用类似 /etc/init.d/mysql (在某些版本中可能是 mysqld) status 来查明它是否在 ubuntu 中运行。
然后您可以使用locate mysqld.sock来查明套接字文件是否实际位于postfix用户尝试使用的位置。