MySQLのユーザー名にLinuxの標準ユーザー名を使ってはいけない

MySQL システム開発

Linuxにはインストール直後から特定のアカウントが存在します。ディストリビューションにもよりますが、「root」や「nobody」など一般的なものから「games」のような存在意義のよくわからないもの、標準ではないもののWebサーバーなら存在する可能性の高い「apache」などがあります。

Red Hat Enterprise Linux の標準システムユーザーアカウントの説明と目的 - Red Hat Customer Portal
すべての標準システムユーザーの簡単な説明はどこで確認できますか? 次のシステムユーザーアカウントの情報はどこで確認できますか: shutdown、reboot、halt、sync、uucp、ftp

これら同名のユーザーアカウントをMySQLのユーザー名として使用するとどうなるのでしょうか?実は外部からの接続に大変苦労することになります。

具体的には、ローカルに「games」というLinuxアカウントが存在する環境からリモートのMySQLサーバーに同名のMySQLアカウントでログインしようとすると、ローカルのLinuxアカウントを指定したものとして扱われ、接続先に「192.168.0.6」を指定しているのにローカルに接続できないとのエラーが出る謎の状況に陥ります。

user@localhost:~$ mysql -h 192.168.0.6 -u games -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'games'@'localhost' (using password: YES)

普通はローカル接続以外でMySQLのルートユーザーを使用することはないはずですし、MySQLのユーザー名として「nobody」を使うこともないはずです。しかし「mail」「news」「games」あたりとなると…?DB名にこれらを使用したうえで同名のユーザーを作成するなんてことがありそうです。…ありました。

なお、Rubyなどを介してMySQLクライアントを呼び出している場合でも同様の問題が発生します。

回避する方法もあるにはあるようですが、まずはユーザー名を変更するのが安全かと思います。

Host 'xxx.xx.xxx.xxx' is not allowed to connect to this MySQL server
This should be dead simple, but I cannot get it to work for the life of me. I'm just trying to connect remotely to my My...

もっと詳しく知りたいときは?

北進総業は中小企業向けにITサポートサービスを提供しております。パソコンからクラウドまで、なんでもご相談ください。

    *必須項目

    会社名/屋号等

    氏名/担当者名*

    メールアドレス*

    電話番号

    ご用件*

    CAPTCHA*

    「私はロボットではありません」


    システム開発