MySQL運営ガイド

MySQLのセキュリティ対策

MySQL のセキュリティ

MySQLサーバに接続するときは、パスワードを使用すべきです。パスワード以外の全ての情報はテキストで転送されるので、覗き見される恐れがあります。さらにSSHで暗号化通信すれば覗き見の心配も解消されるでしょう。

MySQL システムを安全にするための注意点

  • 全ての MySQL ユーザにパスワードを使用する
  • mysqld を実行している Unix ユーザだけが読み込み/書き込み可能
  • process 特権を全てのユーザに与えない(この許可がある人は誰でも mysqladmin
    processlist コマンドで実行されているクエリーの中身を見ることができる)。
  • file を全てのユーザに与えない(ユーザがこの特権を持つ場合、mysqld
    デーモンを実行している Unix
    ユーザーの権限で、ファイルシステム内のどこにでもファイルを書き込むことができる)。
  • DNS を信用しない場合、特権テーブル内にはホスト名の代わりに IP
    を使用すべきだ。mysqld への --secure
    オプションは原理上はホスト名を安全にする。どんな場合でも、ホスト名へのワイルドカードの使用については、注意深くすべきだ。

MySQLの安全な起動法

MySQL デーモンを Unix の root ユーザーで実行しないように。 mysqldは任意のユーザで実行できます。MySQL を動作させるユーザーは以下のようにしたら良いでしょう。

  • login を許可しない (shell や passwd を与えない) 
  • wheel や root group にしない
  • 全く新しく作成した group に属する 

MySQLサーバの起動

# mysqld -u mysqluser [オプション] &

※mysqld を 他の Unix ユーザーで起動したとしても、MySQL の user テーブルの root ユーザーの名前を変更する必要はありません。

セキュリティに影響するmysqlオプション

--secure
gethostbyname() から返される ip がオリジナルのホスト名に戻せるかどうかをチェックします。これは、外の誰かが他のホストを真似てアクセスを得ることを難しくします。
--skip-grant-tables
特権システムを全く使用しません。全アカウントに全データベースへの 完全なアクセス を与えます。
--skip-name-resolve
ホスト名を解析しなません。特権テーブル中の全ての Host項目は IP 番号か localhost です。
--skip-networking
ネットワーク (TCP/IP) 経由の接続を許可しません。mysqld への全ての接続は、Unix ソケットで行われます。

関連記事