ユーザーの権限 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();
* 参考にしたサイトは→ こちら です。
これは赤色の文字例です。
これは青色の文字例です。