MySQLでは,さまざまなコンテキストおよびさまざまな動作レベルに適用される権限が提供されます。
管理権限によって,ユ,ザ,はMySQLサ,バ,の動作を管理できます。これらの権限は特定のデ,タベ,スに固有でないため,グロ,バルです。
デ,タベ,ス権限は,デ,タベ,スおよびデ,タベ,ス内のすべてのオブジェクトに適用されます。これらの権限は,特定のデータベースに付与したり,すべてのデータベースに適用されるようにグローバルに付与したりすることができます。
テーブル,インデックス,ビュー,ストアドルーチンなどのデータベースオブジェクト向けの権限は,データベース内の特定のオブジェクト,データベース内の特定タイプのすべてのオブジェクト(たとえばデータベース内のすべてのテーブル),またはすべてのデータベース内の特定タイプのすべてのオブジェクトにグローバルに付与することができます。
アカウント権限に関する情報は,mysql
デ,タベ,ス内の用户
、db
、tables_priv
、columns_priv
,およびprocs_priv
テブルに格納されます(セクション6.2.2“権限システム付与テブル”を参照してください)。MySQLサ,バ,はこれらのテ,ブルの内容を起動時にメモリ,に読み取り,セクション6.2.6“権限変更が有効化される時期”に示す条件でこれらを再ロ,ドします。アクセス制御決定は,付与テブルのンメモリコピに基づきます。
MySQLの一部のリリースでは,新たな権限や機能を追加するために付与テーブルの構造に変更を加えているものもあります。すべての新しい機能を確実に活用できるようにするには、新しいバージョンの MySQL に更新するときに常に付与テーブルを更新して、最新の構造を持つようにします。セクション4.4.7 "mysql_upgrade- MySQLテブルのチェックとアップグレド"を参照してください。
次の表には,格兰特
および撤销
ステートメント内でSQLレベルで使用される権限名のほか,付与テーブル内の各権限に関連付けられたカラムおよび権限が適用されるコンテキストが示されています。
表6.2 grantおよびrevokeに対して許容可能な権限
権限 | カラム | コンテキスト |
---|---|---|
创建 |
Create_priv |
デタベス,テブル,またはンデックス |
下降 |
Drop_priv |
デ,タベ,ス,テ,ブル,またはビュ, |
GRANT选项 |
Grant_priv |
デ,タベ,ス,テ,ブル,またはストアドル,チン |
锁表 |
Lock_tables_priv |
デ,タベ,ス |
参考文献 |
References_priv |
デ,タベ,スまたはテ,ブル |
事件 |
Event_priv |
デ,タベ,ス |
改变 |
Alter_priv |
テブル |
删除 |
Delete_priv |
テブル |
指数 |
Index_priv |
テブル |
插入 |
Insert_priv |
テ,ブルまたはカラム |
选择 |
Select_priv |
テ,ブルまたはカラム |
更新 |
Update_priv |
テ,ブルまたはカラム |
创建临时表 |
Create_tmp_table_priv |
テブル |
触发 |
Trigger_priv |
テブル |
创建视图 |
Create_view_priv |
ビュ |
显示视图 |
Show_view_priv |
ビュ |
改变日常 |
Alter_routine_priv |
ストアドル,チン |
创建程序 |
Create_routine_priv |
ストアドル,チン |
执行 |
Execute_priv |
ストアドル,チン |
文件 |
File_priv |
サバホストでのファルアクセス |
创建表空间 |
Create_tablespace_priv |
サ,バ,管理 |
创建用户 |
Create_user_priv |
サ,バ,管理 |
过程 |
Process_priv |
サ,バ,管理 |
代理 |
proxies_priv テ,ブルを参照 |
サ,バ,管理 |
重新加载 |
Reload_priv |
サ,バ,管理 |
复制客户端 |
Repl_client_priv |
サ,バ,管理 |
复制的奴隶 |
Repl_slave_priv |
サ,バ,管理 |
显示数据库 |
Show_db_priv |
サ,バ,管理 |
关闭 |
Shutdown_priv |
サ,バ,管理 |
超级 |
Super_priv |
サ,バ,管理 |
所有(特权) |
サ,バ,管理 | |
使用 |
サ,バ,管理 |
次のリストには,MySQLで使用可能な各権限の一般的な説明が提供されています。特定のSQLステトメントには,ここに示されているよりも具体的な権限要件がある場合もあります。そのような場合,該当するステ,トメントの説明で詳細を示します。
所有
または所有权限
権限指定子は,短縮形です。これは,「特定の権限レベルで使用可能なすべての権限」(GRANT选项
を除く)を表します。たとえば,グローバルまたはテーブルレベルで所有
を付与すると,すべてのグロ,バル権限またはテ,ブルレベルのすべての権限が付与されます。改变
権限は,テ,ブルの構造を変更するためのALTER TABLE
の使用を可能にします。ALTER TABLE
には创建
および插入
権限も必要です。テブルを名前変更するには、古いテーブル側で改变
および下降
と,新しいテ,ブル側で改变
、创建
,および插入
権限が必要です。创建临时表
権限は,创建临时表
ステ,トメントを使用した一時テ,ブルの作成を可能にします。MySQL 5.6.3の時点では,セッションによって一時テーブルが作成されると,サーバーはテーブル上の権限チェックを追加実行しません。セッションの作成によって,
删除表
、插入
、更新
、选择
などのあらゆる操作をテ,ブル上で実行できます。この動作の1つの影響として,現在のユーザーが一時テーブルを作成する権限を持たなくても,セッションが一時テーブルを操作できるということがあります。現在のユ,ザ,が
创建临时表
権限を持たないが,创建临时表
を持定义者
コンテキストのストアドプロシ,ジャ,を実行できるとします。プロシ,ジャ,の実行中,セッションは定義側ユ,ザ,の権限を使用します。プロシージャーが復帰したあと,有効な権限は現在のユーザーの権限に戻り,これによって引き続き一時テーブルを表示し,一時テーブルに対してあらゆる操作を実行できることになります。MySQL 5.6.3より前では,
插入
、更新
、选择
などの一時テーブル上でのほかの操作には,一時テーブルを格納するデータベースに対する操作について,または同じ名前の非一時テーブルについての追加の権限が必要です。一時テーブルと非一時テーブルの権限を分離するための,この状況についての一般的な回避策は,一時テーブルを使用するための専用データベースを作成することです。そうすることで,そのデ,タベ,スに,
创建临时表
権限と,ユーザーによって実行される一時テーブル操作に必要なほかのすべての権限を,そのユーザーに付与することができます。下降
権限は,既存のデ,タベ,ス,テ,ブル,およびビュ,のドロップを可能にします。パ,ティション化されたテ,ブルで修改表…删除分区
ステ,トメントを使用するには下降
権限が必要です。下降
権限は截断表
のためにも必要です。mysql
デ,タベ,スに対する下降
権限をユーザーに付与すると,MySQLアクセス権限が格納されているデータベースをユーザーが削除することができます。文件
権限は,加载数据文件
および选择……到输出文件
ステ,トメントとLOAD_FILE ()
関数を使用するサーバーホスト上でファイルの読み取りおよび書き込みを実行するための許可をユーザーに与えます。文件
権限を持つユーザーは,すべてのユーザーから読み取り可能であるか,MySQLサーバーによって読み取り可能なサーバーホスト上のすべてのファイルを読み取ることができます。(このことは暗黙的に,データベースディレクトリ内のあらゆるファイルにサーバーからアクセスできるため,ユーザーはそれらのすべてのファイルを読み取ることができることを意味します)さらに文件
権限によって,ユーザーはMySQLサーバーが書き込みアクセス権限を持つあらゆるディレクトリに新しいファイルを作成できます。これは,権限テブルを実装するファルを格納するサバのデタディレクトリを含みます。セキュリティ対策として,サバは既存のファルを上書きしません。ファ电子邮箱ルを読み取りおよび書き込みできる場所を制限するには,
secure_file_priv
システムを特定のディレクトリに設定します。セクション5.1.4 "サ,バ,システム変数"を参照してください。GRANT选项
権限によって,ユーザーは自分自身が所有する権限をほかのユーザーに付与したり,ほかのユーザーから削除したりすることができます。指数
権限によって、ユ、ザ、は、ンデックスを作成またはドロップできます。指数
は既存のテ,ブルに適用されます。テ,ブルに対する创建
権限を持場合,创建表
ステトメントにンデックス定義を含めることも可能です。插入
権限は,デ,タベ,スのテ,ブルへの行の挿入を可能にします。分析表
、优化表
、修理表
などのテ,ブル保守に関するステ,トメントにも,插入
権限が必要です。锁表
権限は,ユ,ザ,が选择
権限を持锁表
ステ,トメントの使用を可能にします。これには,ロックされたテーブルをほかのセッションから読み取らせないようにする書き込みロックの使用が含まれます。过程
権限は,サーバー内で実行するスレッドについての情報の表示に関係します(つまり,セッションによって実行されるステートメントについての情報)。この権限は,显示PROCESSLIST
またはmysqladmin processlistを使用して,ほかのアカウントに属するスレッドを表示することを可能にし,自分自身のスレッドを表示することもできます。过程
権限は,显示引擎
の使用も可能にします。代理
権限によって,ユーザーは別のユーザーになりすましたり,別のユーザーとして認識されるようにしたりすることができます。セクション6.3.9 "プロキシユザ"を参照してください。重新加载
権限は,冲洗
ステ,トメントの使用を可能にします。また,これは冲洗
操作 (flush hosts
、flush-logs
、flush-privileges
、flush status
、刷新表
、flush-threads
、刷新
,および重新加载
)と同等なmysqladminコマンドを使用可能にします。重新加载
コマンドは,付与テブルをメモリにリロドするようにサバに指示します。flush-privileges
は重新加载
のシノニムです。刷新
コマンドは,ログファルを閉じて再オプンし,すべてのテブルをフラッシュします。ほかの冲洗,
コマンドはxxx
刷新
に類似した機能を実行しますが,より具体的であるため一部の状況では好ましい場合があります。たとえば,ログファ刷新
よりもflush-logs
を選択することをお勧めします。复制客户端
権限は,显示主机状态
および显示奴隶状态
の使用を可能にします。MySQL 5.6.6以降では,これは显示二进制日志
ステ,トメントの使用も可能にします。复制的奴隶
権限は,マスターとしての現在のサーバーに接続するときにスレーブサーバーが使用するアカウントに対して与えるようにしてください。この権限がない場合,スレーブは,マスターサーバー上のデータベースに対して実行された更新をリクエストすることができません。选择
権限によって,ユザはデタベス内のテブルから行を選択できます。选择
ステ,トメントで选择
権限が必要となるのは,ステ,トメントがテ,ブルから実際にレコ,ドを取得する場合です。一部の选择
ステートメントはテーブルにアクセスしないため,あらゆるデータベースへのアクセス権がなくても実行できます。たとえば,テ,ブルを参照しない式を評価するための単純な計算機として选择
を使用することができます。选择1 + 1;选择π()* 2;
选择
権限は,カラム値を読み取るほかのステ,トメントに,いても必要です。たとえば,更新
ステ,トメントの代入col_name
=expr
の右辺で参照されるカラムや,删除
または更新
ステ,トメントの在哪里
句で指定されるカラムにいて,选择
が必要です。显示数据库
権限によって,アカウントは显示数据库
ステ,トメントを発行することでデ,タベ,ス名を表示することができます。この権限を持たないアカウントには,アカウントが一部の権限を持つデータベースしか表示されず,サーバーが——skip-show-database
オプションで起動されている場合はステ,トメントを一切使用できません。すべてのグロ,バル権限は,デ,タベ,スに対する権限だということに注意してください。超级
権限によって,アカウントはほかのアカウントに属するスレッドを強制終了するための将master更改为
、杀了
,またはmysqladmin杀死(自分のスレッドは常に強制終了できます),清除二进制日志
,グロ,バルシステム変数を変更するための集全球
を使用した構成変更,mysqladmin调试コマンド,ロギングの有効化または無効化,read_only
システム変数が有効な場合の更新の実行,スレーブサーバー上でのレプリケーションの開始と停止,ストアドプログラムおよびビューの定义者
属性内のすべてのアカウントの指定を使用することができ,ユ,ザ,はmax_connections
システム変数によって制御される接続制限に達している場合でも(一度)接続することができます。バ电子邮箱ナリロギングを有効にした場合にストアドファンクションを作成または変更するとき,セクション20.7 "ストアドプログラムのバナリロギング"に記載されているように
超级
権限がやはり必要になることがあります。触发
権限はトリガ,操作を有効にします。テ,ブルのトリガーを作成、削除、または実行するには、そのテーブルに対してこの権限を持つ必要があります。使用
権限指定子は,「権限なし」を表します。これは格兰特
と一緒にグローバルレベルで使用されて,既存のアカウント権限に影響を及ぼすことなくリソース制限やSSL特性などのアカウント属性を変更します。
アカウントには必要な権限のみを付与することをお勧めします。文件
権限と管理権限の付与にいては十分に注意するようにしてください。
文件
権限を悪用してMySQLサーバーがサーバーホスト上で読み取ることができるあらゆるファイルをデータベーステーブルから読み取ることができます。これにはすべてのユーザーが読み取り可能なすべてのファイルと,サーバーのデータディレクトリ内のファイルが含まれます。そのあと,选择
を使用してそのテブルにアクセスし,テブルの内容をクラアントホストに送信することができます。GRANT选项
権限によって,ユ,ザ,はほかのユ,ザ,に権限を付与することができます。異なる権限を持2人のユザがGRANT选项
権限を持っていれば,権限を組み合わせることができます。改变
権限を使用して,テ,ブルの名前を変更することによって権限システムを壊すことができます。关闭
権限を悪用して,サーバーを終了することによって,ほかのユーザーへのサービスを完全に妨害することができます。过程
権限は,パスワードの設定や変更を行うステートメントなどを含め,現在実行中のステートメントのプレーンテキストを表示することができます。超级
権限は,ほかのセッションを終了したり,サ,バ,の動作方法を変更したりするために使用できます。mysql
データベース自体に付与した権限を使用して,パスワードおよびその他のアクセス権限情報を変更することができます。パスワードは暗号化されて保管されているため,悪意のあるユーザーは単純にそのパスワードを見てプレーンテキストパスワードを知ることはできません。ただし,用户
テ,ブルの密码
カラムへの書き込みアクセス権限を持つユーザーは,アカウントのパスワードを変更し,そのアカウントを使用してMySQLサーバーに接続することができます。