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 = 3306socket = /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.1basedir = /usr/localdatadir = /var/db/mysqlnet_retry_count = 16384log_error = /var/log/mysql/mysqld.errskip-networking=1skip-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.sockmysqli.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';
ブラウザで表示してみて確認。