[MySQL]-MySQLのグラントコマンド

31060 ワード

ソース:http://yingxiong.javaeye.com/blog/451208
 
この例は、MySQL 5.0および以上のバージョンで実行される。
MySQLがユーザに権限を与えるコマンドの簡単なフォーマットは、要約すると次のようになる。

  
    
grant on to
 
 
 
一、grant普通のデータユーザは、データベース内のすべてのテーブルデータを検索、挿入、更新、削除する権利があります。

  
    
grant select on testdb. * to common_user@ ' % '
grant insert on testdb. * to common_user@ ' % '
grant update on testdb. * to common_user@ ' % '
grant delete on testdb. * to common_user@ ' % '
または、MySQLコマンドを使用して置換します。

  
    
grant select , insert , update , delete on testdb. * to common_user@ ' % '
 
 
 
二、grantデータベースの開発者は、表、索引、ビュー、格納プロセス、関数を作成します。などの権限があります
grant作成、変更、削除MySQLデータテーブル構造権限。

  
    
grant create on testdb. * to developer@ ' 192.168.0.% ' ;
grant alter on testdb. * to developer@ ' 192.168.0.% ' ;
grant drop on testdb. * to developer@ ' 192.168.0.% ' ;
 
grant操作MySQL外部キーの権限。

  
    
grant references on testdb. * to developer@ ' 192.168.0.% ' ;
 
grant操作MySQL一時テーブル権限。

  
    
grant create temporary tables on testdb. * to developer@ ' 192.168.0.% ' ;
 
grant操作MySQLインデックス権限。

  
    
grant index on testdb. * to developer@ ' 192.168.0.% ' ;
 
grant操作MySQLビュー、ビューソースコード権限を表示します。

  
    
grant create view on testdb. * to developer@ ' 192.168.0.% ' ;
grant show view on testdb. * to developer@ ' 192.168.0.% ' ;
 
grant操作MySQL格納プロセス、関数権限。

  
    
grant create routine on testdb. * to developer@ ' 192.168.0.% ' ; -- now, can show procedure status
grant alter routine on testdb. * to developer@ ' 192.168.0.% ' ; -- now, you can drop a procedure
grant execute on testdb. * to developer@ ' 192.168.0.% ' ;
 
 
 
三、grant普通DBAはあるMySQLデータベースの権限を管理する。

  
    
grant all privileges on testdb to dba@ ' localhost '
なお、キーワード「privleges」は省略することができます。
 
 
四、grant高級DBAはMySQLのすべてのデータベースの権限を管理します。

  
    
grant all on * . * to dba@ ' localhost '
 
 
 
五、MySQL grant権限は、それぞれ複数のレベルで機能します。
1.grantはMySQLサーバ全体に作用します。

  
    
grant select on * . * to dba @localhost ; -- dba MySQL 。
grant all on * . * to dba @localhost ; -- dba MySQL
 
2.grantは単一のデータベースに作用します。

  
    
grant select on testdb. * to dba @localhost ; -- dba testdb 。
 
3.grantは単一データテーブルに作用します。

  
    
grant select , insert , update , delete on testdb.orders to dba @localhost ;
 
ここでは、複数のテーブルをユーザに授権する際に、複数のステートメントを実行することができます。たとえば:

  
    
grant select ( user_id ,username) on smp.users to mo_user@ ' % ' identified by ' 123345 ' ;
grant select on smp.mo_sms to mo_user@ ' % ' identified by ' 123345 ' ;
4.grantは表の列に作用します。

  
    
grant select (id, se, rank) on testdb.apache_log to dba @localhost ;
 
5.grantは記憶プロセス、関数に作用します。

  
    
grant execute on procedure testdb.pr_add to ' dba ' @ ' localhost '
grant execute on function testdb.fn_add to ' dba ' @ ' localhost '
 
 
 
六、MySQLユーザー権限を確認する
現在のユーザ(自分)の権限を表示:

  
    
show grants;
 
他のMySQLのユーザ権限を調べます。

  
    
show grants for dba @localhost ;
 
 
 
七、MySQLユーザー権限を付与した権限を取り消す。
revokeとgrantの文法は同じです。キーワード「to」を「from」に変えるだけでいいです。

  
    
grant all on * . * to dba @localhost ;
revoke all on * . * from dba @localhost ;
 
 
 
八、MySQL grant、Revokeユーザー権限注意事項
1.grant、Revokeユーザー権限後、このユーザはMySQLデータベースを再接続するだけで、権限が有効になります。
2.権限を付与したいユーザにも、これらの権限を他のユーザーに与えることができます。オプション「grant option」が必要です。

  
    
grant select on testdb. * to dba @localhost with grant option ;
この特性は一般的には使えません。実際にはDBAでデータベース権限を統一管理したほうがいいです。
 
 
 
***************************************************************************************
 
SELECT command denied to user'ユーザー名'@'ホスト名'for table'テーブル名'というエラーに遭遇した場合、解決方法は後ろのテーブル名を授権する必要があります。つまり、コアデータベースを授権する必要があります。
私が会ったのはSELECT command denied to user'my'@'%for table'proc'というものです。保存プロセスを呼び出した時に現れました。指定されたデータベースを授権すればいいと思っていましたが、どのような記憶過程や関数などはもう管理しなくてもいいです。誰が知っていてもデータベースmysqlのprocを授権します。
 
***************************************************************************************
参考:http://zhidao.baidu.com/question/19633785.html
 
mysql授権表は全部で5つの表があります。user、db、host、tablewuplivとcolumnsupliv。
ライセンステーブルの内容は以下のような用途があります。userテーブルには、サーバーに接続できるユーザとパスワードが表示されています。そして、どのようなグローバル(スーパーユーザ)があるかを指定します。権限です。userテーブルで有効にされているすべての権限は全体的な権限であり、すべてのデータベースに適用されます。例えば、DELETE権限を有効にすると、ここにリストされているユーザはどのテーブルからもレコードを削除できますので、このようにする前によく考えてください。
dbテーブルdbテーブルはデータベースをリストしていますが、ユーザーはそれらにアクセスする権限があります。ここで指定した権限はデータベースのすべてのテーブルに適用されます。
hostテーブルhostテーブルとdbテーブルを組み合わせて、より良いレベルで特定のホストのデータベースへのアクセス権限を制御します。これは単独でdbを使うよりもいいかもしれません。この表はGRANTとREVOKE文の影響を受けません。だから、あなたはまったくそれを使っていないことが分かります。
テーブルテーブルテーブルテーブルテーブルのテーブルレベルの権限を指定します。ここで指定した権限は一つのテーブルのすべての列に適用されます。
columnsuplivテーブルcolumnsuplivテーブルは、列レベルの権限を指定します。ここで指定した権限は一つの表の特定の列に適用されます。