制限付き権限を持つMySQLユーザーの作成方法をわかりやすく解説
制限付き権限を持つMySQLユーザーを作成するには?
データベースのセキュリティを高めるためには、必要最小限の権限だけを付与したユーザーを作成することが重要です。ここでは、MySQLで制限付き権限を持つユーザーを作成する手順を、具体的なコード例とともに解説します。
1. ユーザーを作成する構文
まず、CREATE USER文を使って新しいユーザーを作成します。基本構文は以下の通りです。
CREATE USER 'yourUserName'@'yourHostName' IDENTIFIED BY 'yourPassword';
- yourUserName:作成するユーザー名
- yourHostName:接続を許可するホスト名(localhostや%など)
- yourPassword:設定するパスワード
2. 権限を付与する構文
次に、GRANT文を使ってユーザーに権限を付与します。付与したい権限をカンマ区切りで指定することで、必要な操作だけを許可できます。
GRANT SELECT, INSERT, UPDATE, DELETE, ...
ON yourDatabaseName.* TO 'yourUserName'@'yourHostName';
この例では、SELECT(参照)、INSERT(挿入)、UPDATE(更新)など、指定した権限のみが「yourDatabaseName」データベース内のすべてのテーブルに対して許可されます。それ以外の操作(DROPやGRANTなど)は実行できません。
3. 実際にユーザーを作成してみる
それでは、実際に「David」というユーザーを作成し、「test」データベースに対して複数の権限を付与してみましょう。
mysql> CREATE USER 'David'@'localhost' IDENTIFIED BY 'david';
Query OK, 0 rows affected (0.20 sec)
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, ALTER, CREATE, REFERENCES
ON test.* TO 'David'@'localhost';
Query OK, 0 rows affected (0.21 sec)
この例では、Davidユーザーに対してSELECT・INSERT・UPDATE・DELETE・ALTER・CREATE・REFERENCESの7つの権限を付与しています。これにより、Davidはtestデータベース内でこれらの操作のみを実行可能になり、その他の危険な操作は制限されます。
4. ユーザーが作成されたか確認する
最後に、ユーザーが正しく作成されたかどうかを確認しましょう。mysqlデータベースのuserテーブルを照会します。
mysql> SELECT user, host FROM mysql.user;
実行結果は以下のようになります。
+------------------+-----------+
| user | host |
+------------------+-----------+
| Bob | % |
| User2 | % |
| mysql.infoschema | % |
| mysql.session | % |
| mysql.sys | % |
| root | % |
| @UserName@ | localhost |
| Adam Smith | localhost |
| David | localhost |
| James | localhost |
| John | localhost |
| John Doe | localhost |
| User1 | localhost |
| am | localhost |
| hbstudent | localhost |
| mysql.infoschema | localhost |
| mysql.session | localhost |
+------------------+-----------+
17 rows in set (0.00 sec)
一覧の中に「David」が「localhost」ホストで登録されていることが確認できます。これで、制限付き権限を持つMySQLユーザーの作成は完了です。
まとめ
MySQLでセキュアな環境を構築するには、rootユーザーを使い回すのではなく、用途に応じて必要な権限だけを持つ専用ユーザーを作成することがベストプラクティスです。CREATE USERでユーザーを作成し、GRANTで権限を絞って付与するという流れを覚えておきましょう。また、権限の変更や剥奪にはREVOKE文を使用できますので、運用状況に合わせて柔軟に管理してください。
-
MySQLでインデックス付きのテーブルを作成する方法を徹底解説
MySQLでは、テーブル作成後にCREATE INDEX文を使うことで、特定のカラムに対してインデックスを追加できます。検索速度の向上やデータ整合性の確保において、インデックスは非常に重要な役割を果たします。この記事では、基本的な構文から実際の実行例まで、順を追ってわかりやすく解説します。インデックス付きテーブルを作成する基本構文まずテーブルを作成し、その後CREATE INDEX文でインデックスを追加します。基本の構文は以下のとおりです。create table yourTableName ( yourColumnName1 dataType, yourColumnName2 dataTyp
-
MySQLでビュー(VIEW)を作成する方法|CREATE VIEWの基本構文と実行例を解説
MySQLのビュー(VIEW)とは?ビュー(VIEW)とは、SQLクエリの結果セットをもとに定義される「仮想テーブル」のことです。実際のデータを物理的に保存するわけではなく、元のテーブルへの参照情報のみを保持します。そのため、複雑なクエリをシンプルな名前で呼び出せるようにしたり、ユーザーに見せたい列や行だけを限定して提供したりする際に非常に便利です。MySQLでビューを作成するには、CREATE VIEW文を使用します。ビュー作成の基本構文ビューを作成するための基本構文は以下の通りです。create view yourViewName as select * from yourTableNam