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の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: ウェブページのカラーマッチング例分析: 緑色のカラーマッチングウェブページ分析
ご存知のとおり、binlog ログは MySQL データベースにとって非常に重要です。万が一、データ...
基本的な使い方 <!DOCTYPE html> <html lang="...
1. はじめにtable_cache は非常に重要な MySQL パフォーマンス パラメータであり、...
メインライブラリの実行 CREATE DATABASE test CHARACTER SET utf...
目次1. グローバルレベル2. データベースレベル3. 表面レベル4. 列レベルの権限5. サブルー...
この記事では、MySQL データベースの基礎を学ぶためによく使用されるコマンドを例を使って説明します...
zip インストール パッケージをダウンロードします。 MySQL8.0 For Windows z...
この記事では、WeChatアプレットでジグソーパズルゲームを実装するための具体的なコードを参考までに...
HTML でよく使用されるエスケープ文字をまとめると次のようになります。 改行...
1. 親コンテナーをテーブルに設定し、子をインライン要素に設定します。テキストを表示するサブコンテン...
1. コマンドの紹介gzip (GNU zip) コマンドは、ファイルの圧縮と解凍に使用されます。こ...
目次環境の準備環境の準備mariadbをアンインストールする rpm -qa | grep mari...
目次序文keep-avlive フック関数keep-avliveはどのコンポーネントをキャッシュする...
この記事では、MySQL 8.0.13の手動インストールチュートリアルを参考までに紹介します。具体的...
導入シンプルな jQuery + CSS を使用して、ブラウザのデフォルトの動作を置き換えるカスタム...