Итак, в процессе обновления postfixadmin с версии 3.1 на 3.3.11 (OS Gentoo) в браузере получил ошибку
Database — MySQL (pdo_mysql) extension not found
…
Database connection string : mysql:host=localhost;dbname=mail;charset=UTF8 Problem connecting to database,
check database configuration ($CONF[‘database_*’] entries in config.local.php) could not find driver
…
Ключевая фраза «pdo_mysql extension not found«. Решение простое. Нужно собрать php с поддержкой PDO с последующей перезагрузкой php-fpm
Обновляем страницу в браузере и видим, что postfixadmin «видит» поддержку pdo_mysql, однако с базой соединится не может. Возникает ошибка
Database — MySQL support available
…
Database connection string : mysql:host=localhost;dbname=mail;charset=UTF8
Problem connecting to database, check database configuration ($CONF[‘database_*’] entries in config.local.php)
SQLSTATE[HY000] [2002] No such file or directory
…
Для ее устранения в файле конфигурации config.local.php ищем строку
$CONF['database_host'] = 'localhost';
и меняем на строку
$CONF['database_host'] = '127.0.0.1';
Снова обновляем страницу в браузере и получаем еще одну ошибку
Everything seems fine… attempting to create/update database structure
Exception message: Postfixadmin DB update failed. Please check your PHP error_log — check logs!
Something went wrong while trying to apply database updates, a message should be logged — check PHP’s error_log ()
[error] FastCGI sent in stderr: «PHP message: Invalid query: SQLSTATE[42000]: Syntax error or access violation: 1142 CREATE command denied to user ‘postfix’@’localhost’ for table ‘config’
Это говорит о том, что у пользователя postfix базы mysql нет права CREATE для обновления схемы БД postfixadmin’а. Решение этой проблемы — дело техники
P.S.
Для таких продуктов как postfixadmin, phpmyadmin и некоторых других параметры конфигурации указаны в файле config.inc.php. Это дифолтный конфиг и он будет перезаписан в процессе следующего автоматического обновления (если таковое используется). Чтобы избежать потери «своих» настроек, рекомендуется хранить их в файле config.local.php, который нужно создать в той же папке, рядом с config.inc.php

- Системный администратор с 2000 года
- Участник Freelancehunt, Хабр Q&A, cyberforum
- Кейсы