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

推薦する

外部ファイル(js/vbs/css)をインポートするときに文字化けを回避する方法

ページ内にはjs、cssなどの外部ファイルが導入されており、外部ファイルのエンコードが現在のページフ...

Ubuntu 18.04 (コミュニティ エディション) に Docker CE をインストールする方法

古いバージョンをアンインストールする以前に古いバージョンをインストールしたことがある場合は、まずそれ...

MySQLデータベース監視binlogを有効にする手順

序文多くの場合、ユーザーが自分のデータに対して実行する操作に基づいて何かを行う必要があります。たとえ...

Linux statコマンドの使用

1. コマンドの紹介stat コマンドは、ファイルまたはファイル システムに関する詳細情報を表示する...

Vue で Openlayer を使用して読み込みアニメーション効果を実現する

注意: スコープアニメーションは使用できません。 ! ! ! GIF経由 <テンプレート>...

Nginx コンパイル済み nginx - 新しいモジュールを追加

1. 既存のモジュールを表示する nginx の sbin ディレクトリに nginx の sbin...

CSSはグラデーションを巧みに利用して高度な背景光アニメーションを実現します

成し遂げるこの効果は CSS を使用して完全に再現することは困難です。 CSS でシミュレートされた...

nginxコンテナ設定ファイルの独立した実装

コンテナを作成する [root@server1 ~]# docker run -it --name ...

JSネイティブ2列シャトル選択ボックスの実装例

目次いつ使うか構造的ブランチコードいつ使うか選択動作を完了するには、2 つの列間で要素を直感的に移動...

mysql5.7.21 の異常起動を修正する方法

同僚から、停電のため MySQL インスタンスを起動できないという報告がありました。 innodb_...

nginxの基礎を学ぶ

目次1. nginx とは何ですか? 2. nginx で何ができるのか? 2.1 フォワードプロキ...

Vue マルチ選択リスト コンポーネントの詳細な説明

マルチ選択は、すべてのオプションを一覧表示し、ユーザーが Ctrl/Shift キーを使用して複数選...

jsプロキシの原理の詳細な説明

目次プロキシモードとは何ですか?実例を紹介例を使ってプロキシモデルの定義を理解するプロキシとはget...

Linux でテキストから改行文字を削除する方法

復帰文字 ( Ctrl+M ) に不安を感じても心配しないでください。それらを排除する簡単な方法がい...

vue3+vite プロジェクトで svg を使用する方法の詳細なグラフィック説明

今日、vue3+viteプロジェクトの実践で、svgを使用する場合、以前の記述方法が使用できないこと...