ユーザーの権限 free45
ユーザーの権限について勉強しました。
○既に登録しているユーザーを確認する
「User」カラムと「ホスト」カラムの値を取得
mysql> select User,Host from mysql.user;
User Host
root 012.3.4.5
root ::8
atsushisadachika host.example.com
root localhost
atsushi localhost
○ユーザーは次の書式で指定します。
user_name@host_name
ユーザーはユーザー名とMySQLへ接続するホスト名の組み合わせで指定する。ホスト名はホスト名の他にIPアドレスやlocalhostを指定することができます。
ユーザー名は最大16文字です。
'username'@'host.example.com'
'username'@'192.168.128.1'
'username'@'localhost'
○ユーザーの作成
CREATE USER user IDENTIFIED BY [PASSWORD] 'password'; *ユーザーを作成する
create user 'sadachika'@'localhost' identified by 'Xxxxxxxxx';
Query OK, 0 rows affected (0.03 sec)
CREATE USER user1 IDENTIFIED BY [PASSWORD] 'password1', *複数のユーザーを作成する
user2 IDENTIFIED BY [PASSWORD] 'password2',
user3 IDENTIFIED BY [PASSWORD] 'password3', ...;
mysql> create user
-> 'sadachika77'@'localhost' identified by 'Xxxxxxxxx', *複数のユーザーを作成する
-> 'hirayama'@'192.168.128.1' identified by 'Xxxxxxxxx',
-> 'sadachika60'@'host.example.com' identified by 'Xxxxxxxxx';
mysql> create user
-> sadachika55@'sadanet.com' identified by 'Xxxxxxxxx', *シングルクォーテイションなし
-> hirayama1@'777.777.777.7' identified by 'Xxxxxxxxx',
-> atsushisadachika@'sadahost.sadanet.co.jp' identified by 'Xxxxxxxxx';
Query OK, 0 rows affected (0.06 sec)
mysql> select User,Host from mysql.user;
User Host
root 012.3.4.5
hirayama 192.168.128.1 *増えた
hirayama1 777.777.777.7 *増えた
root ::8
atsushisadachika host.example.com
sadachika60 host.example.com *増えた
root localhost
sadachika localhost *増えた
sadachika77 localhost *増えた
atsushi localhost
atsushisadachika sadahost.sadanet.co.jp*増えた
sadachika55 sadanet.com *増えた
○新しく作成したユーザーでMySQLサーバへ接続してみます。
ローカルホストからアクセスが許可されている「sadachika」ユーザーを使って接続します。
C:\>mysql -u sadachika -p *create user 'sadachika'@'localhost' identified by 'Xxxxxxxxx'; ここで作成したユーザー
Enter password:と表示される シングルの中のパスワードを入力する
MySQL> show databases;
Database
information_schema
test
○データベース(フォルダ)を作成
mysql> create database sadachika_test777; できません?権限がない
mysql> create database sadachika_test; できません?権限がない
mysql> create database sadachika777; できません?権限がない
ERROR 1044 (42000): Access denied for user 'sadachika'@'localhost' to database 'sadachika777'
○新しく作成したユーザーでMySQLサーバへ接続してみます。
ローカルホストからアクセスが許可されている「hirayama1」ユーザーを使って接続します。
C:\>mysql -u hirayama1 -p
Enter password:と表示される シングルの中のパスワードを入力する
ローカルホストから接続しようとしましたのでユーザーは「'hirayama1'@'localhost'」と認識されます。
ユーザーとして追加されているのは「'hirayama1'@'777.777.777.7'」ですのでアクセスが拒否されました。
○パスワードの設定
SET PASSWORD = PASSWORD('some password') 現在使用しているパスワードを変更する
SET PASSWORD = PASSWORD('012345'); *create user 'sadachika'@'localhost' identified by 'Xxxxxxxxx';→012345
mysql -u sadachika -p
Enter password;012345 *ログインできました。変わってます
SET PASSWORD FOR 'sadachika'@'localhost' = PASSWORD('00112233');
mysql -u sadachika -p *create user 'sadachika'@'localhost' identified by 'Xxxxxxxxx';→012345→00112233
Enter password;012345 *ログインできません
mysql -u sadachika -p
Enter password;00112233 *ログインできました
Query OK, 0 rows affected (0.39 sec)
○ユーザー名の変更
rename user 'sadachika60'@'host.example.com' to 'sadachika'@'sadachika.co.jp'; *変更できました
rename user 'hirayama'@'192.168.128.1' to 'hirayama'@'666.666.666.666'; *変更できました
rename user 'sadachika77'@'localhost' to 'sadachika'@'sadachika.com'; *変更できました
rename user 'hirayama1'@'777.777.777.7' to 'hirayama'@'777.777.777.777'; *変更できました
○今回は「User」カラムと「ホスト」カラムの値を取得します。
mysql> select User,Host from mysql.user;
User Host User Host
root 012.3.4.5 root 012.3.4.5
hirayama 192.168.128.1 →hirayama 666.666.666.666
hirayama1 777.777.777.7 →hirayama 777.777.777.777
root ::8 root ::8
atsushisadachika host.example.com atsushisadachika host.example.com
sadachika60 host.example.com atsushi localhost
root localhost root localhost
sadachika localhost sadachika localhost
sadachika77 localhost →sadachika sadachika.co.jp
atsushi localhost →sadachika sadachika.com
atsushisadachika sadahost.sadanet.co.jp atsushisadachika sadahost.sadanet.co.jp
sadachika55 sadanet.com sadachika55 sadanet.com
○ユーザーの削除
DROP USER 'atsushisadachika'@'host.example.com';
○複数のユーザーをまとめて削除。
DROP USER 'sadachika55'@'sadanet.com','atsushisadachika'@'sadahost.sadanet.co.jp','sadachika'@'sadachika.com';
mysql> select User,Host from mysql.user;
User Host
root 012.3.4.5
hirayama 666.666.666.666
hirayama 777.777.777.777
root ::8
*削除しました
atsushi localhost
root localhost
sadachika localhost
sadachika sadachika.co.jp
*削除しました
*削除しました
*削除しました
○設定されている権限の確認
show grants for 'root'@'localhost';
Grants for root@localhost
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*XxxxxxxxxxxxxxxxxxxY' WITH GRANT OPTION *privilege特権,特典,特別扱い.GRANT承諾する,かなえてやる.
GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION
show grants for 'atsushi'@'localhost';
Grants for atsushi@localhost
GRANT USAGE ON *.* TO 'atsushi'@'localhost' IDENTIFIED BY PASSWORD '*XxxxxxxxxxxxxxxxxxxY' *privilege特権,特典,特別扱い.GRANT承諾する,かなえてやる.
show grants for 'sadachika'@'sadachika.co.jp';
Grants for sadachika@sadachika.co.jp
GRANT USAGE ON *.* TO 'sadachika'@'sadachika.co.jp' IDENTIFIED BY PASSWORD '*XxxxxxxxxxxxxxxxxxxY' *privilege特権,特典,特別扱い.GRANT承諾する,かなえてやる.
show grants for 'root'@'012.3.4.5';
Grants for root@012.3.4.5
GRANT ALL PRIVILEGES ON *.* TO 'root'@'012.3.4.5' IDENTIFIED BY PASSWORD '*XxxxxxxxxxxxxxxxxxxY' WITH GRANT OPTION *privilege特権,特典,特別扱い.GRANT承諾する,かなえてやる.
show grants for 'root'@'::8';
Grants for root@::8
GRANT ALL PRIVILEGES ON *.* TO 'root'@'::1' IDENTIFIED BY PASSWORD '*XxxxxxxxxxxxxxxxxxxY' WITH GRANT OPTION *privilege特権,特典,特別扱い.GRANT承諾する,かなえてやる.
○現在接続しているユーザーの権限を確認
show grants;
show grants for current_user();
○設定されている権限の確認\G
mysql> show grants for 'root'@'localhost'\G
********************* 1.row ************************
Grants for root@localhost: GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*XxxxxxxxxxxxxxxxxxxY' WITH GRANT OPTION *privilege特権,特典,特別扱い.GRANT承諾する,かなえてやる.
********************* 2.row ************************
Grants for root@localhost: GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION
2 rows in set (0.01 sec)
mysql> show grants for 'atsushi'@'localhost'\G
********************* 1.row ************************
Grants for atsushi@localhost: GRANT USAGE ON *.* TO 'atsushi'@'localhost' IDENTIFIED BY PASSWORD '*XxxxxxxxxxxxxxxxxxxY'
上記は全てのデータベースに対して権限が無い状態に設定されている。
mysql> show grants for 'sadachika'@'sadachika.co.jp'\G
********************* 1.row ************************
Grants for sadachika@sadachika.co.jp: GRANT USAGE ON *.* TO 'sadachika'@'sadachika.co.jp' IDENTIFIED BY PASSWORD '*XxxxxxxxxxxxxxxxxxxY'
上記は全てのデータベースに対して権限が無い状態に設定されている。
○testデータベース対するSELECT権限を設定します。
mysql> grant select on test.* to 'atsushi'@'localhost';
Query OK, 0 rows affected (0.39 sec)
mysql> show grants for 'atsushi'@'localhost'\G
********************* 1.row ************************
Grants for atsushi@localhost: GRANT USAGE ON *.* TO 'atsushi'@'localhost' IDENTIFIED BY PASSWORD '*XxxxxxxxxxxxxxxxxxxY'
********************* 2.row ************************
Grants for atsushi@localhost: GRANT SELECT ON 'test'.* TO 'atsushi'@'localhost' ←追加されたねGRANT SELECT ON 'test'
○今度はグローバルレベルに対してSHOW DATABASES権限を設定します。
mysql> grant show databases on *.* to 'atsushi'@'localhost';
Query OK, 0 rows affected (0.02 sec)
mysql> show grants for 'atsushi'@'localhost'\G
********************* 1.row ************************
Grants for atsushi@localhost: GRANT SHOW DATABASES ON *.* TO 'atsushi'@'localhost' IDENTIFIED BY PASSWORD '*XxxxxxxxxxxxxxxxxxxY'
↑*追加されたねSHOW DATABASES
********************* 2.row ************************
Grants for atsushi@localhost: GRANT SELECT ON 'test'.* TO 'atsushi'@'localhost'
○グローバルレベルに対してCREATE権限を設定します。
mysql> grant create on *.* to 'atsushi'@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> show grants for 'atsushi'@'localhost'\G
********************* 1.row ************************
Grants for atsushi@localhost: GRANT CREATE, SHOW DATABASES ON *.* TO 'atsushi'@'localhost' IDENTIFIED BY PASSWORD '*XxxxxxxxxxxxxxxxxxxY'
↑*追加されたねCREATE
********************* 2.row ************************
Grants for atsushi@localhost: GRANT SELECT ON 'test'.* TO 'atsushi'@'localhost'
○権限の削除(REVOKE文)グローバルレベルのSELECT権限を削除する
revoke select on *.* from 'atsushi'@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> show grants for 'atsushi'@'localhost'\G
********************* 1.row ************************
Grants for atsushi@localhost: GRANT CREATE, SHOW DATABASES ON *.* TO 'atsushi'@'localhost' IDENTIFIED BY PASSWORD '*XxxxxxxxxxxxxxxxxxxY'
********************* 2.row ************************
Grants for atsushi@localhost: GRANT SELECT ON 'test'.* TO 'atsushi'@'localhost'
変化無し
○グローバルレベルのCREATE権限を削除します。
mysql> revoke create on *.* from 'atsushi'@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> show grants for 'atsushi'@'localhost'\G
********************* 1.row ************************
Grants for atsushi@localhost: GRANT SHOW DATABASES ON *.* TO 'atsushi'@'localhost' IDENTIFIED BY PASSWORD '*XxxxxxxxxxxxxxxxxxxY'
********************* 2.row ************************
Grants for atsushi@localhost: GRANT SELECT ON 'test'.* TO 'atsushi'@'localhost'
CREATE←が削除された
○全ての権限を削除します。
mysql> revoke all privileges, grant option from 'atsushi'@'localhost';
Query OK, 0 rows affected (0.03 sec)
mysql> show grants for 'atsushi'@'localhost'\G
********************* 1.row ************************
Grants for atsushi@localhost: GRANT USAGE ON *.* TO 'atsushi'@'localhost' IDENTIFIED BY PASSWORD '*XxxxxxxxxxxxxxxxxxxY'
SHOW DATABASES ←が削除された
GRANT SELECT ON 'test' ←が削除された
○また現在接続しているユーザーの権限について確認するには次のように入力することもできます。
show grants;
show grants for current_user();
* 参考にしたサイトは→ こちら です。
これは赤色の文字例です。
これは青色の文字例です。