MySQL接続で起こった怪奇現象

今日も引き続いてzabbixの設定をしてました。そのなかでmysqlコマンドを利用してzabbixに接続をさせてあげたかったんです。で、その時のテスト時に不可解な現象が、理解不能な現象が起きました。

MySQL上でzabbixという名前のユーザを作り、ローカルホストのログインのみパスワード無しで接続可能にしたんですね。つまりTCP/IPとかの接続はダメでローカルのsock通信のみOK、ローカルからのmysqlコマンドでつなげばOKと。

ユーザを追加したので鼻歌でも歌いながら接続試験をしてみました。

mysqlhost> sudo -u zabbix mysql
ERROR 1045 (28000): Access denied for user 'hogetan'@'localhost' (using password: NO)

が、繋がらない。見てみるとaccess deniedしてる対象ユーザがsudo元のhogetanになってる!

これじゃ繋がらないよね。でもおかしい。通常sudoすればバイナリを実行するユーザは切り替わるはずなのに切り替わってないご様子。環境変数にその辺りが入ってるのかと思いチェックしてみるも…。

mysqlhost> sudo -u zabbix env| grep hogetan
SUDO_USER=hogetan

うーんむ、怪しい感じではないなぁ。USERとかはちゃんとzabbixになってたし。しょうがないのでnologinを解除してsuしてログインしてやってみることに。

mysqlhost> sudo su - zabbix; env | grep zabbix;
mysqlhost> mysql
ERROR 1045 (28000): Access denied for user 'hogetan'@'localhost' (using password: NO)
mysqlhost> env | grep hogetan

うーむ……。最後のenvはhogetanにヒットするものが無かった。一体ドコの情報を参照しながら元のsudoユーザ名でmysqlコマンドをつなごうとしてるのだろうか。

結局、結局結局、mysqlコマンドに-uでつながせることで落着はしそうなのですが、何とも腑に落ちない結末でした。

ちなみにですがsudoをするユーザをfugatanとかにすると確かに今度はfugatanでrejectされてるんですね。なのでmysqlコマンドがかならずhogetanユーザになる、というわけでもなさそうです。またmysqlホスト、sudoを行う場所をlinuxで試してみたらこれはちゃんと所望の結果が得られました。

FreeBSD特有の挙動なのかなぁと思いながら今夜も寝れなさそうです。

解決やお心当たりのある方は是非教えて下さい。

コメントを残す