MySQLユーザー削除バグを解決する

MySQLユーザー削除バグを解決する

著者が MySQL を使用してユーザーを追加していたところ、ユーザー名が間違って記述されていることに気付きました。

私は強迫性障害を患っており、それを変更する必要がありますが、ユーザーを削除するとコマンドが成功することがわかりました。

ただし、同じ名前のユーザーを作成すると、エラーが報告されます。インターネットでいろいろ調べたところ、これはMySQLの公式バグであることがわかりました。作者がバグを理解するのが下手なのか、本当にこの問題を解決したのかはわかりません。以下に共有します。皆さん、一緒に議論してください。

ユーザーを削除した後、同じユーザー名を再度作成することはできません。

MySQL データベースには、すべてのユーザーとユーザー情報を照会できるユーザー テーブルがあります。ユーザー情報とユーザーに付与した権限を削除することで、ユーザーを完全に削除できます。

回避策

複数のユーザーの権限を数回削除した後、このユーザーを作成したときに % がリモート接続を許可していたため、最後の削除が成功したことがわかりました。

ユーザー権限の更新

権限のフラッシュ;

このとき、同じ名前のユーザーを再度作成しても、mysql はエラーを報告しません。

補足: mysql のユーザー削除 (2 つの実装ソリューション)

落とす

drop user XXX; は既存のユーザーを削除します。デフォルトでは、ユーザー 'XXX'@'%' が削除されます。'XXX'@'localhost' などの他のユーザーが存在する場合、それらは一緒に削除されません。 'XXX'@'localhost' を削除する場合は、drop を使用するときにホストを追加する必要があります。つまり、drop user 'XXX'@'localhost' です。

消去

user='XXX' かつ host='localhost' の場合、user から削除します。XXX はユーザー名、localhost はホスト名です。

違い

ドロップすると、ユーザー テーブル内のデータが削除されるだけでなく、他の権限テーブルの内容も削除されます。 Delete ではユーザー テーブルの内容のみが削除されるため、delete を使用してユーザーを削除した後は、FLUSH PRIVILEGES; を実行して権限を更新する必要があります。そうしないと、次に create ステートメントを使用してユーザーを作成するときにエラーが報告されます。

補足: mysql ユーザー作成エラーの解決方法 [Err] 1396 - 'test'@'%' に対する CREATE USER 操作が失敗しました

質問:

mysql create user文CREATE USER test IDENTIFIED BY 'test'を実行します。エラーが報告され、エラーメッセージは次のようになります。

[エラー] 1396 - 'test'@'%' の CREATE USER 操作が失敗しました

解決手順:

1. テストユーザーを作成します。

2. クエリでそのようなユーザーが存在しないことが示された場合は、FLUSH PRIVILEGES を実行し、作成ステートメントを再実行します。

3. それでもエラー メッセージが表示される場合は、drop user 'test'@'%'; を実行してから、create ステートメントを再実行します。

4. 作成に成功しました。

考えられる原因:

1. ユーザーは既に存在します。

2. delete ステートメントを使用してユーザーを削除した後、更新権限がありません。

3. ユーザーは存在しませんが、ユーザーの権限情報は存在します。

上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。間違いや不備な点がありましたら、遠慮なくご指摘ください。

以下もご興味があるかもしれません:
  • Mysql の一時テーブルとパーティションテーブルの違いの詳細な説明
  • MySQL ベストプラクティス: パーティションテーブルの基本タイプ
  • MySQL パーティション テーブルの基本入門チュートリアル
  • MySQL 最適化パーティションテーブル
  • MySQLがウィンドウ関数で合計関数を実行するときに発生する可能性のあるバグ
  • MySQLにバグが存在する
  • CentOS インストール PHP5.5+Redis+XDebug+Nginx+MySQL 完全記録
  • MySQL パーティション テーブルに関するパフォーマンス バグ

<<:  ウェブデザインの経験とスキルの概要

>>:  shtml includeの使い方

推薦する

HTML テーブル マークアップ チュートリアル (48): CSS で変更されたテーブル

<br />では、CSS 構文を巧みに使用してテーブルを美しくする方法を見てみましょう。...

MySQLトリガーの使用と注意すべき点

目次トリガーについてトリガーの使用トリガーを作成するトリガーを表示トリガーの削除使用上の注意新旧の違...

Linux システムを起動時に自動的にスクリプトを実行するように設定する方法の例

序文みなさんこんにちは。私は梁旭です。職場では、システムの起動後にスクリプトやサービスを自動的に開始...

モバイルブラウザが位置をサポートしない場合の解決策: 修正

具体的な方法は以下の通りです。 CSSコードコードをコピーコードは次のとおりです。 .wap_bot...

ログインと登録機能を実現するjs

この記事の例では、ログインと登録機能を実装するためのjsの具体的なコードを参考までに共有しています。...

VUEはFlappy Birdゲームのサンプルコードを実装します

Flappy Bird は、誰もがアプリでプレイしたことがある非常にシンプルな小さなゲームです。ここ...

SQL文のパフォーマンスを分析するための標準的な要約

この記事では、explain を使用して SQL ステートメントを分析する方法を紹介します。実際、イ...

Vueは下部のポップアップウィンドウで複数選択を実装します

この記事の例では、下部のポップアップウィンドウで複数選択を実装するためのVueの具体的なコードを共有...

MySQLはPartition関数を使用して水平分割戦略を実装します。

目次1件のレビュー2 水平分割の5つの戦略2.1 ハッシュ2.2 範囲2.3. キー2.4. リスト...

Linux での umask の使用に関する詳細な説明

私は最近 Linux を学び始めました。Ma Ge の umask に関する Linux コースを読...

MySQLの共通関数を使用してJSONを処理する方法

公式ドキュメント: JSON 関数名前説明JSON_APPEND() JSONドキュメントにデータを...

よく使われる HTML 形式のタグ_Powernode Java Academy

1. タイトルHTML では、<h1></h1> から <h6>...

MySQL デッドロックのトラブルシューティング プロセスの完全な記録

序文これまで遭遇したデータベースのデッドロックはすべて、バッチ更新中のロック順序の不一致が原因でした...

JavaScript は詳細なコードで星座クエリ機能を実装します

目次1. タイトル2. コード3. 結果IV. 結論1. タイトルテキスト ボックスに誕生日の値を入...

CSS3 すりガラス効果

すりガラス効果がうまく表現されていれば、ページが非常に鮮やかで立体的に見えるようになります。写真に直...