Documentation Home
MySQL 8.0 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 36.1Mb
PDF (A4) - 36.2Mb


MySQL 8.0 リファレンスマニュアル  /  ...  /  NDB Cluster および MySQL セキュリティー手順

このページは機械翻訳したものです。

23.5.17.3 NDB Cluster および MySQL セキュリティー手順

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

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