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の使い方

推薦する

Docker 学習: コンテナ コンテナの具体的な使用方法

コンテナは Docker のもう一つの中心的な概念です。簡単に言えば、コンテナとは、独立して実行され...

Linux ファイル管理コマンド例の分析 [表示、閲覧、統計など]

この記事では、Linux ファイル管理コマンドについて例を挙げて説明します。ご参考までに、詳細は以下...

JDBC が MySQL に接続して中国語を処理するときに文字化けする問題の解決方法の詳細説明

JDBC が MySQL に接続して中国語を処理するときに文字化けする問題の解決方法の詳細説明最近、...

WeChatアプレットは左にスワイプしてリスト項目を削除する効果を実現

この記事では、WeChatミニプログラムの具体的なコードを共有し、左にスワイプしてリスト項目を削除す...

MySQL 5.6 の「暗黙的な変換」によりインデックスが失敗し、データが不正確になる

背景SQL クエリを実行するときに、where 条件の vachar 型フィールドの単一引用符を削除...

SQL ステートメント実行の詳細な説明 (MySQL アーキテクチャの概要 -> クエリ実行プロセス -> SQL 解析順序)

序文:私はずっと、SQL 文がどのように、どのような順序で実行されるのかを知りたいと思っていました。...

HTML ドロップダウン ボックスの SELECT オプションを変更する複数の方法

フォームが送信されると、返された HTML ページが再レンダリングされ、SELECT コントロールの...

FTP、FTPS、SFTPの違いについて簡単に説明します

目次FTP、FTPS、SFTP の概要FTP FTPS FTPサーバーFTPソフトウェアのアクティブ...

Bootstrap 3.0 の特殊効果の学習ノート(表示と非表示、フローティングの除去、閉じるボタンなど)

この記事の主な内容は次のとおりです。 1. 閉じるボタン2.キャレット3. フローティングを素早く設...

vscodeを使用してReact Native開発環境を構築する方法を教えます

質問コードにはプロンプトがありません: RN 開発に不慣れな、フロントエンド以外の学生の多くは、「ど...

インターネットウェブデザインにおけるバイオニックデザインの簡単な紹介

バイオニックデザインといえば、飛行機の発明、ドバイのブルジュ・アル・アラブ、平泳ぎなどを思い浮かべる...

Better-scrollはメニューとコンテンツをリンクする効果を実現します

1. 基本的な使い方 <!DOCTYPE html> <html lang=&qu...

一般的なCSS3アニメーションの実装方法

1. 何ですかCSS アニメーションは、CSS を使用して拡張マークアップ言語 (XML) 要素をア...

JavaScript の BigIn 関数の共通プロパティをまとめます

目次1. 概要2. 属性1. 数学演算子2. 比較演算子3. ブール演算結論1. 概要BigInt ...

MySQLとRedisキャッシュ間の同期ソリューションについての簡単な説明

目次1. ソリューション 1 (UDF)デモケース2. ソリューション2(binlogの解析)キャナ...