ユーザ操作

MySQL 7 から、ユーザ作成の方法が少し変わったとのこと。 もともとを知らないので抵抗はありませんが、Zabbix や Wordpress のオンラインマニュアルに書かれているユーザ作成の SQLMySQL 6以前の書き方になっていて困ったりしたので、簡単にまとめてみます。

環境

本ページは以下の環境で実施しています。

CentOS 6.8 MySQL 5.7.16

ユーザの作成

お作法は、以下のようになっています。

  1. CREATE USER でユーザを作成
  2. GRANT で権限付与

実行するSQL文は、以下の書式となります。

CREATE USER ユーザ名@ホスト名 IDENTIFIED BY 'パスワード';

実際に作成してみます。 作成するユーザは以下です。

  • ユーザ名:zabbix
  • データベース名:zabbix
  • ホスト名:localhost

[shell]

mysql -uroot -p

Enter password:

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

mysql> CREATE USER zabbix@localhost IDENTIFIED BY 'パスワード'; Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL ON zabbix.* TO zabbix@localhost; Query OK, 0 rows affected (0.01 sec)

mysql> SELECT host,user FROM mysql.user; +-----------+-----------+ | host | user | +-----------+-----------+ | localhost | mysql.sys | | localhost | root | | localhost | zabbix | +-----------+-----------+ 3 rows in set (0.00 sec) [/shell]

権限管理

権限確認

ユーザにどのような権限が割り当てられているかを確認するには、以下のようにSQLを発行します。 以下の例は、zabbixユーザを作成した直後の状態です。

[bash] SHOW GRANT FOR zabbix@localhost; +--------------------------------------------+ | Grants for zabbix@localhost | +--------------------------------------------+ | GRANT USAGE ON . TO 'zabbix'@'localhost' | +--------------------------------------------+ 1 row in set (0.00 sec) [/bash]

権限付与

zabbixユーザに対して、データベース"zabbix" の操作権限を全て付与する場合は、以下のようにSQLを発行します。

[bash] mysql> GRANT ALL ON zabbix.* TO zabbix@localhost; [/bash]

結果を確認してみると、以下のようになります。

[bash] mysql> SHOW GRANTS FOR zabbix@localhost; +------------------------------------------------------------+ | Grants for zabbix@localhost | +------------------------------------------------------------+ | GRANT USAGE ON . TO 'zabbix'@'localhost' | | GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost' | +------------------------------------------------------------+ 2 rows in set (0.00 sec) [/bash]