Postfixadmin 无法连接到 mysql 数据库(MariaDB)

Postfixadmin 无法连接到 mysql 数据库(MariaDB)

我正在尝试使用 Postfix 建立自己的邮件服务,但在设置阶段遇到了一个问题,那就是 Postfix 无法连接到数据库。错误日志的内容如下:

⛔数据库连接字符串:mysql:host = localhost; dbname = postfixadmindb; charset = UTF8
⛔连接数据库时出现问题,请检查数据库配置(config.local.php 中的 ($CONF['database_*'] 条目)
⛔SQLSTATE[HY000] [2002] 权限被拒绝

这是配置文件:

<?php
        $CONF['database_type'] = 'mysqli';
        $CONF['database_host'] = 'localhost';
        $CONF['database_user'] = 'postfixuser';
        $CONF['database_password'] = 'XXXXXXXX';
        $CONF['database_name'] = 'postfixadmindb';
        $CONF['configured'] = true;
        $CONF['encrypt'] = 'md5crypt';
        $CONF['setup_password'] = 'the setup password';
?>

首先,我尝试正常连接数据库:
sudo mysql -u postfixuser -p'thecorrectpassword' -h localhost postfixadmindb
一切正常,并按预期进入 MariaDB shell。
然后我授予postfixuser数据库中的所有权限,但这并没有解决问题。
我检查了下面的日志/var/log/mysql/error.log,但它是空的

我在运行 Ubuntu 22.04.1 LTS 的 WSL 机器上执行此操作,使用 apache 提供 postfixadmin 网页。

答案1

运行sudo mysql -u postf..将以 root 权限运行 mysql 命令行客户端,并且不足以检查非特权用户是否也可以连接到 mysql 套接字。

尝试在没有 sudo 的情况下再次运行该程序,如果失败并出现错误,例如Can't connect to local server through socket '/run/mysqld/mysqld.sock'可能存在文件系统权限问题,导致 postfix 用户无法通过 MariaDB 套接字连接到数据库。

解决方案就是更改该目录/路径上的文件系统权限。

sudo chmod 0755  /run/mysqld/

需要注意的是,/runand/or下的目录/var/run通常由 systemd 在启动时创建,在本例中由 MySQL/MariaDB 服务单元组成。

您可能需要编辑 systemd 单元文件使权限更改持久化。
如果RuntimeDirectory使用该指令,则需要使用RuntimeDirectoryMode=0755指示。

如果临时文件.d被使用,编辑其规范

相关内容