Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 27.1Mb
PDF (A4) - 27.2Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


18.5.11.3 MySQL Cluster と MySQL のセキュリティー手順

このセクションでは、実行中の MySQL Cluster に適用される MySQL 標準セキュリティー手順について説明します。

一般に、MySQL をセキュアに実行するための標準手順は、MySQL Cluster の一部として実行している MySQL サーバーにも適用されます。なによりもまず、常に MySQL サーバーを mysql システムユーザーとして実行するようにしてください。これは、標準 (非クラスタ) 環境で実行している MySQL と違いはありません。mysql システムアカウントは、一意かつ明確に定義されるべきです。幸運にも、これは新しい MySQL インストールのデフォルトの動作です。次に示すようなシステムコマンドを使用すると、mysqld プロセスがシステムユーザー mysql として実行されていることを確認できます。

shell> ps aux | grep mysql
root     10467  0.0  0.1   3616  1380 pts/3    S    11:53   0:00 \
  /bin/sh ./mysqld_safe --ndbcluster --ndb-connectstring=localhost:1186
mysql    10512  0.2  2.5  58528 26636 pts/3    Sl   11:53   0:00 \
  /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql \
  --datadir=/usr/local/mysql/var --user=mysql --ndbcluster \
  --ndb-connectstring=localhost:1186 --pid-file=/usr/local/mysql/var/mothra.pid \
  --log-error=/usr/local/mysql/var/mothra.err
jon      10579  0.0  0.0   2736   688 pts/0    S+   11:54   0:00 grep mysql

mysqld プロセスが mysql 以外のユーザーとして実行されている場合は、それをすぐにシャットダウンしてから、mysql ユーザーとして再起動するようにしてください。このユーザーがシステム上に存在しない場合は、mysql ユーザーアカウントを作成して、このユーザーを mysql ユーザーグループに属するようにしてください。この場合、このシステム上の (mysqld--datadir オプションを使用して設定された) MySQL データディレクトリが mysql ユーザーによって所有されていること、および SQL ノードの my.cnf ファイルの [mysqld] セクションに user=mysql が含まれていることも確認するようにしてください。また、コマンド行で --user=mysql を付けて MySQL サーバープロセスを起動できますが、コマンド行オプションを使用することを忘れたために、意図せずに mysqld が別のユーザーとして実行されている可能性もあるため、my.cnf オプションを使用することをお勧めします。mysqld_safe 起動スクリプトを使用すると、MySQL が強制的に mysql ユーザーとして実行されます。

重要

絶対に mysqld をシステムの root ユーザーとして実行しないでください。これを行うと、システム上の任意のファイルが MySQL によって読み取られる可能性があるため、攻撃者によって MySQL が危険にさらされます。

前のセクションで説明したように (セクション18.5.11.2「MySQL Cluster と MySQL 権限」を参照してください)、常に、MySQL サーバーを実行したらすぐに、root パスワードを設定するようにしてください。また、デフォルトでインストールされている匿名ユーザーアカウントを削除するようにしてください。次のステートメントを使用すると、これらのタスクを実現できます。

shell> mysql -u root

mysql> UPDATE mysql.user
    ->     SET Password=PASSWORD('secure_password')
    ->     WHERE User='root';

mysql> DELETE FROM mysql.user
    ->     WHERE User='';

mysql> FLUSH PRIVILEGES;

DELETE ステートメントを実行する際は、WHERE 句を省略しないように注意してください。そうしないと、すべての MySQL ユーザーが削除される危険性があります。mysql.user テーブルを変更したら、その変更が即座に有効になるように、すぐに FLUSH PRIVILEGES ステートメントを実行してください。FLUSH PRIVILEGES を実行しなければ、次回サーバーを再起動するまで、変更が有効になりません。

注記

ndb_show_tablesndb_descndb_select_all などの多くの MySQL Cluster ユーティリティーは、認証なしでも動作し、テーブル名、スキーマ、およびデータを表示できます。デフォルトで、これらは Unix スタイルのシステムにアクセス権 wxr-xr-x (755) でインストールされます。これは、mysql/bin ディレクトリにアクセスできる任意のユーザーが実行できることを意味します。

これらのユーティリティーについての詳細は、セクション18.4「MySQL Cluster プログラム」を参照してください。


User Comments
Sign Up Login You must be logged in to post a comment.