このセクションでは、NDB Cluster の実行に適用される MySQL 標準セキュリティー手順について説明します。
一般に、MySQL をセキュアに実行するための標準の手順は、NDB Cluster の一部として MySQL Server を実行する場合にも適用されます。 まず、MySQL Server は常に 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
ユーザーグループの一部にする必要があります。この場合は、このシステム上の MySQL データディレクトリ (mysqld の --datadir
オプションを使用して設定) が mysql
ユーザーによって所有されていること、および SQL ノードの my.cnf
ファイルの[mysqld]
セクションに user=mysql
が含まれていることも確認する必要があります。 また、コマンド行で --user=mysql
を付けて MySQL サーバープロセスを起動できますが、コマンド行オプションを使用することを忘れたために、意図せずに mysqld が別のユーザーとして実行されている可能性もあるため、my.cnf
オプションを使用することをお勧めします。 mysqld_safe 起動スクリプトを使用すると、MySQL が強制的に mysql
ユーザーとして実行されます。
絶対に mysqld をシステムの root ユーザーとして実行しないでください。 これを行うと、システム上の任意のファイルが MySQL によって読み取られる可能性があるため、攻撃者によって MySQL が危険にさらされます。
前のセクション (セクション23.5.17.2「NDB Cluster および MySQL の権限」 を参照) で説明したように、MySQL Server を実行したらすぐに 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_tables、ndb_desc、ndb_select_all などの NDB Cluster ユーティリティーの多くも認証なしで動作し、テーブル名、スキーマ、およびデータを表示できます。 デフォルトで、これらは Unix スタイルのシステムにアクセス権 wxr-xr-x
(755) でインストールされます。これは、mysql/bin
ディレクトリにアクセスできる任意のユーザーが実行できることを意味します。
これらのユーティリティーについての詳細は、セクション23.4「NDB Cluster プログラム」を参照してください。