記事ディレクトリ
序文
今日、コンピューターを使用していて、Navicat を使用して MySQL データベースを開こうとしたところ、ログインできないことがわかり、プロンプトが表示されました1045 Access denied for user ‘root’@‘localhost’ (using password: YES)
。インターネット上の答えはどれも「同じで、説明も単純明快ではありません。」今回はこの問題の原因と2つの解決方法を解説します!
一、原因:
1. データベースのパスワードが改ざんされました。
はい、それが理由です。しかし、多くの人はすぐに反論するでしょう。私は自分のコンピュータをうまく使ってきたのに、どうやって改ざんされたのでしょうか? ハッカーの手口は非常に強力です。データベースのパスワードを改ざんすることが主な目的ではありません。改ざん後にデータベースに侵入し、データベース ファイルをバックアップし、ローカル データベースを削除することが主な目的です。主な目的は、ビットコインを脅迫することです。
2. データベースの権限が変更されました。
この理由は、マシン上のアカウント権限の変更に大きく関係していますが、実際にはさまざまなシナリオがあるため、例は示しません。
2. 解決策
1. 方法: mysql 設定ファイル my.ini を編集します。
mysql のインストールディレクトリは、コンピュータによって異なる場合がありますので参照ディレクトリ:
①D:\Program Files\MySQL\MySQL Server 5.0\my.ini;
②C:\ProgramData\MySQL\MySQL Server 8.0\my.ini;
在[mysqld]这个条目下加入 skip-grant-tables 保存退出后重启mysql
PS:
8.0的版本不支持,亲测8.03
、次のエラーを避けるため:
mysql: [ERROR] unknown option ‘–skip-grant-tables’.
2. 手順は次のとおりです。
1. cmdを開き、「スタート」→「ファイル名を指定して実行」(ショートカットキーWin+R)をクリックします。
2. 停止: net stop mysql と入力します。
3. 開始: net start mysql と入力します
。 4. 権限のスキップ: Entermysqld --console --skip-grant-tables --shared-memory
MySQL サービスは Computer-Management-Service にもあります手动进行重启服务
。図に示すように:
このとき、cmdにmysql -u root -pと入力するとパスワードなしでログインできます。password:と表示されたらEnterキーを押して入力してください。ERROR 1045(28000)は表示されませんが、パスワードがないため多くの操作が制限されます。許可を与えます。
3. 概要: mysql8.0 バージョンでコマンドライン mysqld -skip-grant-tables がログインに失敗する問題の解決策
1. 管理者権限で cmd にログインします 管理者としてログインする方法がわからない場合は、「cmd」を検索し、検索結果を右クリックしてください。
2. コマンドラインに「net stop mysql;」と入力し、プロンプトを表示します。サービスが停止しています --> サービスが停止しました。その他のエラーがある場合は、Baidu までお問い合わせください。
这只是一个示例,请在服务中查看服务具体名称,比如我的就是mysql8.0.33。
服务不会打开的请 win+R --> services.msc --> 回车,找到mysql开头的服务名。
3、
由于mysqld –skip-grant-tables实测在mysql8.0中已失效,现使用mysqld --console --skip-grant-tables --shared-memory
4. 別の cmd を開き、mysql を使用してパスワードなしで直接ログインします。
ログインに成功したら、引き続き次のプロセスに従います。
4. 新しいパスワードを設定します
1. mysql データベースを入力します。
mysql> mysql を使用します。
2. root ユーザーの新しいパスワードを設定します。
mysql> update user setauthentication_string=password(“新密码”) where user=“root”;
クエリ OK、1 行が影響を受ける (0.01 秒)
一致した行: 1 変更された: 1 警告: 0
PS: 次のエラーが発生した場合:
mysql> エラー 1054 (42S22): 'フィールド リスト' に不明な列 'パスワード' があります
是因为mysql数据库下已经没有password这个字段了,按照我的步骤把password字段改成了authentication_string
。
3. データベースを更新します
mysql> フラッシュ権限;
クエリは OK、影響を受ける行は 0 (0.00 秒)
4. mysql を終了します。
mysql> 終了;
さよなら
変更を加えた後、保存して終了し、mysql サービスを再起動して、Navicat に再度接続します。