ヒント: 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 における属性とプロパティの具体的な使用法と違い
目次ユーザー管理新しいユーザーを作成するユーザー名の変更ユーザーのパスワードを設定するルートパスワー...
タイムスタンプの差を計算するSQLメソッド概要場合によっては、特定のレコードを時間で検索する必要があ...
この記事では、天気予報機能を実現するためのVueの具体的なコードを参考までに共有します。具体的な内容...
目次概要1. バックエンドデータの取得と処理2. インターフェース表示処理概要前回のエッセイ「ステッ...
1eChartsの基本手順4つのステップ1 DOMコンテナを見つける2 初期化3 設定オプション4 ...
目次01 コンテナの本質とは何か? 02 Cgroupテクノロジーと名前空間テクノロジーの概要03 ...
Docker の人気と成熟に伴い、Docker は徐々にプロジェクトをデプロイするための第一の選択肢...
序文データベースをバックアップするときは、データベース全体のバックアップを使用します。ただし、何らか...
エラーの説明: 1. Linux (CentOS 7 64) システムに Nginx (1.18.0...
背景最近、複数のプロジェクトを展開する際に、1 つのドメイン名で複数のプロジェクトにアクセスする方法...
目次序文実際の戦闘1. ロックなし2. 悲観的ロック3. 楽観的ロック要約する序文悲観的ロックと楽観...
GitLabのDocker使用法gitlab ドッカー起動コマンド docker run -d -p...
springboot には tomcat サーバーが組み込まれているため、jar パッケージにパッケ...
序文スロークエリとは何か、またスロークエリを最適化するにはどうすればよいか。以下では、これら 2 つ...
Navicat がエクスポートしたデータはインポートできません。最後に、MySQLコマンドのインポー...