1
0

最低限知っておくべきMySQL8.0の権限管理

Last updated at Posted at 2024-07-09

はじめに

2024年7月現在、ハッカー集団がKADOKAWAに対してランサムウェアによる攻撃を行ったというニュースが印象に残っているかと思います。

ユーザーのデータといった情報を保存しておくデータベースの権限管理はとても重要です。

そこで、「最低限知っておくべきデータベースの権限管理」というタイトルで、ぜひ知っておいて損はないデータベースの権限管理についての記事を書くこととしました。設定を見直す良い機会にしてもらえれば幸いです。

データベースの権限管理の基本

データベースの権限管理は、適切なアクセス制御を通じて、データの安全性を確保するために重要です。
以下では、MySQLを例に、最低限知っておくべき権限管理の基本と具体的な設定方法について解説します。

1. ユーザー作成と基本権限の付与

データベースにアクセスするユーザーを作成し、必要な権限を付与する基本的な方法です。

ユーザーの作成

まず、新しいユーザーを作成します。

CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'secure_password';

このコマンドは、new_userという名前のユーザーを作成し、localhostからの接続に対してsecure_passwordをパスワードとして設定します。

基本権限の付与

新しく作成したユーザーに、特定のデータベースへのアクセス権限を付与します。

GRANT SELECT, INSERT, UPDATE, DELETE ON database_name.* TO 'new_user'@'localhost';

このコマンドは、new_userに対してdatabase_name内の全てのテーブルに対するSELECTINSERTUPDATEDELETE権限を付与します。

2. 特定テーブルへの権限の付与

ユーザーに対して、特定のテーブルだけにアクセス権限を付与する方法です。

特定テーブルの権限付与

GRANT SELECT ON database_name.specific_table TO 'new_user'@'localhost';

このコマンドは、new_userに対してdatabase_name内のspecific_tableに対するSELECT権限を付与します。

3. 読み取り権限の付与

不要なアクセスや誤操作を防ぐ一例として、ここでは読み取り専用のユーザー作成についてのコマンドを載せています

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

CREATE USER 'readonly_user'@'localhost' IDENTIFIED BY 'readonly_password';
GRANT SELECT ON database_name.* TO 'readonly_user'@'localhost';

このコマンドは、readonly_userという名前のユーザーを作成し、database_name内の全てのテーブルに対するSELECT権限のみを付与します。

4. すべての権限の付与

ここでは管理者ユーザーとして、すべての権限を付与するというコマンドを載せていますが、コマンドを入力する際には特に気をつけてください。

管理者ユーザーの作成

CREATE USER 'admin_user'@'localhost' IDENTIFIED BY 'admin_password';
GRANT ALL PRIVILEGES ON *.* TO 'admin_user'@'localhost' WITH GRANT OPTION;

このコマンドは、admin_userという名前のユーザーを作成し、全てのデータベースとテーブルに対する全ての権限を付与します。権限を付与する際には気をつけてください。

5. 接続の許可設定

特定のホストからの接続のみを許可する設定です。

特定ホストからの接続制限

CREATE USER 'remote_user'@'192.168.1.100' IDENTIFIED BY 'remote_password';
GRANT ALL PRIVILEGES ON database_name.* TO 'remote_user'@'192.168.1.100';

このコマンドは、remote_userという名前のユーザーを192.168.1.100というIPアドレスからの接続に対して作成し、database_name内の全てのテーブルに対する全ての権限を付与します。

6. 権限の確認と取り消し

付与した権限を確認し、不要になった権限を取り消す方法です。

権限の確認

SHOW GRANTS FOR 'new_user'@'localhost';

このコマンドは、new_userに付与されている全ての権限を表示します。

権限の取り消し

REVOKE INSERT, UPDATE ON database_name.specific_table FROM 'new_user'@'localhost';

このコマンドは、new_userからdatabase_name内のspecific_tableに対するINSERTUPDATE権限を取り消します。

まとめ

データベースの権限管理は、データの安全性を保つために欠かせない重要な作業です。最低限知っておくべき権限管理の基本を押さえることで、不適切なアクセスを防ぎ、データの安全性を保つことができます。
ぜひ、この記事をお読みの皆さん!
定期的に権限設定を見直し、最適な権限管理を心がけることにこの記事がつながれば幸いです!

参考文献/記事

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0