忘れられたMySQLパスワードとログインエラーの問題について簡単に説明します

忘れられたMySQLパスワードとログインエラーの問題について簡単に説明します

MySQL ログイン パスワードを忘れた場合、解決方法は実はとても簡単です。MySQL メイン構成ファイル my.cnf に「skip authorization table」パラメータ選択の行を追加するだけです。

my.cnf に次の行を追加します。

[root@test-huanqiu ~]# vim /etc/my.cnf //[mysqld]エリアに追加
........
skip-grant-tables //認可テーブルをスキップする

その後、mysqlサービスを再起動すると、パスワードなしでログインできます。

[root@test-huanqiu ~]# /etc/init.d/mysqldを再起動します

ログイン後にパスワードをリセットする

[root@test-huanqu ~]#mysql
mysql> mysql.user からホスト、ユーザー、パスワードを選択します。
+--------------------+------+--------------------------------------------------------+
| ホスト | ユーザー | パスワード |
+--------------------+------+--------------------------------------------------------+
| ローカルホスト | ルート | *481ACA1BD6D1E86221244904E9C0FABA33B40B84 |
| ホスト-192-168-1-117 | ルート | |
| 127.0.0.1 | ルート | |
| ::1 | ルート | |
| ローカルホスト | | |
| ホスト-192-168-1-117 | | |
+--------------------+------+--------------------------------------------------------+
セット内の 6 行 (0.00 秒)

mysql> update mysql.user set password=password("123456") where host="localhost" and user="root";
クエリは正常、1 行が影響を受けました (0.02 秒)
一致した行: 1 変更された行: 1 警告: 0

mysql> 権限をフラッシュします。
クエリは正常、影響を受けた行は 0 行 (0.01 秒)

mysql> mysql.user からホスト、ユーザー、パスワードを選択します。
+--------------------+------+--------------------------------------------------------+
| ホスト | ユーザー | パスワード |
+--------------------+------+--------------------------------------------------------+
| ローカルホスト | ルート | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| ホスト-192-168-1-117 | ルート | |
| 127.0.0.1 | ルート | |
| ::1 | ルート | |
| ローカルホスト | | |
| ホスト-192-168-1-117 | | |
+--------------------+------+--------------------------------------------------------+
セット内の 6 行 (0.00 秒)

マイSQL>

my.cnfに追加された行を再度コメントアウトし、mysqlを再起動します。

[root@test-huanqiu ~]# vim /etc/my.cnf
........
#許可テーブルをスキップする

[root@test-huanqiu ~]# /etc/init.d/mysqldを再起動します

[root@test-huanqu ~]# mysql -p123456
マイSQL>

-----------------------------------------------------------------------------------------------------------------------

穴が見つかりました:

以前、mysql の完全バックアップを実行しました。復元した後、以前のパスワードを使用してログインできなくなっていることがわかりました。
上記の方法を使用してパスワードなしでログインし、その後パスワードをリセットしましたが、パスワードをリセットした後もログインできないことがわかります。

最終的に、mysql.user テーブルの内容がクリアされたことが原因であることがわかりました。
mysql> ユーザーからホスト、ユーザー、パスワードを選択します。
空のセット (0.00 秒)

解決する:

データを入力してパスワードをリセットする

mysql> ユーザーに挿入(ホスト、ユーザー、パスワード) 値("localhost","root","123456");
クエリは正常、1 行が影響を受け、3 つの警告 (0.01 秒)

mysql> ユーザーからホスト、ユーザー、パスワードを選択します。
+-----------+------+----------+
| ホスト | ユーザー | パスワード |
+-----------+------+----------+
| ローカルホスト | ルート | 123456 |
+-----------+------+----------+
セット内の 1 行 (0.00 秒)

mysql> update mysql.user set password=password("123456") where host="localhost" and user="root";
クエリは正常、1 行が影響を受けました (0.01 秒)
一致した行: 1 変更された行: 1 警告: 0

mysql> ユーザーからホスト、ユーザー、パスワードを選択します。
+-----------+------+------------------------------------------+
| ホスト | ユーザー | パスワード |
+-----------+------+------------------------------------------+
| ローカルホスト | ルート | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+------+------------------------------------------+
セット内の 1 行 (0.00 秒)
mysql> ユーザーに挿入(ホスト、ユーザー、パスワード) 値("127.0.0.1","root","123456");
クエリは正常、1 行が影響を受け、3 つの警告 (0.00 秒)

mysql> ユーザーからホスト、ユーザー、パスワードを選択します。
+-----------+------+------------------------------------------+
| ホスト | ユーザー | パスワード |
+-----------+------+------------------------------------------+
| ローカルホスト | ルート | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| 127.0.0.1 | ルート | 123456 |
+-----------+------+------------------------------------------+
セット内の 2 行 (0.00 秒)

mysql> mysql.user を更新し、password を password("123456") に設定し、user="root" に設定します。
クエリは正常、1 行が影響を受けました (0.00 秒)
一致した行: 2 変更された行: 1 警告: 0

mysql> ユーザーからホスト、ユーザー、パスワードを選択します。
+-----------+------+------------------------------------------+
| ホスト | ユーザー | パスワード |
+-----------+------+------------------------------------------+
| ローカルホスト | ルート | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| 127.0.0.1 | ルート | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+------+------------------------------------------+

その後、リセットしたパスワードを使用して通常どおりログインできます。

------------------------------------------------------------------------------------------------------------------

mysql ログインエラー 1:

[root@test-huanqu ~]# mysql -p123456
エラー 2002 (HY000): ソケット '/var/lib/mysql/mysql.sock' を介してローカル MySQL サーバーに接続できません (111)

[root@test-huanqiu ~]# ps -ef|grep mysql
ルート 28279 1 0 12:55 ? 00:00:00 /bin/sh /usr/local/mysql//bin/mysqld_safe --datadir=/data/mysql/data --pid-file=/data/mysql/data/mysql.pid
mysql 29059 28279 0 12:55 ? 00:00:01 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql/ --datadir=/data/mysql/data --plugin-dir=/usr/local/mysql//lib/plugin --user=mysql --log-error=/data/mysql/data/mysql-error.log --pid-file=/data/mysql/data/mysql.pid --socket=/usr/local/mysql/var/mysql.sock --port=3306
ルート 30726 11268 0 12:58 pts/2 00:00:00 grep mysql

現在の mysql.sock ファイル パスは /usr/local/mysql/var/mysql.sock であることがわかります。

解決策: ソフトリンクを作成する

[root@test-huanqiu ~]# ll /usr/local/mysql/var/mysql.sock
rwxrwxrwx. 1 mysql mysql 0 11月29日 12:55 /usr/local/mysql/var/mysql.sock
[root@test-huanqiu ~]# rm -f /var/lib/mysql/mysql.sock
[root@test-huanqiu ~]# ln -s /usr/local/mysql/var/mysql.sock /var/lib/mysql/mysql.sock

それはいいです。

[root@test-huanqu ~]# mysql -p123456
マイSQL>

----------------------------------------------------------------------------------------------------

mysql を起動すると、エラーが発生します:

MySQL を起動しています... エラー! サーバーは PID ファイル (/data/mysql/data/mysql.pid) を更新せずに終了しました。

試みられた解決策:

(1)許可の問題

mysql.pid ファイルに書き込み権限がない可能性があります。mysql インストール ディレクトリとデータ ディレクトリの権限を、mysql 起動ユーザーの権限に設定してください。たとえば、すべての権限がmysql:mysqlに変更されます。

(2)プロセス内にすでにmysqlプロセスが存在している可能性がある

ps -ef|grep mysql mysqlプロセスがある場合はそれを終了し、mysqlを再起動してください。

(3)MySQLがマシンに複数回インストールされており、残留データがサービスの起動に影響を与えている可能性があります。

mysql データ ディレクトリに移動し、mysql-bin.index が存在するかどうかを確認し、すぐに削除してください。これが原因です。

(4) 起動時に設定ファイルが指定されていない場合、mysqlは/etc/my.cnf設定ファイルを使用します。このファイルを開き、[mysqld]セクションの下にデータディレクトリが指定されているかどうかを確認します。

[mysqld]の下に設定を追加します(例:datadir = /data/mysql/data)

(5)スキップフェデレーションフィールド問題

my.cnf ファイルをチェックして、コメント アウトされていない skip-federated フィールドがあるかどうかを確認します。ある場合は、すぐにコメント アウトします。

(6)エラーログディレクトリが存在しない

my.cnf ファイルにログ構成パスがあるかどうかを確認します。ある場合は、ログ ディレクトリが存在するかどうかを確認します。ログ ディレクトリの権限が mysql 起動ユーザーの権限であることを確認します。

(7) SELinuxが原因です。CentOSシステムの場合、SELinuxはデフォルトで有効になっています。

それを閉じて、/etc/selinux/config を開き、SELINUX=enforcing を SELINUX=disabled に変更し、保存して終了し、マシンを再起動して再試行してください。
(8)MySQLデータの再初期化を試みる

mysqlインストールディレクトリに切り替える

./scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql/data --user=mysql

--------------------------------

MySQL サーバー側の認証情報を使用して MySQL にログインすると、次のエラーが表示されます。

エラー 2003 (HY000): '192.168.1.14' の MySQL サーバーに接続できません (111)

考えられる原因は次のとおりです:

1) ネットワーク接続に問題がある可能性があります。リモートから 192.168.1.14 に ping を実行すると、正常に ping が実行され、この問題は解消されます。

2) mysql サーバー 192.168.1.14 の iptables でポート 3306 のホワイトリスト制限が設定されています。

3) mysql サーバー 192.168.1.14 の my.cnf ファイルで bind_address アドレス バインディングが設定されており、ローカル接続は許可されていません。

4) MySQL サーバー 192.168.1.14 の my.cnf ファイルで skip_networking が設定されます。これは、MySQL はローカル ソケット経由でのみ接続でき (ソケット接続はローカル接続のデフォルト モードでもあります)、TCP/IP 監視が中止されることを意味します。

5) DNS 解決の問題をトラブルシューティングし、MySQL サーバー 192.168.1.14 の my.cnf ファイルに skip_name_resolve が設定されているかどうかを確認します。このパラメータを追加すると、ホスト名接続方法はサポートされなくなります。

6) --port の問題を確認します。MySQL サーバー 192.168.1.14 の MySQL ポートがデフォルトの 3306 ではなく、たとえばポート 3307 である可能性があります。この場合、リモート接続時に --port=3307 を追加します。

7) ユーザー名とパスワードの問題を確認します。実際、ユーザー名とパスワードが間違っていると、エラー コード 111 は表示されないため、ユーザー名とパスワードの問題は解消されるはずです。
エラー 1045 (28000): ユーザー 'root'@'XXXX' のアクセスが拒否されました (パスワード使用: YES)

MySQL パスワードを忘れた場合やログイン エラーが発生した場合の問題について、上記の簡単な説明は、編集者が皆さんと共有する内容のすべてです。参考になれば幸いです。また、123WORDPRESS.COM をサポートしていただければ幸いです。

以下もご興味があるかもしれません:
  • MySQL ユーザーを初期化する (匿名ユーザーを削除する)
  • MYSQL で匿名ユーザーを削除する方法 (セキュリティを向上させるため)
  • MySQL サーバー ログイン エラー ERROR 1820 (HY000) の解決方法
  • MySQL 8.0 をインストールした後、初めてログインするときにパスワードを変更する問題を解決する
  • mysql8.0.11クライアントがログインできない問題の解決方法
  • シェルでパスワードなしでMySQLデータベースに素早くログインする方法
  • MySql ログイン パスワードを忘れた場合とパスワードを忘れた場合の解決策
  • ユーザー登録とログインを実現するPHP+MySQL方式
  • MySQLに新しいユーザーを追加してもログインできない場合の解決策
  • MySQL 匿名ログインでデータベースを作成できない問題の解決方法

<<:  Dockerボリューム権限管理の詳細な説明

>>:  検証コード干渉を実装する js (静的)

推薦する

MySql ビュー トリガー ストアド プロシージャの詳細な説明

ビュー:一時テーブルを繰り返し使用する場合、将来の使用を容易にするために別名を付けることができます。...

js クロージャとガベージ コレクション メカニズムの例の詳細な説明

目次序文文章1. 終了1.1 クロージャとは何ですか? 1.2 クロージャの特性1.3 クロージャを...

MySQL でメタデータ ロックがブロックされている場所を確認する方法

MySQL でメタデータ ロックがブロックされている場所を確認する方法手順: 1. セッション1の実...

MySQLにインデックスを追加しても効果がないいくつかの状況について簡単に説明します。

インデックスを追加すると、クエリの効率が向上します。インデックスを追加するということは、ドキュメント...

MySQLからMariaDBへのスムーズな移行のための詳細な手順

1. MariaDB と MySQL の紹介1. MariaDB の紹介MariaDB は、MySQ...

よくある HTML タグの記述エラー

HTML Police がコードを調べて意味のないタグをすべて見つけ出すので、注意を払う必要がありま...

JavaScript の継承についてどれくらい知っていますか?

目次序文コンストラクタ、プロトタイプオブジェクト、インスタンスオブジェクトの関係プロトタイプチェーン...

Reactコンポーネント通信の詳細な説明

目次コンポーネント通信の概要コンテンツ3つの方法まとめコンポーネントコミュニケーション - 父から息...

pagodaを使用してionCube拡張機能をインストールする方法

1. まずパゴダを設置するインストール要件: Python バージョン: 2.6/2.7 (Pago...

HTML フォーム タグの使用方法を学ぶチュートリアル

HTML のフォームを使用して、ユーザーからさまざまな種類の入力情報を収集できます。フォームは、実際...

Linuxカーネルがプロセスアドレス空間に侵入し、プロセスメモリを変更する方法

プロセス アドレス空間の分離は、現代のオペレーティング システムの注目すべき機能です。これは、「古い...

docker compose サービスの起動順序を制御する方法

まとめDocker-compose は複数の Docker コンテナ サービスを簡単に組み合わせるこ...

VMware Workstation 14 Pro のインストールとアクティベーションのグラフィック チュートリアル

この記事では、VMware Workstation 14 Proのインストールとアクティベーションに...

MySQL で絵文字表現を挿入できない理由と解決策

失敗のシナリオMySQL データベースに絵文字表現を挿入するために JDBC を呼び出すと、例外ja...

MySQLインデックスを追加する3つの原則を簡単に理解する

1. インデックスの重要性インデックスは、列に特定の値を持つ行をすばやく見つけるために使用されます。...