Oracle VM Manager の MySQL 接続時に Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' が発生
TL;DR
- Oracle VM Manager の MySQL に mysql クライアントで接続する際に Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' が発生した
- Oracle VM Manager の MySQL は my.cnf を /u01/app/oracle/mysql/data に配置し、起動時に --defaults-file で指定していた
- mysql コマンドクライアントの -S オプションで sock ファイルの PATH を指定し接続できた
環境
事象
Oracle VM Manager の内部では Weblogic Server と MySQL がインストールされています。Oracle VM Manager 上の MySQL について確認したいと思い mysql
コマンドで接続しようとしたところ、以下のメッセージで接続ができませんでした。
$ mysql -u root -p Enter password: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
/var/lib/mysql 配下を確認すると mysql.sock
がないので、ネットの情報などから touch コマンドで sock ファイルを手動作成しましたが事象は変わらず。
調べたこと
OracleVM の MySQL は起動時に /u01/app/oracle/mysql/data 配下の my.cnf ファイルを --defaults-file
オプションで指定しているようでした。
$ systemctl status ovmm_mysql.service ● ovmm_mysql.service - LSB: start and stop MySQL Loaded: loaded (/etc/rc.d/init.d/ovmm_mysql; bad; vendor preset: disabled) Active: active (running) since 火 2021-10-05 08:42:59 JST; 11h ago Docs: man:systemd-sysv-generator(8) Process: 1039 ExecStart=/etc/rc.d/init.d/ovmm_mysql start (code=exited, status=0/SUCCESS) CGroup: /system.slice/ovmm_mysql.service ├─1077 /bin/sh /usr/bin/mysqld_safe --defaults-file=/u01/app/oracle/mysql/data/my.cnf --user=oracle --datadir=/u01/app/oracle/mysql/data --pid-file=/u01/app/o... └─1612 /usr/sbin/mysqld --defaults-file=/u01/app/oracle/mysql/data/my.cnf --basedir=/usr --datadir=/u01/app/oracle/mysql/data --plugin-dir=/usr/lib64/mysql/pl...
上記パス(/u01/app/oracle/mysql/data)の my.cnf で [client] グループに sock は指定されていたのですが、my.cnf は /u01/app/oracle/mysql/data のみしか存在しなかったため mysql コマンドクライアント起動時に、Build 時のデフォルトである /var/lib/mysql/mysql.sock が参照されてしまっていた(?)模様…
$ cat /u01/app/oracle/mysql/data/my.cnf | grep -A 2 "\[client\]" [client] socket=/u01/app/oracle/mysql/data/mysqld.sock port=49500 $ mysql --help | grep my.cnf order of preference, my.cnf, $MYSQL_TCP_PORT, /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
対策
以下のいずれかで無事 Oracle VM Manager 上の MySQL に接続できました。
- mysql コマンドクライアントで接続時に -S オプションで sock ファイルを指定
$ mysql -S /u01/app/oracle/mysql/data/mysqld.sock -u root -p
- mysql コマンドクライアントで接続時に --defaults-file オプションで my.cnf を指定
mysql --defaults-file=/u01/app/oracle/mysql/data/my.cnf -u root -p