MySQL のユーザを管理する方法をまとめました。ユーザを表示・作成・削除する方法、パスワード設定方法、権限の付与方法を紹介します。MySQL のユーザ操作は、たまーに必要になりますがすぐ忘れてしまって毎回ググっているので、いい加減覚えるために整理。
動作確認環境
- MySQL5.6
目次
ユーザ作成
CREATE USER 構文を使用します。ユーザ名は半角英数 16 文字まで。
# パスワードが空のユーザを登録
mysql> CREATE USER 'root'@'127.0.0.1';
# パスワードを指定してユーザを登録
mysql> CREATE USER 'root'@'127.0.0.1' IDENTIFIED by 'hoge';
パスワード変更
SET PASSWORD 構文を使います。
# ログインユーザのパスワードを設定
mysql> SET PASSWORD = PASSWORD('hoge');
# 他のユーザのパスワードを設定
mysql> SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('hoge');
ユーザ表示
mysql データベースの user テーブルを参照します。
mysql> SELECT Host,User,Password FROM mysql.user;
+-----------+----------+-----------+
| Host | User | Password |
+-----------+----------+-----------+
| localhost | root | ********* |
| 127.0.0.1 | root | ********* |
| ::1 | root | ********* |
| localhost | hoge | ********* |
| localhost | | ********* |
+-----------+----------+-----------+
ユーザ一覧は一度は確認すると良いと思います。匿名ユーザや root のパスワードが空のものが残っていたりします。
ユーザ削除
DROP USER 構文を使用します。
mysql> DROP USER 'root'@'127.0.0.1';
mysql> DROP USER 'root'@'::1';
mysql> DROP USER ''@'localhost';
権限付与
GRANT 構文を使います。
# 全データベース、全テーブルに全権限を付与
mysql> GRANT ALL [PRIVILEGES] ON *.* TO 'root'@'127.0.0.1';
# 特定のデータベースに全権限を付与
mysql> GRANT ALL [PRIVILEGES] ON データベース名.* TO 'hoge'@'127.0.0.1';
# 特定のテーブルに CRUD 権限を付与
mysql> GRANT SELECT,UPDATE,INSERT,DELETE ON データベース名.テーブル名 TO 'hoge'@'127.0.0.1';
権限の指定方法は以下を参照
MySQL 5.6 Reference Manual GRANT Syntax
権限参照
mysql> SHOW GRANTS FOR 'root'@'127.0.0.1';
権限剥奪
mysql> REVOKE ALL PRIVILEGES ON *.* FROM 'root'@'127.0.0.1';