mysqlの権限管理


これも転載したもので、後にUSageの解釈を追加しました
転入先http://blog.chinaunix.net/uid-20639775-id-3249105.html
よくQQ群や掲示板でmysqlの権限について質問されるネットユーザーがいますが、今日は暇を見つけて、ここ数年MYSQLを使っていたときのMYSQLデータベースの権限管理についての経験をまとめ、mysqlを使っているネットユーザーにも助けてほしいと思います.
一、MYSQL権限の概要
mysqlの権限について簡単な理解はmysqlがあなたの権利内のことをすることを許可し、境界を越えてはいけないことです.たとえばselect操作のみを許可すると、update操作は実行できません.あるマシンからmysqlに接続することを許可するだけで、そのマシン以外のマシンからmysqlに接続することはできません.
では、MYSQLの権限はどのように実現されているのでしょうか.これはmysqlの2段階の検証についてお話しします.次に、第1段階:サーバはまず接続を許可するかどうかをチェックします.ユーザーを作成するときにホストの制限が加わるため、コスト、IP、IPセグメント、および任意の場所などを制限でき、構成された指定された場所からのみログインできます.後で実戦でホストの制限について詳しく話します.第2段階:接続できる場合、MYSQLはあなたが発行したすべての要求をチェックして、それを実施するのに十分な権限があるかどうかを確認します.たとえば、テーブルを更新したり、テーブルをクエリーしたりすると、MYSQLはどのテーブルまたはカラムに権限があるかをチェックします.たとえば、ストレージ・プロシージャを実行すると、MYSQLはストレージ・プロシージャに実行権限があるかどうかを確認します.
MYSQLにはいったいどんな権限があるのだろうか.公式サイトからテーブルをコピーしてみてください.
アクセス権
権限レベル
権限の説明
CREATE
データベース、テーブル、またはインデックス
データベース、テーブル、またはインデックス権限の作成
DROP
データベースまたはテーブル
データベースまたはテーブル権限の削除
GRANT OPTION
データベース、テーブル、または保存されたプログラム
権限付与オプション
REFERENCES
データベースまたはテーブル
 
ALTER

フィールドの追加、インデックスの追加など、テーブルの変更
DELETE

データ権限の削除
INDEX

インデックス権限
INSERT

権限の挿入
SELECT

クエリー権限
UPDATE

権限の更新
CREATE VIEW
表示
ビュー権限の作成
SHOW VIEW
表示
ビュー権限の表示
ALTER ROUTINE
きおくてつづき
ストアド・プロシージャ権限の変更
CREATE ROUTINE
きおくてつづき
ストアド・プロシージャ権限の作成
EXECUTE
きおくてつづき
ストアド・プロシージャの実行権限
FILE
サーバホスト上のファイルアクセス
ファイルアクセス
CREATE TEMPORARY TABLES
サーバ管理
テンポラリ・テーブル権限の作成
LOCK TABLES
サーバ管理
ロックテーブル権限
CREATE USER
サーバ管理
ユーザー権限の作成
PROCESS
サーバ管理
プロセス権限の表示
RELOAD
    サーバ管理
flush-hosts,flush-logs,flush-privileges,flush-status,flush-tables,flush-threads,refresh,reloadなどのコマンドを実行する権限
REPLICATION CLIENT
サーバ管理
権限のコピー
REPLICATION SLAVE
サーバ管理
権限のコピー
SHOW DATABASES
サーバ管理
データベース権限の表示
SHUTDOWN
サーバ管理
データベース権限を閉じる
SUPER
サーバ管理
killスレッド権限の実行
 
MYSQLの権限がどのように分散されているかは、テーブルに対してどのような権限を設定できるか、カラムに対してどのような権限を設定できるかなどです.これは、公式ドキュメントのテーブルから説明できます.
権限の分散
設定可能な権限
テーブル権限
'Select', 'Insert', 'Update', 'Delete', 'Create', 'Drop', 'Grant', 'References', 'Index', 'Alter'
列の権限
'Select', 'Insert', 'Update', 'References'
プロセス権限
'Execute', 'Alter Routine', 'Grant'
このセクションでは、MYSQLがどのように検証されているか(2段階検証)、mysqlの各権限がどのように使用されているか、およびそれらの権限がどこに使用されているか(表or列?)を知ることが主です.これらを把握すればMYSQL権限はあなたにとっておかずの一皿であり、後ろの権限管理を見れば融通が利くことができます.
        
二、MYSQL権限経験原則
権限制御は主にセキュリティ要因によるものであるため、いくつかの経験原則に従う必要があります.
1.  必要を満たす最小限の権限のみを付与し,ユーザの悪事を防止する.ははは.たとえば、ユーザーはクエリーが必要なだけで、select権限だけでいいので、update、insert、delete権限をユーザーに与えないでください.
2.  ユーザを作成する際にユーザのログインホストを制限し、一般的には指定IPまたはイントラネットIPセグメントに制限する.
3.  データベースを初期化するときにパスワードのないユーザーを削除します.データベースのインストールが完了すると、デフォルトではパスワードがないユーザーが自動的に作成されます.
4.  ユーザーごとにパスワードの複雑さを満たすパスワードを設定します.
5.  不要なユーザーを定期的にクリーンアップします.権限を回収するか、ユーザーを削除します.
 
三、MYSQL権限実戦
1.  GRANTコマンド使用説明
まず、ローカルからのログインのみを許可するスーパーユーザーfeihongを作成し、他のユーザーに権限を付与することを許可します.パスワードは[email protected]
GRANT ALL PRIVILEGES ON *.* TO feihong@'localhost' IDENTIFIED BY '[email protected]' WITH GRANT OPTION;
GRANTコマンドの説明:
ALL PRIVILEGES すべての権限を表し、select、updateなどの権限で言及する権限も使用できます.
ON どのライブラリとテーブルに対する権限を指定します.
*.* の前の*番号を使用してデータベース名を指定し、後の*番号を使用してテーブル名を指定します.
TO ユーザーに権限を付与することを示します.
feihong@'localhost' feihongユーザーを表し、@後ろに制限を受けたホストは、IP、IPセグメント、ドメイン名および%であり、%はどこを表してもよい.注意:ここで%のバージョンにはローカルが含まれていません.以前、あるユーザーに%のログインを許可するように設定されたことがありますが、ローカルではログインできません.これはバージョンと関係があります.この問題に遭遇したら、localhostのユーザーを追加すればいいです.
IDENTIFIED BY ユーザーのログインパスワードを指定します.
WITH GRANT OPTION このオプションは、ユーザーが自分の所有する権限を他の人に許可できることを示します.注意:ユーザーを操作するときにWITH GRANT OPTIONオプションを指定しないと、GRANTコマンドを使用してユーザーを作成したり、他のユーザーに権限を与えたりできないことがよくあります.
メモ:GRANTを使用して、ユーザーに権限を追加することができます.たとえば、ユーザーにselect権限を追加してから、ユーザーにinsert権限を追加すると、そのユーザーはselectとinsert権限を同時に持つことになります.
2.  スーパーユーザーの作成
ローカルからのログインのみを許可するスーパーユーザーfeihongを作成し、パスワードが[email protected]
GRANT ALL PRIVILEGES ON *.* TO feihong@'localhost' IDENTIFIED BY '[email protected]' WITH GRANT OPTION;
3.   Webサイトユーザーの作成(プログラムユーザー)
一般的なプログラムユーザーを作成します.このユーザーはSELECT、INSERT、UPDATE、DELETE、CREATE TEMPORARY TABLESなどの権限しか必要ありません.ストレージプロセスがあればEXECUTE権限を加える必要があります.一般的には、イントラネットセグメント192.168.100のセグメントを指定します.
GRANT  USAGE,SELECT, INSERT, UPDATE, DELETE, SHOW VIEW ,CREATE TEMPORARY TABLES,EXECUTE ON `test`.* TO webuser@'192.168.100.%' IDENTIFIED BY  '[email protected]';
4.  一般ユーザーの作成(クエリー権限のみ)
GRANT USAGE,SELECT ON `test`.* TO public@'192.168.100.%' IDENTIFIED BY  '[email protected]';
5.  権限のリフレッシュ
このコマンドを使用して権限を有効にします.特に、権限テーブルuser、db、hostなどをupdateまたはdelete更新した場合です.以前grantを使用して権限が更新されていない場合は、権限を変更すればFLUSH PRIVILEGESコマンドを使用して権限をリフレッシュする習慣を身につけることができます.
FLUSH PRIVILEGES;
6.  アクセス権の表示
次のコマンドを使用すると、ユーザーの権限を簡単に表示できます.
SHOW GRANTS FOR 'webuser'@'192.168.100.%';
7.  権限の回収
前に作成したwebuserユーザーのDELETE権限を回収し、次のコマンドを使用します.
REVOKE DELETE ON test.* FROM 'webuser'@'192.168.100.%';
8.  ユーザーの削除
注意削除ユーザーはDELETEを使用して直接削除しないでください.DELETEを使用して削除すると、ユーザーの権限は削除されません.同じ名前のユーザーを新規作成すると、以前の権限が継承されます.正しい方法は、DROP USERコマンドを使用してユーザーを削除することです.たとえば、「webuser'@'192.168.100.%」ユーザーを削除するには、次のコマンドを使用します.
DROP USER 'webuser'@'192.168.100.%';
        
percona-toolkitツールのpt-show-grantsツールを使用してmysql権限の管理を支援できます.具体的な使用についてはブログを参照してください.http://blog.chinaunix.net/uid-20639775-id-3207926.html
次はhttp://zhidao.baidu.com/link?url=jivv0yTsgYfrAbvXs6EiLhg5pGgttEgY28eJn-PRfXzmhcjP-SkHUmNM-OTcAujSWHkof9HkszMVmCrbU0f4I_USageの解釈
   usage   :
USAGE “   ”    
                ,    USAGE。
         ,  SQL: SHOW GRANTS  
            :
GRANT ALL PRIVILEGES ON `everalan`.* TO 'everalan'@'%' WITH GRANT OPTION
    ,  USAGE    ,  ,             
 
usage         ,                    ,              ,