Mysql接続エラー
お世話になっております。
mysqlはパッケージでインストールし、zabbixはソースからインストールしております。
mysqlのデータディレクトリを下記の様に変更したのですが、
Webアクセスすると、
Configuration file error
Error connecting to database: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
のエラーが表示され、ログを確認すると
30065:20150202:165728.022 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/data/zabbix/data/mysql.sock' (2)
のエラーが表示されます。
エラー自体も整合性が取れてません。
my.cnf---------------------------
2,5c2,3
< #datadir=/var/lib/mysql
< #socket=/var/lib/mysql/mysql.sock
< datadir=/data/zabbix/data
< socket=/data/zabbix/data/mysql.sock
---
> datadir=/var/lib/mysql
> socket=/var/lib/mysql/mysql.sock
-------------------------------------
zabbix_server.conf
-------------------------------------
> DBSocket=/data/zabbix/data/mysql.sock
-------------------------------------
mysqlのdataディレクトリを変更↓場合の作業漏れ等ご指摘頂けますでしょうか?
各アプリケーションともに再起動済みで、mysqlコマンドでは接続可能です。
新ディレクトリもタイムスタンプを見ると更新がされています。
※補足ですが、SELINUXは入ってません。また、変更前は繋がっていました。
TNK - 投稿数: 4769
Webサーバ側は、PHPのアプリケーションですので、明示的に指定し
なければ、CentOSで標準のphpパッケージを利用していると、シス
テムのデフォルトである
/var/lib/mysql/mysql.sock
を利用したはずです。
socketのパスを変更されたのであれば、明示的に、例えばmy.cnfで
クライアントのセクションに
----- ここから -----
[client]
socket=/data/zabbix/data/mysql.sock
----- ここまで -----
などと設定する必要があるでしょう。
他の設定方法として、PHP側で変更するなら、php.iniに、
----- ここから -----
mysqli.default_socket = /data/zabbix/data/mysql.sock
----- ここまで -----
とか、Zabbix側で変更するならzabbix.conf.phpに
----- ここから -----
$DB["SERVER"] = 'localhost:/data/zabbix/data/mysql.sock';
----- ここまで -----
などというように、どれか1つの設定方法で、変更した環境に合わ
せた設定変更を行ってください。
Zabbixサーバ側に関しては、
/data/zabbix/data/mysql.sock
に接続できないとのことですので、ちゃんとそのソケットが生成さ
れているかを確認してください。
生成されていないのであれば、mysqldを再起動してみてください。
ソケットが生成されているにも関わらず、Zabbixサーバから接続で
きていないのであれば、再度、Zabbixサーバのプロセスを再起動し
てみてください。
再度ログを確認される際は、タイムスタンプにもご注意の上、過去
のログを参照してしまわないようにしてください。
seryukusu - 投稿数: 10
有難うございます。
下記、現状の設定でして
grep sock /etc/php.ini
----------------------------
; Default timeout for socket based streams (seconds)
; http://www.php.net/manual/en/filesystem.configuration.php#ini.default-so...
default_socket_timeout = 60
; Default socket name for local MySQL connects. If empty, uses the built-in
; http://www.php.net/manual/en/mysql.configuration.php#ini.mysql.default-s...
mysql.default_socket =
; Default socket name for local MySQL connects. If empty, uses the built-in
; http://www.php.net/manual/en/mysqli.configuration.php#ini.mysqli.default...
mysqli.default_socket =
---------------------------------
grep sock /data/zabbix/www/conf/zabbix.conf.php
--------------------------------
-------------------------------- ※無
/etc/my.cnf
--------------------------------
[mysqld]
#datadir=/var/lib/mysql
#socket=/var/lib/mysql/mysql.sock
datadir=/data/zabbix/data
socket=/data/zabbix/data/mysql.sock
[client]
socket=/data/zabbix/data/mysql.sock
----------------------------------
ls -la /data/zabbix/data/mysql.sock
------------------------------------
srwxrwxrwx 1 mysql mysql 0 Feb 2 18:20 /data/zabbix/data/mysql.sock
------------------------------------
ソケットも生成されている模様です。
簡単な事の様な気がしますが、どうしてもうまくいかない為、socketのみデフォルトのパスで行く事に
しました。ご回答有難うございました。