我正在按照着名的教程,我正在这一步
不过,我尝试运行时遇到问题
postmap -q example.org mysql:/etc/postfix/mysql-virtual-box-domains.cf
我得到:
postmap:警告:连接到mysql服务器127.0.0.1:在'读取初始通信包'丢失连接到MySQL服务器,系统错误:0
但是我可以通过mysql连接到mysqld: mysql -u mailuser -p ,密码是“foo”。 .cf看起来像这样:
user = mailuser password = foo hosts = 127.0.0.1 dbname = mailserver query = SELECT 1 FROM virtual_domains WHERE name='%s'
可能是什么问题呢?
附录
my.cf中的相关部分如下所示:
# The MySQL server [mysqld] port = 3306 socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql skip-locking key_buffer = 16M max_allowed_packet = 1M table_cache = 64 sort_buffer_size = 512K net_buffer_length = 16K myisam_sort_buffer_size = 8M # Don't listen on a TCP/IP port at all. This can be a security enhancement, # if all processes that need to connect to mysqld run on the same host. # All interaction with mysqld must be made via Unix sockets or named pipes. # Note that using this option without enabling named pipes on Windows # (via the "enable-named-pipe" option) will render mysqld useless! # #skip-networking bind-address = 127.0.0.1
运行带有更多详细输出的postmap,并在这里输出结果。 希望你能从中得到一些有用的信息。
postmap -vvvq example.org mysql:/etc/postfix/mysql-virtual-box-domains.cf
mysqld可以监听本地套接字和tcp / ip套接字。 默认情况下,它连接到本地套接字(在命令行上运行“mysql”时,如何连接到它)。 postgres试图通过本地主机上的TCP / IP套接字连接,并没有成功。
所以,让mysqld监听两个接口types(或者找出为什么它不应该是),或者让postgres使用本地套接字。
要从命令行BTW模拟postgres正在做什么,你可以像这样运行它:
mysql -u mailuser -h 127.0.0.1 -p