我正在关注着名的教程,我在这一步
但是我在尝试运行时遇到了问题
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 并在此处发布输出。希望你能从中得到一些有用的信息。
mysqld 可以监听本地套接字和 tcp/ip 套接字。默认情况下,它连接到本地套接字(这是在命令行上运行“mysql”时连接到它的方式)。postgres 正在尝试通过 localhost 上的 tcp/ip 套接字进行连接,但没有成功。
所以,让 mysqld 监听这两种接口类型(或者弄清楚为什么它不是应该的),或者让 postgres 使用本地套接字。
要模拟 postgres 从命令行 BTW 所做的事情,您可以像这样运行它: