この記事の目的
- ユーザ作成と権限の付与が実装できる
- 関連のコマンドを確認できる
説明しないこと
- MySQLの基礎的な利用方法
- 特定の権限を付与する意義
実装の流れ
- rootユーザ(全ての権限を所有)でmysqlにログインする
- 新しくユーザを作成する
- 特定の権限を付与する
まずはやってみようぜ!!!
1. rootユーザ(全ての権限を所有)でmysqlにログインする
- rootユーザにログインする
mysql -u root -p
2. 新しくユーザを作成する
- ユーザをパスワードをつけて作成する
create user ユーザ名@ホスト名 identified by "パスワード名";
- 先ほどのコマンドでしっかりユーザが作成されているかを確認する
select host, user from mysql.user;
命名したユーザ名で作成されていることが確認できる
3. 特定の権限を付与する
- ユーザの権限を確認する
show grants for ユーザ名@ホスト名;

- 今回、ユーザ名はtestにしている
- GRANT USAGE ON . TO
ユーザ名
と表示された。これはグローバルレベルで USAGE という権限が設定されていることを示している - この USAGE という権限は「何も権限がない」という状態
- つまり新しく作成したユーザは、すべてのデータベースを対象に何も権限がない状態となっている
- 特定のユーザの権限を付与する
grant type_of_permission on database_name.table_name to ユーザ名@ホスト名;
- 公式ドキュメント:許容可能な権限の一例
- グローバル、データベース、テーブル、カラムと権限のレベルがある
- 権限のレベルに合わせて付与していく必要がある
- 権限のレベルについてはこちらで詳しく解説されている
関連コマンド一覧
- 特定のユーザでログインする
mysql -u ユーザ名 -p
- ユーザをパスワードをつけて作成する
create user ユーザ名@ホスト名 identified by "パスワード名";
- ユーザを確認する
select host, user from mysql.user;
- 現在ログインしているユーザを確認する
select user(), current_user();
- ユーザを削除する
drop user ユーザ名@ホスト名;
- mysqlのバージョンを確認する
select version();
- 特定のユーザの権限を確認する
show grants for ユーザー名@ホスト名;
- 特定のユーザの権限を付与する
grant type_of_permission on database_name.table_name to ユーザ名@ホスト名;
- 特定のユーザの権限を削除する
revoke type_of_permission on database_name.table_name from ユーザ名@ホスト名;
- 認証プラグインを確認する
select host, user, plugin from mysql.user;
-
mysql_native_password
をcaching_sha2_password
に変更する
alter user 'aiful'@'%' identified with caching_sha2_password by '{password}';