ヒント: MySQL では、ユーザーの作成と削除が頻繁に必要になります。ユーザーを作成するときは、通常、create user または grant ステートメントを使用して作成します。create 構文で作成されたユーザーには権限がないため、grant 構文を使用して権限を割り当てる必要があります。grant 構文で作成されたユーザーには、割り当てられた権限が直接与えられます。いくつかのテスト ユーザーを作成してテストした後、ユーザーのライフ サイクルが終了し、ユーザーを削除する必要がある場合があります。MySQL でユーザーを削除するには、通常 2 つの方法があります。1 つは mysql.userから削除 まず、 mysql 15:13:12>>'123456' で識別される '%' というユーザー yeyz を作成します。 クエリは正常、行は影響を受けました (. 秒) mysql 15:20:01>>yeyz.yeyz に対する select、create、update、delete 権限を yeyz@'%' に付与します。 クエリは正常、行は影響を受けました (. 秒) mysql 15:29:48>>'123456' によって識別される 'yeyz'@localhost に yeyz.yeyz の使用権限を許可します。 クエリは正常、行は影響を受けました (. 秒) [email protected]:(なし) 15:20:39>>yeyz@'%' の権限を表示します。 +--------------------------------------------------------------------------------------------------------------------+ | yeyz@% への助成金 | +--------------------------------------------------------------------------------------------------------------------+ | パスワード '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' で識別される 'yeyz'@'%' に *.* の使用を許可します | | `yeyz`.`yeyz` に対する SELECT、UPDATE、DELETE、CREATE 権限を 'yeyz'@'%' に付与します | +--------------------------------------------------------------------------------------------------------------------+ この時点で、delete メソッドを使用して、mysql.user テーブル内の 2 人のユーザーを手動で削除します。user テーブルを確認すると、次のことがわかります。 mysql 15:20:43>>user='yeyz' の場合、mysql.user から削除します。 クエリは正常、行は影響を受けました (. 秒) mysql 15:21:40>>mysql.userからユーザー、ホストを選択します。 +------------------+-----------------+ | ユーザー | ホスト | +------------------+-----------------+ | dba_yeyz | ローカルホスト | | ルート | ローカルホスト | | tkadmin | ローカルホスト | +------------------+-----------------+ セット内の行数 (.sec) yeyz ユーザーはもう存在しません。show grants for コマンドを使用して、削除したユーザーを表示すると、このユーザーの権限の説明がまだ存在していることがわかります。 mysql 15:24:21>>yeyz@'%' の権限を表示します。 +--------------------------------------------------------------------------------------------------------------------+ | yeyz@% への助成金 | +--------------------------------------------------------------------------------------------------------------------+ | パスワード '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' で識別される 'yeyz'@'%' に *.* の使用を許可します | | `yeyz`.`yeyz` に対する SELECT、UPDATE、DELETE、CREATE 権限を 'yeyz'@'%' に付与します | +--------------------------------------------------------------------------------------------------------------------+ セット内の行数 (0.00 秒) これは、このユーザーを mysql.user テーブルから削除したにもかかわらず、このユーザーが db テーブルと権限テーブルにまだ存在していることを意味します。この結論を確認するために、yeyz@localhost という名前のユーザーを再作成します。次のように、このユーザーには使用権限のみを付与し、その他の権限は構成しません。 mysql ::>> '123456' によって識別される 'yeyz'@localhost に yeyz.yeyz の使用権限を許可します。 クエリは正常、行は影響を受けました (. 秒) 今回は、ユーザー yeyz@localhost を使用してデータベース サービスにログインし、次のように関連する更新操作を実行します。 [dba_mysql@tk-dba-mysql-stat-- ~]$ /usr/local/mysql/bin/mysql -uyeyz --socket=/data/mysql_4306/tmp/mysql.sock --port= -p -hlocalhost パスワードを入力してください: MySQL モニターへようこそ。コマンドは ; または \g で終わります。 MySQL接続IDは サーバーバージョン: 5.5.-log MySQL Community Server (GPL) Copyright (c) 、Oracle およびその関連会社。無断複写・転載を禁じます。 OracleはOracle Corporationおよびその関連会社の登録商標です。 その他の名称は各社の商標である場合があります。 所有者。 ヘルプを表示するには、「help;」または「\h」と入力します。現在の入力ステートメントをクリアするには、「\c」と入力します。 mysql--yeyz@localhost:(なし) 15:31:05>>yeyz.yeyzから*を選択します。 +------+ |id| +------+ | 3 | | 4 | | 5 | +------+ セット内の行数 (.sec) mysql--yeyz@localhost:(なし) 15:31:16>>id=; の yeyz.yeyz から削除します。 クエリは正常、行は影響を受けました (. 秒) mysql--yeyz@localhost:(なし) 15:31:32>>yeyz.yeyzから*を選択します。 +------+ |id| +------+ | 3 | | 4 | +------+ セット内の行数 (.sec) 最終結果は予測可能です。使用権限を持つユーザーがデータベース テーブルに対して更新操作を実行し、成功しました。これらはすべて、delete from mysql.user 操作のおかげです。この操作はユーザー テーブルからレコードを削除しますが、このレコードのホストが % の場合、同じ名前の新しいユーザーが作成されると、新しいユーザーは以前のユーザー権限を継承し、ユーザー権限制御が無効になります。これは非常に危険な操作であり、可能な限り回避する必要があります。 もう一度開いて、ドロップメソッドを使用してユーザーを削除する方法を確認します。 まず、2 人のユーザーを削除し、show grants for ステートメントを使用してその権限を表示します。 mysql ::>>ユーザーyeyz@'%'を削除します。 クエリは正常、行は影響を受けました (0.00 秒) mysql ::>>ユーザー yeyz@'localhost' を削除します。 クエリは正常、行は影響を受けました (0.00 秒) MySQL ::>> mysql ::>>yeyz@'%' の権限を表示します。 エラー (): ホスト '%' 上のユーザー 'yeyz' にそのような権限は定義されていません mysql ::>>yeyz@'localhost' の権限を表示します。 エラー (): ホスト '192.168.18.%' 上のユーザー 'yeyz' に対してそのような権限は定義されていません ご覧のとおり、権限は完全に削除されています。次に、選択した権限のみを持つユーザーを再作成します。 mysql ::>>パスワード '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' によって識別される 'yeyz'@'localhost' への *.* に対する選択権限を許可します。 クエリは正常、行は影響を受けました (. 秒) このユーザーを使用してデータベース サービスにログインし、選択、更新、および作成操作を実行しようとします。結果は次のようになります。 [dba_mysql@tk-dba-mysql-stat-10-104 ~]$ /usr/local/mysql/bin/mysql -uyeyz --socket=/data/mysql_4306/tmp/mysql.sock --port=4306 -p -hlocalhost パスワードを入力してください: MySQL モニターへようこそ。コマンドは ; または \g で終わります。 MySQL接続IDは サーバーバージョン: 5.5.19-log MySQL コミュニティサーバー (GPL) Copyright (c) 、Oracle およびその関連会社。無断複写・転載を禁じます。 OracleはOracle Corporationおよびその関連会社の登録商標です。 その他の名称は各社の商標である場合があります。 所有者。 ヘルプを表示するには、「help;」または「\h」と入力します。現在の入力ステートメントをクリアするには、「\c」と入力します。 mysql ::>>yeyz.yeyz から * を選択します。 +------+ |id| +------+ | | | | | | +------+ セット内の行数 (0.00 秒) mysql ::>>update yeyz.yeyz set id= where id=; エラー (): テーブル 'yeyz' に対する UPDATE コマンドがユーザー 'yeyz'@'localhost' に拒否されました mysql ::>>テーブルテストを作成します(id int); エラー (D000): データベースが選択されていません mysql ::>>テーブルyeyz.test(id int)を作成します。 エラー (): テーブル 'test' に対する CREATE コマンドがユーザー 'yeyz'@'localhost' に拒否されました このユーザーは選択操作のみ実行できることがわかります。更新および作成操作を実行しようとすると、システムはそのような操作に対する権限がないと判断し、直接拒否します。つまり、drop user メソッドを使用してユーザーを削除すると、db テーブルと権限テーブルが一緒にクリアされます。言い換えれば、削除は比較的クリーンであり、将来のユーザーに影響を与えることはありません。 結論は: ユーザーを削除する場合は、drop user メソッドを使用するようにしてください。delete メソッドを使用すると、隠れた危険が発生する可能性があります。次回同じ名前のユーザーを作成すると、権限制御に問題が発生します。 このデモンストレーションは、初心者の友人の疑問も解決します。使用権限しか持たないユーザーが、なぜすべてのデータベースにアクセスして操作を実行できるのでしょうか?このとき、ログをチェックして、mysql.user から削除操作を実行したかどうかを確認する必要があります。実行した場合、この問題は簡単に説明できます。 上記は、2つのMySQLユーザー削除ステートメント(delete userとdrop user)の違いの詳細な内容です。MySQLユーザー削除の詳細については、123WORDPRESS.COMの他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
>>: Vue における属性とプロパティの具体的な使用法と違い
方法1: SET PASSWORDコマンドを使用する mysql -u ルート mysql> ...
サブスクリプションメッセージテンプレートを選択または作成するWeChat アプレットにログインし、「...
初心者が div+css を開発する場合、.ggg、#ccc などの形式の CSS 疑似クラス名を付...
MySQL 8.0 Windows zipのインストール手順は次のように紹介されています。準備する:...
一般的に、関数は実行する前に呼び出す必要があることはご存じのとおりです。以下に示すように、関数を定義...
序文最近は、PC、iPad、携帯電話、スマートウォッチ、スマートテレビなど、さまざまなデバイスが存在...
以前、インターネット上で動的ルーティング設定をいくつか見たことがありましたが、現在のプロジェクトとは...
目次シンプルな CASEWHEN 関数:これは、CASEWHEN 条件式関数を使用するのと同じです。...
最近、CSS3 アニメーションのソース コードの実装をいくつか見ていたところ、CSS コード アニメ...
目次1. 集計クエリ1. COUNT関数2. SUM関数3. AVG関数4. MAX関数とMIN関数...
サーバーの LNPM 環境をインストールして構成する場合、複数のバージョンの PHP の共存を考慮す...
1.docker search mysql查看mysql版本 2. docker pull mysq...
以前のブログでは、Tomcatのサーバーの各コンポーネントの使用について学びました。 Tomcatは...
最新のパーフェクト アロエ ベラ ジェルのパッケージ ボックスには、赤いフォントで完璧な英語の文字が...
1 はじめにバイナリ ログは、データを持つ、またはデータを変更する可能性がある SQL ステートメン...