MySQL 読み取り専用ユーザーの作成
 
ユーザーが読み取り専用資格情報を使用してデータベースへのアクセスを作成する必要がある場合がよくあります。 ユーザーは、データベースに保持されているデータの表示または読み取りのみが許可されています。 その内容や設定方法を変更することはできません。
この記事では、主に MySQL で読み取り専用ユーザーを作成する方法について説明します。 読み取り専用モードでのみデータベースにアクセスできるユーザーを作成する必要があります。
MySQL で読み取り専用ユーザーを作成する
MySQL で読み取り専用ユーザーを作成するには、ターミナルまたはコマンド プロンプトで次のコマンドを使用して、MySQL 管理者としてログインします。
mysql -u root -p
パスワード入力プロンプトが表示されます。 次に、root アカウントのパスワードを入力します。
出力:

新しい MySQL ユーザー アカウントを作成する
CREATE USER 'report'@'%' IDENTIFIED BY 'secret';
ユーザー レポートでは、示されているように、上記のコマンドで % を使用して、任意のホストから参加できます。 ユーザーが接続できるホストを指定して、アクセスを制限できます。
この情報が省略されている場合、ユーザーは同じマシンからのみ参加できます。
出力:

ユーザーに 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 コマンド ラインでいくつかのコマンドを使用して、データベース内の読み取り専用データにアクセスするユーザーを作成できます。
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.
