ヒント: 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 における属性とプロパティの具体的な使用法と違い
仮想マシンを使用しているときに、ディスク容量が不足し、継続使用するためにディスクをマウントする必要が...
目次ベース戻り値の型文字列とブール値数値とbigintシンボル未定義関数物体他のよくある質問参照エラ...
Alpine イメージの telnet はバージョン 3.7 以降、busybox-extras パ...
テキストの長さに応じて、左側のテキストの幅を自動調整できる状況を実現したい。1行が表示できない場合、...
必要:あるフィールドの同一項目を結合し、別の時間フィールドで並べ替えます。例:初めに テーブルから都...
<iframe src=”ページのURL” width=”100″ height=”30″ f...
MySQL ページング クエリは通常、制限を通じて実装されます。 limit は 1 つまたは 2 ...
カウント(*)成し遂げる1. MyISAM: テーブル内の行の総数をディスク上に保存し、フィルタリン...
新しいテーブルを作成する テーブル「人」を作成します( `id` int NOT NULL COMM...
本体の幅をウィンドウの幅に設定します(次のスクリプトで制御されます) $("body&qu...
show-header属性を使用したドキュメントのヒントshow-header <el-テーブ...
基礎リレーショナル データベースでは、各データ テーブルはファイルに相当し、異なるストレージ エンジ...
Brotli は、Zopfli よりも 20 ~ 26% 高い圧縮率を実現できる新しいデータ形式です...
目次序文配列.isArrayコンストラクタインスタンスプロトタイプオブジェクト.プロトタイプ.toS...
以前、純粋な CSS を使用して波の効果を実現する方法をいくつか紹介しました。それらについては、次の...