mysqlのユーザー作成や権限付与の際よく使うコマンド

はじめに

mysqlのユーザーを作成し、権限を適宜設定することが多いがよく使うコマンドをまとめた。

ユーザーを確認する

MariaDB [(none)]> select user,host from mysql.user;
+--------+------------+
| user   | host       |
+--------+------------+
| root   | 127.0.0.1  |
| redash | 172.18.0.% |
| root   | ::1        |
|        | instance-1 |
| root   | instance-1 |
|        | localhost  |
| root   | localhost  |
+--------+------------+
7 rows in set (0.00 sec)

MariaDB [(none)]> show grants for 'redash'@'172.18.0.%';

ユーザーを作成する

パスワードを平文で入れる

GRANT USAGE ON *.* TO 'usera'@'192.168.10.10' IDENTIFIED BY 'password123';

パスワードをハッシュ化して登録

SELECT PASSWORD('password123');
#出力されたハッシュを以下に入れる
GRANT USAGE ON *.* TO 'usera'@'192.168.10.10' IDENTIFIED BY PASSWORD '*6D4B1BD281FE14CCBC97B934';

権限付与

参照のみ

GRANT SELECT, EXECUTE ON `databasea`.* TO 'usera'@'192.168.10.10'

データ操作言語(DML)文

GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE ON `databasea`.* TO 'usera'@'192.168.10.10'

権限を剥奪する

全権限を剥奪する

REVOKE ALL ON `database`.* FROM 'usera'@'%' 

部分的に剥奪する

REVOKE DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `database`.* FROM 'usera'@'%' 

接続元を変更する

どこからでもアクセスできた状態からアクセス元を特定セグメントからのみに絞る

rename user 'usea'@'%' to 'usera'@'192.1.%';

 

パスワード変更

すでに作ったユーザのパスワード変更は以下のコマンド

set password for 'usera'@'192.168.10.10'=password('パスワード');

ユーザを削除する

DROP USER 'usera'@'192.168.10.10';