このページは機械翻訳したものです。
このセクションでは、NDB Cluster の実行に適用される MySQL 標準セキュリティー手順について説明します。
一般に、MySQL をセキュアに実行するための標準の手順は、NDB Cluster の一部として MySQL Server を実行する場合にも適用されます。 まず、MySQL Server は常にmysql オペレーティングシステムユーザーとして実行する必要があります。これは、標準 (非クラスタ) 環境での MySQL の実行とは異なりません。mysql システムアカウントは、一意かつ明確に定義されるべきです。 幸運にも、これは新しい MySQL インストールのデフォルトの動作です。 次に示すようなシステムコマンドを使用して、mysqld プロセスがmysql オペレーティングシステムユーザーとして実行されていることを確認できます:
shell> ps aux | grep mysqlroot 10467 0.0 0.1 3616 1380 pts/3 S 11:53 0:00 \ /bin/sh ./mysqld_safe --ndbcluster --ndb-connectstring=localhost:1186mysql 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.errjon 10579 0.0 0.0 2736 688 pts/0 S+ 11:54 0:00 grep mysqlmysqld プロセスが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 rootmysql> 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 プログラム」を参照してください。