mysql 権限制御DBA として、MySQL の権限について理解している必要があります。MySQL の権限の制御は、次の 3 つのレベルに分かれています。
ここでは、MySQL のすべての権限をリストし、最後に MySQL 権限制御の小さなバグを反映する特別なケースを示します。まず、権限リストを見てみましょう。権限はアルファベット順に並べられています。
権限システムテーブル権限は、mysql データベースの user、db、tables_priv、columns_priv、および procs_priv システム テーブルに保存され、MySQL インスタンスの起動後にメモリにロードされます。 • ユーザーテーブル: ユーザーアカウント情報とグローバルレベル(すべてのデータベース)の権限を格納します。これにより、どのホストのどのユーザーがデータベースインスタンスにアクセスできるかが決まります。グローバル権限がある場合、すべてのデータベースにこの権限があることを意味します。 どのホストのどのユーザーがこのデータベースにアクセスできるかを決定するデータベースレベルの権限を保存します。 テーブルレベルの権限を格納します。これにより、どのホストのどのユーザーがデータベース内のこのテーブルにアクセスできるかが決まります。 列レベルの権限を格納します。これにより、どのホストのどのユーザーがデータベース テーブル内のこのフィールドにアクセスできるかが決まります。 ストアドプロシージャと関数レベルの権限を保存します 変更後にMySQLの権限を有効にする方法• Grant、revoke、setpassword、または renameuser コマンドを実行して権限を変更すると、MySQL は変更された権限情報を自動的にシステム メモリにロードします。 権限の付与と取り消し権限を付与する場合、通常は grant ステートメントが使用されます。クエリを例にとると、詳細は次のとおりです。 db_name.table_name に対する選択権限を user@host に付与します。 データベース内のすべてのテーブルへの権限をアカウントに付与する場合は、上記のステートメントの table_name を * に変更する必要があります。データベース内のすべてのデータベースのすべてのテーブルへの権限を付与する場合は、db_name と table_name の両方を * に変更する必要があります。 revoke 構文は通常、権限を取り消すために使用されます。クエリを例にとると、その使用法は次のようになります。 user@host からの db_name.table_name の選択を取り消します。 it と grant の違いは、文の最後の部分が から に変更されている点であることに注意してください。 特別なケース今日、オンライン業務を処理しているときに、権限を開く必要がありました。ワークベンチ クライアントからストアド プロシージャを表示したいと考えました。最初の対応は、実行権限を直接付与することでした。その結果、実行権限を付与した後も、ビジネス パーティはストアド プロシージャを表示できませんでした。確認したところ、データベースに接続した後、次のように表示されました。 mysql> データベースを表示します。 +--------------------+ | データベース | +--------------------+ | 情報スキーマ | |AAA| +--------------------+ セット内の 2 行 (0.00 秒) mysql> AAAを使用する データベースが変更されました mysql> プロシージャのステータスを表示\G ************************** 1. 行 **************************** Db: CVS 名前: ba_get_grow タイプ: 手順 定義者: [email protected] 更新日: 2019-02-26 :: 作成日: 2019-02-26 :: セキュリティタイプ: DEFINER コメント: 文字セットクライアント: utf8 照合接続: utf8_general_ci データベース照合: utf8_general_ci mysql> 作成プロシージャ ba_get_grow\G を表示します ************************** 1. 行 **************************** 手順: ba_get_grow SQLモード: プロシージャの作成: NULL 文字セットクライアント: utf8 照合接続: utf8_general_ci データベース照合: utf8_general_ci セット内の行数 (0.00 秒) 29行目のcreate procedureの値がNULLになっており、プロシージャの内容が表示されていないことがわかります。もちろん、プロシージャを見ることはできません。このような場合はどうすればよいでしょうか。 mysql.proc テーブルにはストアド プロシージャに関する情報が含まれていると考えたため、次の方法を使用して mysql.proc テーブルに読み取り専用権限を与えました。 [email protected]:(なし) 22:35:07>> `mysql`.proc に対する選択権限を 'user'@'host' に付与します。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) クライアントに再度ログインすると、次のようにストアド プロシージャの内容がすでに表示されていることがわかります。 mysql> データベースを表示します。 +--------------------+ | データベース | +--------------------+ | 情報スキーマ | |AAA| +--------------------+ セット内の 2 行 (0.00 秒) mysql> データベースを表示します。 +--------------------+ | データベース | +--------------------+ | 情報スキーマ | |AAA| |mysql | +--------------------+ セット内の 3 行 (0.00 秒) mysql> 作成プロシージャ ba_get_grow\G を表示します ************************** 1. 行 **************************** 手順: ba_get_grow SQLモード: プロシージャの作成: CREATE DEFINER=`dba_admin`@`127.0.0.1` PROCEDURE `ba_get_grow`( p_table_info varchar() では、 出力 out_retmsg varchar() ) 始める XXXXXXXXX XXXXXXXXX XXXXXXXXX XXXXXXXXX 終わり 文字セットクライアント: utf8 照合接続: utf8_general_ci データベース照合: utf8_general_ci セット内の行数 (0.00 秒) 上記はMySQLの権限制御の詳細な内容です。MySQLの権限制御の詳細については、123WORDPRESS.COMの他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: ウェブページのカラーマッチング例分析: 緑色のカラーマッチングウェブページ分析
1. まずhello-world.cppファイルを作成しますプログラムコードは次のとおりです。 #i...
マウスが画像上にあるときにズームインおよびズームアウトするには、JS を使用します。具体的なコードは...
Linux や Unix の cut コマンドは、ファイルの各行から一部を切り取って標準出力に出力す...
最近、Linux オペレーティング システムを使用して実行可能ファイルを実行していたところ、「そのよ...
目次リナックス1. crontabの基本的な使い方2. ログを有効にする3. スケジュールされたタス...
1. CentOS8でのDockerのインストール カール https://download.doc...
この記事はCentOS 7.3システム環境をベースに、MySQLとRedisのインストールと使用につ...
目次前面に書かれた序文ChromeプラグインとはChrome プラグイン開発を学ぶことの意義は何です...
目次タイプ判定から始める厳格な平等エラーファーストと約束デバッグと出力タイプ判定から始めるJavaS...
この記事では、2番目のキルカウントダウンコンポーネントを実装するためのVueの具体的なコードを参考ま...
MySQL を使用して特定のステートメントを実行すると、データ量が多いためにデッドロックが発生し、...
目次ユニオンクエリ1. 中国の各省のIDと名前を照会する2. 湖南省のすべての地級市のIDと名称3....
PHP7が出たので、最新バージョンのファンとしては、早速アップグレードして体験してみました。しかし...
Mysql は、高性能なデータ ストレージ サービスを提供する主流のオープン ソース リレーショナル...
サーバーの配置数日間無料で使用できるクラウドサーバー(Alibaba Cloud、Huawei Cl...