我正在按照著名的教程进行操作,现在这一步
但是我在尝试运行时遇到了问题
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
答案1
运行 postmap 并获取更详细的输出,然后在此处发布输出。希望您能从中获得一些有用的信息。
postmap -vvvq example.org mysql:/etc/postfix/mysql-virtual-box-domains.cf
答案2
mysqld 可以监听本地套接字和 tcp/ip 套接字。默认情况下,它连接到本地套接字(这是在命令行上运行“mysql”时连接到它的方式)。postgres 正在尝试通过 localhost 上的 tcp/ip 套接字进行连接,但没有成功。
因此,让 mysqld 监听两种接口类型(或者弄清楚为什么不这样做),或者让 postgres 使用本地套接字。
为了模拟 postgres 在命令行上所做的事情,你可以像这样运行它:
mysql -u mailuser -h 127.0.0.1 -p