序文 最近、仕事で、MySQL ユーザーの権限を変更するには、特定の IP アドレスへのアクセスを制限する必要があるという要件に遭遇しました。このような要件に遭遇したのは初めてです。その結果、テスト プロセス中に、更新システム権限レポートの使用時にいくつかの問題が見つかりました。具体的なデモンストレーションは次のとおりです。 注意:以下のテスト環境はMySQL 5.6.20です。テスト結果と他のバージョンで相違がある場合は、実際の環境を参照してください。 まず、192.168 セグメントの IP アドレスのみにアクセスを許可するテスト ユーザー LimitIP を作成します。具体的な権限は次のとおりです。 mysql> MyDB.* に対して GRANT SELECT ON を LimitIP@'192.168.%' に、'LimitIP' によって識別されるように許可します。 クエリは正常、影響を受けた行は 0 行 (0.01 秒) mysql> MyDB.kkk に対して LimitIP@'192.168.%' への INSERT、UPDATE、DELETE 権限を許可します。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) マイSQL> mysql> 権限をフラッシュします。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) マイSQL> mysql> LimitIP@'192.168.%' の許可を表示します。 +------------------------------------------------------------------------------------------------------------------------------------------------+ | [email protected].% の許可 | +------------------------------------------------------------------------------------------------------------------------------------------------+ | パスワード '*72DDE03E02CC55A9478A82F3F4EBE7F639249DEC' で識別される 'LimitIP'@'192.168.%' に *.* の使用権を許可します | | 'MyDB`.* に対する 'LimitIP'@'192.168.%' への SELECT 権限を付与 | | 'LimitIP'@'192.168.%' に `MyDB`.`kkk` への挿入、更新、削除権限を許可します | +--------------------------------------------------------------------------------------------------------------------------------+ セット内の 3 行 (0.00 秒) マイSQL> ここで、このユーザーは IP アドレス 192.168.103.17 にのみアクセスできるという要件を受け取ったとします。そのため、mysql.user テーブルを次のように更新する予定です。 mysql> mysql.user から user、host を選択します (user='LimitIP' の場合)。 +---------+------------+ | ユーザー | ホスト | +---------+------------+ | 制限IP | 192.168.% | +---------+------------+ セット内の 1 行 (0.00 秒) mysql> mysql.user を更新し、host='192.168.103.17' を設定し、user='LimitIP' とします。 クエリは正常、1 行が影響を受けました (0.02 秒) 一致した行: 1 変更された行: 1 警告: 0 mysql> 権限をフラッシュします。 クエリは正常、影響を受けた行は 0 行 (0.01 秒) mysql> user='LimitIP' の user から user、host を選択します。 エラー 1046 (3D000): データベースが選択されていません mysql> mysql を使用します。 テーブル名と列名の補完のためのテーブル情報の読み取り -Aでこの機能をオフにすると起動が速くなります。 データベースが変更されました mysql> user='LimitIP' の user から user、host を選択します。 +---------+----------------+ | ユーザー | ホスト | +---------+----------------+ | 制限IP | 192.168.103.17 | +---------+----------------+ セット内の 1 行 (0.00 秒) mysql> LimitIP@'192.168.103.17' の許可を表示します。 +---------------------------------------------------------------------------------------------------------------------------------------+ | [email protected] への許可 | +---------------------------------------------------------------------------------------------------------------------------------------+ | パスワード '*72DDE03E02CC55A9478A82F3F4EBE7F639249DEC' で識別される 'LimitIP'@'192.168.103.17' に *.* の使用権を許可します | +---------------------------------------------------------------------------------------------------------------------------------------+ セット内の 1 行 (0.00 秒) マイSQL> 上記のテストでは、mysql.user テーブルのみを変更すると、以前の権限が失われることがわかりました。以下に示すように、mysql.db と mysql.tables_priv をクエリすると、Host フィールドの値が依然として 192.168.% であることがわかります。 mysql> mysql.db から user='LimitIP'\G を選択して * を実行します。 ************************** 1. 行 **************************** ホスト: 192.168.% データベース: MyDB ユーザー: LimitIP 選択特権: Y 挿入権限: N 更新権限: N 削除権限: N 作成権限: N ドロップ権限: N 権限付与: N 参照権限: N インデックス権限: N 権限変更: N 作成_tmp_table_priv: N ロックテーブル権限: N 作成ビュー権限: N 表示権限: N 作成ルーチン権限: N ルーチン権限の変更: N 実行権限: N イベント特権: N トリガー権限: N セット内の 1 行 (0.00 秒) エラー: クエリが指定されていません mysql> mysql.tables_priv から * を選択します。ここで、user='LimitIP'\G; ************************** 1. 行 **************************** ホスト: 192.168.% データベース: MyDB ユーザー: LimitIP テーブル名: kkk 付与者: root@localhost タイムスタンプ: 0000-00-00 00:00:00 Table_priv: 挿入、更新、削除 列の権限: セット内の 1 行 (0.00 秒) エラー: クエリが指定されていません そこで、mysql.db テーブルと mysql.tables_priv テーブルの変更を続け、テストして最終的に問題がないことを確認しました (以下のテスト手順を参照してください)。もちろん、アカウントにこれらのレベルを超える権限がある場合は、mysql.columns_priv、mysql.procs_priv などのテーブルも変更する必要がある可能性があります。 mysql> LimitIP@'192.168.%' の許可を表示します。 エラー 1141 (42000): ホスト '192.168.%' のユーザー 'LimitIP' にそのような権限は定義されていません マイSQL> マイSQL> mysql> mysql.db を更新し、host='192.168.103.17' を設定し、user='LimitIP' とします。 クエリは正常、1 行が影響を受けました (0.00 秒) 一致した行: 1 変更された行: 1 警告: 0 mysql> mysql.tables_priv を更新し、host='192.168.103.17' を設定し、user='LimitIP' とします。 クエリは正常、1 行が影響を受けました (0.00 秒) 一致した行: 1 変更された行: 1 警告: 0 mysql> 権限をフラッシュします。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) mysql> LimitIP@'192.168.103.17' の許可を表示します。 +---------------------------------------------------------------------------------------------------------------------------------------+ | [email protected] への許可 | +---------------------------------------------------------------------------------------------------------------------------------------+ | パスワード '*72DDE03E02CC55A9478A82F3F4EBE7F639249DEC' で識別される 'LimitIP'@'192.168.103.17' に *.* の使用権を許可します | | 'MyDB`.* に対する 'LimitIP'@'192.168.103.17' への SELECT 権限を付与 | | 'LimitIP'@'192.168.103.17' に `MyDB`.`kkk` への挿入、更新、削除権限を許可します | +---------------------------------------------------------------------------------------------------------------------------------------+ セット内の 3 行 (0.00 秒) マイSQL> ユーザーのIP制限を変更する必要がある場合、MySQL関連の権限テーブルを更新するのは最善の解決策ではありません。実際、より良い方法があります。それは、RENAME USER構文です。 mysql> ユーザー 'LimitIP'@'192.168.103.17' の名前を 'LimitIP'@'192.168.103.18' に変更します。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) mysql> 権限をフラッシュします。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) mysql> 'LimitIP'@'192.168.103.18' の権限を表示します。 +---------------------------------------------------------------------------------------------------------------------------------------+ | [email protected] への許可 | +---------------------------------------------------------------------------------------------------------------------------------------+ | パスワード '*72DDE03E02CC55A9478A82F3F4EBE7F639249DEC' で識別される 'LimitIP'@'192.168.103.18' に *.* の使用権を許可します | | 'MyDB`.* に対する 'LimitIP'@'192.168.103.18' への SELECT 権限を付与 | | 'LimitIP'@'192.168.103.18' に `MyDB`.`kkk` への挿入、更新、削除権限を許可します | +---------------------------------------------------------------------------------------------------------------------------------------+ セット内の 3 行 (0.00 秒) マイSQL> 要約する 上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に少しでもお役に立てれば幸いです。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM をご愛顧いただき、ありがとうございます。 以下もご興味があるかもしれません:
|
<<: CocosCreator クラシック エントリー プロジェクト flappybird
>>: LinuxのバックグラウンドでPythonプログラムを実行するいくつかの方法
OracleデータベースからエクスポートされたデータをMySqlデータベースにインポートします。 1...
目次質問1. webpack webpack-cliをインストールする2. webpackのバージョ...
序文ブラウザをどのようにズームしても、ボックス コンテナーの高さを常に 100% に保つ必要がある場...
META タグは、HTML 言語のヘッダー領域にある補助タグです。作成者、日時、Web ページの説明...
1. 行の形式は何ですか? MySQL の行形式の設定は次のように表示されます。 実際、MySQL ...
border-radius で生成できる四角形やその他の図形に影を追加する場合 (「Adaptive...
この記事では主に、オブジェクト内のフィールドを削除するための js の実装を紹介し、次のように共有し...
MacOS Catalina アップグレード後の VMware ブラック スクリーンに対する完璧なソ...
1. 解決策1.1 インターフェースコンテキストパスの説明2 つのバックエンド インターフェイス サ...
さっそく、コードを直接投稿します。具体的なコードは次のとおりです。 <!--方法 1: onf...
この記事では、JSオブジェクト指向タイピングゲームの具体的なコードを参考までに紹介します。具体的な内...
この記事では ソースコードのオンラインプレビューとダウンロード今日のチュートリアルでは、円のホバー効...
背景ブラウザの互換性の問題を解決するのは非常に面倒なことです。高度な技術はそれほど必要ありませんが、...
この記事の例では、参考のために航空機戦争ゲームを実装するためのJSの具体的なコードを共有しています。...
react-native インストールプロセス1.npx react-native init Awe...