ユーザーの権限 free45

ユーザーの権限について勉強しました。
権限により、データーベースを参照したり、作ったり出来るようになります。
Tuesday,June,25,2013
Sunday,June, 30,2013
○既に登録しているユーザーを確認する
「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();


* 参考にしたサイトは→ こちら です。

これは赤色の文字例です。

これは青色の文字例です。