MySQL 読み取り専用ユーザーの作成

Migel Hewage Nimesha 2023年6月20日
  1. MySQL で読み取り専用ユーザーを作成する
  2. 新しい MySQL ユーザー アカウントを作成する
  3. ユーザーに SELECT コマンドへのアクセス権を付与する
  4. まとめ
MySQL 読み取り専用ユーザーの作成

ユーザーが読み取り専用資格情報を使用してデータベースへのアクセスを作成する必要がある場合がよくあります。 ユーザーは、データベースに保持されているデータの表示または読み取りのみが許可されています。 その内容や設定方法を変更することはできません。

この記事では、主に MySQL で読み取り専用ユーザーを作成する方法について説明します。 読み取り専用モードでのみデータベースにアクセスできるユーザーを作成する必要があります。

MySQL で読み取り専用ユーザーを作成する

MySQL で読み取り専用ユーザーを作成するには、ターミナルまたはコマンド プロンプトで次のコマンドを使用して、MySQL 管理者としてログインします。

mysql -u root -p

パスワード入力プロンプトが表示されます。 次に、root アカウントのパスワードを入力します。

出力:

root アカウントのパスワードを入力

新しい MySQL ユーザー アカウントを作成する

CREATE USER 'report'@'%' IDENTIFIED BY 'secret';

ユーザー レポートでは、示されているように、上記のコマンドで % を使用して、任意のホストから参加できます。 ユーザーが接続できるホストを指定して、アクセスを制限できます。

この情報が省略されている場合、ユーザーは同じマシンからのみ参加できます。

出力:

新しい MySQL ユーザー アカウントを作成する

ユーザーに SELECT コマンドへのアクセス権を付与する

GRANT SELECT ON database_name.* TO 'report'@'%';

付与するこれらの権限と、GRANT を使用するには GRANT OPTION 権限の両方を持っている必要があります。 (または、MySQL システム スキーマ付与テーブルに対する UPDATE 権限を持っている場合は、任意のアカウントに任意の権限を与えることができます)。

このコマンドを使用すると、ユーザーはローカル ホスト上のデータベースへの読み取り専用アクセスのみが許可されます。 コレクターがインストールされるホストのホスト名または IP アドレスがわかっている場合は、次のコマンドを入力します。

出力:

ユーザー アクセスの許可

GRANT SELECT ON database_name.* TO 'report'@'host_name or IP_address';

権限の調整を保存して適用するには、次のコマンドを実行します。

FLUSH PRIVILEGES;
SHOW GRANTS FOR 'report'@'host_name or IP_address';

末尾に quite と入力し、ユーザーの許可された権限を表示して確認します。

MySQL 8 は以前のバージョンとは異なるため、指示に従う必要があります。 ただし、次の 2つのフェーズで順番に実行する必要があります。

CREATE USER 'readonly_user'@'localhost' IDENTIFIED BY 'some_strong_password';
GRANT SELECT, SHOW VIEW ON *.* TO 'readonly_user'@'localhost';
FLUSH PRIVILEGES;

MySQL 開発者は追加機能を求めており、MySQL 8.0 は SQL、JSON、正規表現、および GIS の分野でそれらの多くを提供します。

バージョン 8.0 では、デフォルトの文字セットとして UTF8MB4 が使用されています。これは、開発者が絵文字を保存できるようにする必要があるためです。

最後に、強化された IPv6 および UUID 機能と BINARY データ型のビット単位の操作を含む、データ型の機能強化があります。

出力:

ユーザーの承認された権限を表示

以下はさらに読み取り専用パーミッションです。

読み取り専用権限 説明
ショービュー ビュー スキーマを表示できるようにします。
データベースを表示 データベースを表示できるようにします。
複製クライアント レプリケーション/スレーブのステータスを確認できます。 ただし、すべての DB を許可する必要があります。
PROCESS 実行中のプロセスをチェックできるようにします。 すべてのDBのみで動作します。

以下は、ユーザーに付与できるいくつかの権限です。

権限 説明
ALL これにより、MySQL ユーザーにすべてのアクセスが許可されます。
すべての特典 MySQL ユーザーは完全にアクセスできます。
CREATE 新しいデータベースまたはテーブルを開発できるようにします。
DROP データベースまたはテーブルを削除できるようにします。
DELETE テーブルから行を削除できるようにします。
INSERT テーブルに行を挿入できるようにします。
SELECT SELECT コマンドを使用してデータベースを読み取ることができるようにします。
ショービュー ビュー スキーマを表示できるようにします。
複製クライアント レプリケーション/スレーブのステータスを確認できるようにしますが、すべての DB を許可する必要があります。
PROCESS 実行中のプロセスを確認できるようにします。 すべてのDBのみで動作します。
UPDATE テーブルの行を更新できるようにします。
付与オプション 他のユーザー権限を付与または削除できるようにします。

以下のフレームワークを使用して、特定のユーザーに権限を付与します。

GRANT [type of permission list separated by a comma] ON [database name].[table name] TO [username]@'[hostname]’;

まとめ

この記事では、MySQL で読み取り専用ユーザーを作成する方法について説明しました。 これを使用すると、ユーザーは読み取り専用の目的でのみデータベースにアクセスし、ローカル ホストからのみアクセスできます。

パスワードは常に読み取り専用ユーザーを識別します。 前述のように、MySQL コマンド ラインでいくつかのコマンドを使用して、データベース内の読み取り専用データにアクセスするユーザーを作成できます。

Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.