PHP8からMariaDBへUnix Socketで接続する設定

FreeBSDのMariaDBへphpからUnix socketで接続できるようにしたときの覚書。

環境: FreeBSD 14.0, MariaDB 15.1, PHP 8.3.6

(FreeBSDの)PHPで接続先を「localhost」に設定すると、Unix socketを参照しようとする。
「127.0.0.1」すればTCP経由で接続するけど、せっかくなのでTCPを無効にして、Unix socketだけで待ち受けするようにしてみた。

TCPを無効にするには公式サイトを参考に。
参考: Configuring MariaDB for Remote Client Access - MariaDB Knowledge Base

まずは待ち受け中のポート確認。
# netstat -an -p tcp

MariaDBの設定ファイル編集。
「port」をコメントアウトする。
# cd /usr/local/etc/mysql/
# less my.cnf

[client-server]
#port   = 3306
socket  = /var/run/mysql/mysql.sock

「bind-address」をコメントアウトして、「skip-networking」「skip-bind-address」を追記する。
# less conf.d/server.cnf

[mysqld]
user                            = mysql
# port                          = 3306 # inherited from /usr/local/etc/mysql/my.cnf
# socket                        = /var/run/mysql/mysql.sock # inherited from /usr/local/etc/mysql/my.cnf
#bind-address                   = 127.0.0.1
basedir                         = /usr/local
datadir                         = /var/db/mysql
net_retry_count                 = 16384
log_error                       = /var/log/mysql/mysqld.err

skip-networking=1
skip-bind-address

MariaDB再起動。
# service mysql-server restart

待ち受け中のポート確認。
# netstat -an -p tcp

3306ポートがないのでOK。

phpの設定ファイルにUnix Socketのパスを記述する。
# less /usr/local/etc/php.ini

pdo_mysql.default_socket = /var/run/mysql/mysql.sock
mysqli.default_socket = /var/run/mysql/mysql.sock

php-fpm再起動。
# service php-fpm restart

phpMyAdminで動作テストする。
設定ファイルを編集。
「127.0.0.1」を「localhost」へ変更する。
# less phpMyAdmin/config.inc.php

$cfg['Servers'][$i]['host'] = 'localhost';

ブラウザで表示してみて確認。


【関連記事】