ここでは弊社の新人エンジニア研修の参考にユーザー権限の付与について解説します。MySQLをインストールすると作成されるrootユーザーはスーパーユーザーとも呼ばれ強力な権限を持っています。
rootユーザーは、全てのデータベースとその中の全てのテーブルに対してフルアクセス権を持っています。そのため、データベースの作成、変更、削除、ユーザーの作成、ユーザー権限の管理など、MySQLデータベースシステム上で可能な全ての操作を実行できます。
もしも、rootユーザーの認証情報が漏洩すれば、攻撃者はデータベースシステムを自由に操作でき、データの変更や削除を行うことが可能になります。また、そこまで行かなくてもうっかり設定を誤ってしまうと、重要なデータを失う恐れもあります。
そのため、必要な時だけrootユーザーを使い、その他の時は権限の範囲を制限したユーザーを使うようにします。また、rootユーザーの使用は開発環境やテスト環境で主に行われ、本番環境では通常は限定された権限を持つユーザーを作成して使用すべきです。
MySQL Workbenchを使う方法
- データベースに接続するための新しい接続を作成するか、既存の接続を選択します。接続を選択するには、「SQL Development」または「MySQL Connections」タブをクリックします。
- 接続が確立されたら、ツールバーの「Server」メニューから「Users and Privileges」を選択します。
- 「Users and Privileges」ウィンドウが開きます。ウィンドウの下部にある「Add Account」ボタンをクリックします。
- 「Create User Account」ウィンドウが表示されます。必要な情報を入力します。
- 「Login Name」:ユーザーのログイン名を入力します。
- 「Limit to Hosts Matching」:ユーザーが接続できるホストを指定する場合に入力します。通常はデフォルトのままにしておきます。
- 「Password」:ユーザーのパスワードを入力します。
- 「Retype Password」:パスワードをもう一度入力して確認します。
- 「Account Limits」:必要に応じてアカウントの制限を設定します。
- 必要な情報を入力したら、「Apply」ボタンをクリックしてユーザーアカウントを作成します。
- ユーザーアカウントが作成されると、そのユーザーの特権を設定するための「Administrative Roles」タブが表示されます。必要な特権を選択し、「Apply」ボタンをクリックして特権を設定します。
- 特権の設定が完了したら、「Apply」ボタンをクリックして変更を保存します。
コマンドを使う方法
MySQLのコマンドを使用しユーザーを作成し、権限を付与する方法は以下の通りです。
1.MySQLにrootユーザーとしてログインします。
mysql -u root -p
2.ユーザーを作成します。以下のコマンドを使用します。
CREATE USER 'ユーザー名'@'ホスト' IDENTIFIED BY 'パスワード';
ここで、
- 'ユーザー名'は新しいユーザーの名前を指定します。
- 'ホスト'は新しいユーザーが接続を許可されるホストを指定します。通常はローカルホスト(localhost)を指定します。
- 'パスワード'は新しいユーザーのパスワードを指定します。
たとえば、新しいユーザー名が「newuser」、ホストが「localhost」、パスワードが「0」とすると、以下のようになります。
CREATE USER 'newuser'@'localhost' IDENTIFIED BY '0';
3.ユーザーに権限を付与します。以下のコマンドを使用します。
GRANT 権限 ON データベース名.* TO 'ユーザー名'@'ホスト';
ここで、
- '権限'はユーザーに付与する権限を指定します。例えば、すべての権限を付与する場合は「ALL PRIVILEGES」とします。
- 'データベース名'はユーザーに権限を付与するデータベースの名前を指定します。すべてのデータベースに対して権限を付与する場合は「*」とします。
たとえば、新しいユーザー「newuser」にすべての権限を付与する場合は、以下のようになります。
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost';
4.変更内容を反映させるために、以下のコマンドを実行します。
FLUSH PRIVILEGES;
以上、MySQLで新しいユーザーを作成し、権限を付与する方法でした