2012-07-09 116 views
2

后缀被扔了一个错误说:使用unix套接字时,postfix无法与mysql表连接。 postmap成功了吗?

7月9日14时41分26秒tmail后缀/琐碎的重写[4342]:警告:连接 到MySQL服务器UNIX:在/ var /运行/ mysqld的/ mysqld的.sock:无法通过套接字'/var/run/mysqld/mysqld.sock'连接到 本地MySQL服务器(2) Jul 9 14:41:26 tmail postfix/trivial-rewrite [4342]:fatal: MySQL的:/etc/postfix/mysql-yaa-aliases.cf(0,锁定| fold_fix):查表 问题

在main.cf我:

virtual_alias_maps = mysql:/etc/postfix/mysql-yaa-aliases.cf 

在mysql-yaa-aliases.cf我:

hosts = unix:/var/run/mysqld/mysqld.sock 
# hosts = 127.0.0.1 
user = yaa_admin 
password = ******** 
dbname = yaa 
query = SELECT dest FROM yaa_active_aliases WHERE address='%s' 

如果我使用127.0.0.1它的工作原理另外,如果我(不理想,我希望能有一个插座的速度。)用postmap它的工作原理测试插座:

# postmap -q "[email protected]" mysql:/etc/postfix/mysql-yaa-aliases.cf 
[email protected], [email protected] 

当我使用strace的上做文章重写守护我得到:

connect(11, {sa_family=AF_FILE, path="/var/run/mysqld/mysqld.sock"}, 110) = -1 ENOENT (No such file or directory) 

尽管strace的使用postmap我得到:

connect(4, {sa_family=AF_FILE, path="/var/run/mysqld/mysqld.sock"}, 110) = 0 

顺便说一句 - 目前正在运行的Postfix 2.7,但故障仍然显示有2.9

+0

顺便说一下,使用unix:和127.0.0.1行成功测试映射 – skotos 2012-07-09 04:50:07

回答

5

发现它:) - 平凡重写发生在一个chroot监狱,因此套接字文件真的不存在。

解决方案(感谢https://serverfault.com/questions/229389帮助我与此),就是把它添加到/ etc/fstab中:

/var/run/mysqld /var/spool/postfix/var/run/mysqld bind defaults,bind 0 0 

从而使后缀保持其chroot的配置,并给予它访问MySQL插座。

+5

如何使用'host'值'127.0.0.1'?它帮助我解决了这个问题。它使用不写入套接字的TCP连接(与unix上的'localhost'值不同)。 – pevik 2013-09-18 21:06:36

+0

我认为使用TCP连接是一个更好的解决方案。值得单独回答这个问题。编辑:我明白了,问题关闭了。噢,我得到了我的答案;-) – 2016-03-06 12:10:17

+0

@pevik我想使用127.0.0.1,但仍然出现错误无法连接到上的MySQL服务器。任何指针? – coder006 2016-05-25 18:04:23