Предыстория: я перехожу на php-fpm с помощью chroot. Раньше я использовал сокет для подключения к mysql. Однако доставить сокет mysql на все хосты - довольно трудная задача. Либо мне нужно смонтировать -o bind, либо жестко привязать сокет к каждому виртуальному хосту. Мне не нравится использовать mount, потому что это загрязняет команду mount большим количеством записей. С другой стороны, жесткая ссылка должна выполняться каждый раз после запуска сервера mysql. Если сервер перезагружается - жесткая ссылка недействительна, поэтому мне придется ее создать заново. С systemd все становится еще сложнее. Я не хочу дойти до этого, если мне действительно не нужно.
Поэтому я хочу подключиться через TCP, но некоторые веб-сайты используют расширение mysqli. Нет четкого способа указать протокол. Если я установил параметр хоста в «localhost», даже если сокет имеет значение null, он все равно пытается подключиться через сокет, что приводит к ошибке. Если я установлю хост на 127.0.0.1, мне будет отказано в доступе. Думаю, гранты я делал вот так:
GRANT .... on database.* to user@localhost identified by '....pass';
Поэтому, если я хочу подключиться к 127.0.0.1, мне нужно сделать
GRANT .... on database.* to user@'127.0.0.1' identified by '....pass';
также. Я как бы хочу иметь только одну запись для каждого пользователя для localhost - это упрощает экспорт пользователей.
Я пробовал установить:
[client]
protocol=tcp
Также:
[mysqld]
skip-name-resolve = 1 # and also tried 0
... безуспешно
Вопрос: Как заставить mysqli_connect использовать TCP вместо сокета и по-прежнему иметь только один хост предоставления для каждого пользователя для localhost.
Информация об ОС: ОС: Centos 7.7 DB: MariaDb 5.5 PHP версии 5.6.40 и 7.3.10 (в зависимости от того, какой vhost)