Webサイト制作コースのお申し込みはこちら

MySQL 5.7.28でのユーザ作成についてまとめています。

以下、データベースとして、MySQLのサンプルデータベースEmployeesを使っています。

サンプルデータベースのインストール方法は、下記を参考にしてください。

【関連記事】
MySQLの入門には、GUIツールで慣れ、サンプルDBを使った学習が効果的

MySQLでユーザを作成するには、create user

MySQLのrootアカウントでログインします。※rootのパスワードはmy-secret-pwに設定されている前提。

% mysql -u root -pmy-secret-pw
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.28 MySQL Community Server (GPL)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

rootアカウント以外でも、CREATE USER権限を持つアカウントならユーザ作成が可能です。

mysql> create user user0@localhost IDENTIFIED BY 'user0_password';

上記のSQLを実行すると、localhost上のユーザuser0を、パスワード’user0_password’で設定して作成します。

現在のユーザ名一覧を確認してみましょう。

mysql> select user from mysql.user;
+---------------+
| user          |
+---------------+
| root          |
| mysql.session |
| mysql.sys     |
| root          |
| user0         |
+---------------+

rootやmysqlのシステムアカウントに加えて、先ほど作成したuser0が追加されていることが確認できました。

いったんmysqlコマンドをexitで抜けて、mysqlコマンドで、ユーザ名をuser0、パスワードをuser0_passwordに指定してログインできることを確認してみましょう。

mysql> exit
Bye
% mysql -u user0 -puser0_password
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.28 MySQL Community Server (GPL)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> exit
Bye

問題なくMySQLサーバに接続できました。

※以降のSQLは、MySQLのrootアカウントで接続しなおして実行してください。

% mysql -u root -pmy-secret-pw

作成したユーザに権限を設定するにはGRANTを使用

まずは、作成済みのユーザに、デフォルトで設定されている権限を確認してみます。

mysql> show grants for user0@localhost;
+-------------------------------------------+
| Grants for user0@localhost                |
+-------------------------------------------+
| GRANT USAGE ON *.* TO 'user0'@'localhost' |
+-------------------------------------------+

「GRANT USAGE」は、権限がないことを表します。localhost上のユーザuser0は、全データベースの全テーブル(*.*)に対して、権限がない(GRANT USAGE)ことがわかりました。

user0に権限を付与してみましょう。

mysql> grant all privileges on employees.* to user0@localhost;

上記のSQLは、localhost上のuser0に、データベースemployeesの全テーブル(employees.*)に対して、すべての権限(all)を付与します。

show grantsで確認すると、データベースemployeesへの権限が付与されていることを確認できます。

mysql> show grants for user0@localhost;
+--------------------------------------------------------------+
| Grants for user0@localhost                                   |
+--------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'user0'@'localhost'                    |
| GRANT ALL PRIVILEGES ON `employees`.* TO 'user0'@'localhost' |
+--------------------------------------------------------------+

なお、与えた権限を剥奪するには、revokeを使います。

mysql> revoke all privileges on employees.* from user0@localhost;

上記SQLを実行すると、localhost上のuser0アカウントから、employeesデータベースの全テーブルに対する権限を剥奪します。

mysql>  show grants for user0@localhost;
+-------------------------------------------+
| Grants for user0@localhost                |
+-------------------------------------------+
| GRANT USAGE ON *.* TO 'user0'@'localhost' |
+-------------------------------------------+

先ほどGRANTで付与した権限が削除されていることが確認できました。

ユーザ作成と権限付与を同時に行う方法

SQL1行で、ユーザ作成と権限付与を同時におこなうことも可能です。

mysql> GRANT ALL PRIVILEGES ON employees.* to user1@localhost IDENTIFIED BY 'user1_password';

上記SQLは、localhost上にuser1というアカウントをパスワード”user1_password”で作成し、employeesデータベースの全テーブル(employees.*)に、全権限(ALL)を付与します。

なお、5.7の古いバージョンでは、grantを使ってユーザ追加ができないケースがあるようです。

参考)mysql5.7 でユーザ追加の方法が変わったのでメモ – Qiita

まとめ

ポテパンダの一言メモ
  • MySQLのユーザ作成は、create userを使う。ユーザへの権限付与にはgrantを使用する。
  • 作成済みのユーザ一覧は、select user from mysql.users で確認する。
  • ユーザの権限は、show grantsで確認する。
  • grantを使って、ユーザ作成と同時に、権限付与をおこなうことも可能。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。