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

推薦する

MySQL カーソルの概念と使用法の詳細な説明

この記事では、例を使用して MySQL カーソルの概念と使用方法を説明します。ご参考までに、詳細は以...

MySQLバイナリログを介してデータベースデータを復元する方法の詳細な説明

ウェブサイト管理者は、さまざまな理由や操作により、ウェブサイトのデータを誤って削除したり、ウェブサイ...

CSS3で実装されたスライドメニュー

結果:実装コード: <!DOCTYPE html><html class=&quo...

MySQL は制限を使用してページング例メソッドを実装します

1. 制限の基本的な実装一般的に、クライアントは、pageNo (ページ番号) と pageSize...

MySQL データベースで UTF-8 エンコードを設定する方法

/etc/my.cnf または /etc/mysql/my.cnf ファイルを変更する [クライアン...

CSS で中空効果を実装するサンプルコード

効果原理主にCSSグラデーションを使用して、切り取りを必要としない背景のくり抜きを実現します。クーポ...

サイトマップをウェブページの下部に配置するメリットと例

以前は、ほとんどすべての Web サイトに、すべてのページをリストしたサイトマップ ページがありまし...

表には表示したい境界コードが表示されます

テーブルの共通プロパティ基本的な属性は、width (幅)、height (高さ)、border (...

スタートアップ企業が丹念に作り上げた優れたウェブデザイン17選

スタートアップ企業は、型破りな仕事のやり方、ユニークなビジネスモデル、特徴的な製品やサービス、パーソ...

MySQLデータベースの管理者パスワードを忘れた場合の解決策

1. コマンド mysqld --skip-grant-tables を入力します (前提条件: m...

MySQL 圧縮版 zip のインストールに関する問題の解決策

本日、MySQLの圧縮版をインストールする際に問題が発生しました。サービスが起動できず、2、3時間苦...

ネイティブ JS を使用してタッチスライド監視イベントを実装する方法

序文今日はちょっとしたデモを書きました。左右にスワイプするロジックに関わる部分があります。当初はプラ...

LeetCode の SQL 実装 (178. スコアランキング)

[LeetCode] 178.ランクスコアスコアをランク付けする SQL クエリを記述します。2 ...

MySql における特殊演算子の使用の概要

序文MySQL には次の 4 種類の演算子があります。算術演算子比較演算子論理演算子ビット演算子これ...

複数の Docker コンテナが同じポート番号を持たない場合の解決策

背景Dockerでは、同じイメージを使用して4つのコンテナを作成します。ネットワークはブリッジモード...