MySQL 8.1.0 ユーザーの作成と削除、権限付与

ユーザーの作成

ユーザーhogeを作成します。

書式
CREATE USER ‘username’@’localhost’ IDENTIFIED BY ‘your password’

# mysql -u root -p
Enter password:

mysql> CREATE USER ‘hoge@localhost’ IDENTIFIED BY ‘your password’
Query OK, 0 rows affected (0.02 sec)

作成したユーザーを確認します。

mysql> SELECT user, host FROM mysql.user;  
+-------------------+-----------+
| user              | host      |
+-------------------+-----------+
| hoge@localhost    | %         |
| mysql. infoschema | localhost |
| mysql.session     | localhost |
| mysql. sys        | localhost |
| root              | localhost |
+-------------------+-----------+
5 rows in set (0.00 sec)

host名が%は、全てのhostから接続可能なワイルドカードとして扱われます。間違えたため、localhostに限定したユーザーを作成し直します。
‘hoge@localhost’ を ‘hoge’@’localhost’ で作成しないといけません。

mysql> CREATE USER ‘hoge’@’localhost’ IDENTIFIED BY ‘your password’
Query OK, 0 rows affected (0.02 sec)

確認。ユーザーhogeが作成されています。

mysql> SELECT user, host FROM mysql.user;    
+-------------------+-----------+
| user              | host      |
+-------------------+-----------+
| hoge@localhost    | %         |
| hoge              | localhost |
| mysql. infoschema | localhost |
| mysql.session     | localhost |
| mysql. sys        | localhost |
| root              | localhost |
+-------------------+-----------+
6 rows in set (0.00 sec)

ユーザーの削除

ユーザーuser hoge@localhost host%を削除します。

書式
DROP USER ‘username’@’hostname’;

mysql> DROP USER ‘hoge@localhost’@’%’;
Query OK, 0 rows affected (0.02 sec)

mysql> SELECT user, host FROM mysql.user;  
+-------------------+-----------+
| user              | host      |
+-------------------+-----------+
| hoge              | localhost |
| mysql. infoschema | localhost |
| mysql.session     | localhost |
| mysql. sys        | localhost |
| root              | localhost |
+-------------------+-----------+
5 rows in set (0.00 sec)

ユーザーへの権限付与

無事にユーザーhogeが作成されましたが、まだ権限を持っていないため何もすることが出来ません。
rootでログインしたままの状態で、ユーザーhogeにhugahugaデータベースの全ての権限を付与します。

書式
GRANT ALL ON *.* TO user;

mysql> GRANT ALL ON hugahuga.* TO ‘hoge’@’localhost’;
Query OK, 0 rows affected (0.02 sec)

ユーザーhogeに付与した権限を確認します。
1行目に、GRANT USEGE ON *.* TO ‘hoge’@’localhost’と表示されました。USEGEという権限が付与されています。USEGEとは何も権限がないという権限です。*.*は全てのデータベースと全てのテーブルのことを意味します。
2行目は、GRANT ALL PRIVILEGES ON ‘hugahuga’.* TO ‘hoge’@’localhost’と表示されています。ALL PRIVILEGESとは全ての権限を表します。ユーザーhogeにデータベースhugahugaの全ての権限が付与されました。

mysql> SHOW GRANTS FOR 'hoge'@'localhost';
+------------------------------------------------------------+
| Grants for hoge@lovalhost                                  |
+------------------------------------------------------------+
| GRANT USEGE ON *.* TO 'hoge'@'localhost'                   |
| GRANT ALL PRIVILEGES ON 'hugahuga'.* TO 'hoge'@'localhost' |
+------------------------------------------------------------+    
2 rows in set (0.00 sec)

mysql> exit
Bye

# service mysql-server restart
#再起動します。

データベースの作成

データベース一覧を確認します。データベースhugahugaがないためhugahugaを作成します。

書式
CREATE DATABASE データベース名;
USEを使って使用するデータベースを選択します。
USE データベース名

# mysql -u root -p
Enter password:
#rootでログインします。

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

mysql> CREATE DATABASE hugahuga;
Query OK, 1 row affected (0.05 sec)

mysql> USE hugahuga
Database changed

データベース一覧を確認します。

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| hugahuga           |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql> exit
Bye

# service mysql-server restart

データベースの確認

hogeに、使用するデータベース名を指定してログインします。
SELECT CURRENT_USER()で、実際に認証が行われたユーザー名とホスト名を返します。
DATABASE()で、データベース名を返します。

# mysql -u hoge -p hugahuga
Enter password:

mysql> SELECT CURRENT_USER(), DATABASE();
+----------------+------------+
| CURRENT_USER() | DATABASE() |
+----------------+------------+
| hoge@localhost | hugahuga   |
+----------------+------------+
タイトルとURLをコピーしました