忘れられた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) skip_networkingはmysqlサーバ192.168.1.14のmy.cnfファイルで設定されているため、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 パスワードに対処する方法

<<:  JavaScript は setTimeout を使用してカウントダウン効果を実現します

>>:  Apache での ModSecurity のインストール、有効化、および構成

推薦する

Dockerfile を使用して SpringBoot プロジェクトをデプロイする方法

1. SpringBoootプロジェクトを作成し、jarパッケージにパッケージ化する2. Linux...

favicon.ico についていくつか注意点があります (ルートディレクトリに置くのがベストです)

任意のウェブページを開きます。例: http://www.baidu.com/ ブラウザのタブのヘッ...

MySQLデータベースを操作するためのコマンドラインツールmycliの簡単な紹介

GitHub にはあらゆる種類の魔法のツールがあります。今日、私はデータベースを操作するためのコマン...

nginx rewriteを使用してURLをリダイレクトする方法

最近仕事でnginxの設定を変更する必要が頻繁にあり、nginxでrewriteを使用する方法を学び...

WeChatアプレットがSMSログインを実装

目次1. インターフェース効果のプレビュー2.uViewのインストール3.uViewの設定3.1 m...

相対幅と絶対幅が競合する場合の HTML+CSS div ソリューション

相対幅と絶対幅が競合する場合のdivソリューション概要: 一般的に、絶対幅を使用する場合は px を...

Linux Crontab シェル スクリプトを使用して第 2 レベルのスケジュールされたタスクを実装する方法

1. シェルスクリプトcrontab.shを書く #!/bin/bash step=1 #ステップ間...

HTMLタグのtarget属性の使用法

1: <a> タグを使用してページにリンクする場合、target 属性の役割は誰もが知っ...

システムエラー 1067 を解決するための MySQL データベース グリーン バージョンのインストール チュートリアル

ソフトウェアのグリーンバージョンとインストールバージョンの違いは何ですか?通常、ファイルのインストー...

MySQL トランザクション分離レベルと MVCC の詳細な説明

目次トランザクション分離レベル同時トランザクション実行中に発生した問題SQL標準の4つの分離レベルM...

CSS で 3D ブック効果を実装するためのサンプル コード

さっそく、レンダリングを見てみましょうソースコードは以下のとおりです <!DOCTYPE ht...

nginx-naxsi ホワイトリストルールの詳細な説明

ホワイトリストルールの構文:基本ルール wl:ID [否定] [mz:[$URL:target_ur...

CentOS7 システムでスワップを増やす方法の例

序文スワップは、ディスク上にある「仮想メモリ」の一部である特殊なファイル (またはパーティション) ...

JS での filter() 配列フィルターの使用

目次1. はじめに2. 方法の紹介3. 使用例要約する1. はじめに配列フィルターは、フロントエンド...

React.js フレームワーク Redux 基本ケースの詳細な説明

react.js フレームワーク Redux https://github.com/reactjs/...