このセクションでは、ユーザーを作成する方法について説明します。
ユーザーを作成できるユーザー
データベースの運用において、さまざまなユーザーを作成し、それぞれに適切な権限を付与する必要が生じることがよくあります。一般的に、CREATE USER 権限を持つユーザーはユーザーを作成できます。
CREATE USER 権限は比較的大きな権限であるため、デフォルトではクラスタ管理者とテナント管理者のみがこのシステム権限を保有しています。他のユーザーがユーザーを作成する必要がある場合は、CREATE USER 権限を付与する必要があります。権限の付与に関する操作については、直接権限付与を参照してください。
ユーザー名のルール
ユーザー名を指定する際には、以下の制限事項に注意してください:
ユーザー名の一意性:各ユーザー名はテナント内で一意である必要があります。
ユーザー名はテナント内で一意ですが、異なるテナント間では同名のユーザーが存在できます。そのため、
ユーザー名@テナント名の形式で、システム全体で一意のテナントユーザーを識別できます。システムテナントとMySQLテナントは同じ互換モードに属しているため、システムテナントと通常のテナントのユーザーを区別するために、システムテナントのユーザー名には特定のプレフィックスを使用することを推奨します。
ユーザー名の命名規則:
OBClient、ODCなどのクライアントを使用してユーザーを作成する場合、ユーザー名の長さは64バイトを超えてはなりません。
OCPを使用してユーザーを作成する場合、ユーザー名は英字で始まり、大文字、小文字、数字、アンダースコアを含むことができ、長さは2~64文字である必要があります。
SQLステートメントを使用して最小限のデータベース権限を持つユーザーを作成する
CREATE USER ステートメントを使用してユーザーを作成できます。ユーザーを作成するには、CREATE USER のシステム権限が必要です。ユーザー作成時には、最小権限の原則を守ることを推奨します。これは、すべてのユーザーが自身のタスクを実行するために必要な最小限の権限のみを持つというものです。
ユーザー作成のSQLステートメントは以下のとおりです:
CREATE USER [IF NOT EXISTS] user_specification_list
[REQUIRE {NONE | SSL | X509 | tls_option}];
user_specification_list:
user_specification [, user_specification ...]
user_specification:
user IDENTIFIED BY 'authstring'
| user IDENTIFIED BY PASSWORD 'hashstring'
tls_option:
| CIPHER 'cipher'
| ISSUER 'issuer'
| SUBJECT 'subject'
ステートメントの説明:
IF NOT EXISTS:作成対象のユーザー名が既に存在し、IF NOT EXISTSを指定しなかった場合、システムはエラーを返します。IDENTIFIED BY:オプションのIDENTIFIED BY句を使用すると、アカウントにパスワードを指定できます。ここで:
user IDENTIFIED BY 'authstring'ステートメント内のパスワードは平文であり、mysql.userテーブルに格納された後、サーバー側で暗号化されます。user IDENTIFIED BY PASSWORD 'authstring'ステートメント内のパスワードは暗号化されています。
REQUIREは、ユーザーが使用する暗号化プロトコルを指定するために使用され、NONE、SSL、X509、tls_optionのいずれかです。
最小限のデータベース権限を持つユーザー test2 を作成する例を以下に示します。
rootユーザーでクラスタのMySQLテナントにログインします。以下のコマンドを実行して、ユーザー
test2を作成します。obclient> CREATE USER 'test2' IDENTIFIED BY '******';以下のコマンドを実行して、ユーザー
test2にデータベースdb1内のすべてのテーブルへのアクセス権限を付与します。obclient> GRANT SELECT ON db1.* TO test2;
関連ドキュメント
ユーザー作成後、本番環境では業務可用性を維持した上でパスワードをローテーションする(二要素認証)ことが一般的です。パスワードの変更、古いパスワードの保持、古いパスワードの破棄などの操作は ALTER USER で行われます。詳細は 二要素認証の管理 を参照してください。