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.