Navicat (または他のデータベース表示ソフトウェア) が mysql に接続できない場合はどうすればよいですか?

一般に、mysql に接続できない状況がいくつかあります。

1. パスワードが間違っています。

2. Mysql は他の IP の接続を許可するように設定されていません。

ここで説明するのは、Linux 上の mysql には両方のケースが存在するということです。私たちの解決策は比較的単純で、最初のステップは設定を変更すること、2 番目のステップはパスワードを変更すること、3 番目のステップはすべての IP が接続できるようにアクセス許可を設定すること、4 番目のステップは設定を更新して保存することです。有効にするには、最後に 1 回確認します。とても単純なことではありませんか。始めましょう:

1. 構成ファイル my.cnf を変更します。このファイルはどこにあるので、サーバーのコマンド ラインに次の文を入力して my.cnf ファイルを開きます。

vi /etc/my.cnf

2. 開いたら、設定ファイル[mysqld]配下にskip-grant-tablesを追加します。シンプル: キーボードの Insert キーを押すと、カーソルが点滅し、入力できることを示します。入力した後、自由に Shift+: 2 つのキーを同時に押し、「!wq」と入力して終了します。

[mysqld]

skip-grant-tables

3. 次に、空のパスワードを持つ root ユーザーを使用して MySQL に接続し、root パスワードを変更します。次の文を入力します (次の文はパスワードを使用する必要はありません)。

mysql -u root

4. 次に、次の状態に入ります。

mysql> 

5. mysql の後に次のように入力します。use mysql;

次に、次のように入力します: update user set password=password('123456') where User='root';

次の 2 つの文を入力して、root ユーザーのパスワードを 123456 に変更します。

mysql> use mysql;
Database changed
mysql> update user set password=password('123456') where User='root';
Query OK, 3 rows affected (0.00 sec)

Rows matched: 3  Changed: 3  Warnings: 0

注: 一般に、上記 2 つの文は解決できますが、(mysql の新しいバージョンの問題のようです。パスワード フィールドのバージョンがなくなり、authentication_string に変更されました)。そこで、次の文を使用します。

ユーザーを更新するには、認証文字列=パスワード('123456') ここでユーザー='ルート';

6. 変更を有効にするために、変更後に忘れずに更新してください。入力:flush privileges;

mysql> update user set password=password('123456') where User='root';

ERROR 1046 (3D000): No database selected

mysql> use mysql;

Database changed

mysql> update user set password=password('123456') where User='root';

Query OK, 3 rows affected (0.00 sec)

Rows matched: 3  Changed: 3  Warnings: 0

mysql> flush privileges;

7. 最後に次のように入力します。exit退出

mysql> update user set password=password('123456') where User='root';

ERROR 1046 (3D000): No database selected

mysql> use mysql;

Database changed

mysql> update user set password=password('123456') where User='root';

Query OK, 3 rows affected (0.00 sec)

Rows matched: 3  Changed: 3  Warnings: 0

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

mysql> exit

8. 戻って、my.cnf で構成したばかりの文 (上記の手順 1 と 2) を削除し、手順 2で Skip-grant-tables を削除して保存することを忘れないでください。

9. エキサイティングな時間がやって来ました。新しいパスワードでログインできるようになります。急いでnavicatで確認してみます。リモート接続している場合は、以下のホスト IP アドレスを Linux サーバーの IP に変更してください。

10. 前回の変更は完了しましたが、すべてのデバイスがリモート データベースにアクセスできるようにしたいと考えています。

1. Linux 上の root アカウントとしてホストにログインします。

2. ホスト上の MySQL にログインします。

mysql -uroot -p123456

3. 最初に元の root@% ユーザーを削除します (以前にユーザーを作成していない場合は、この手順をスキップします)

ユーザー 'root'@'%' を削除します。

4 番目に、削除が成功したら、ユーザーを作成します。 root@%

'123456' によって mysql_native_password で識別されるユーザー 'root'@'%' を作成します。

5.その後、承認します

付与オプションを使用して *.* のすべてを 'root'@'%' に付与します。

6. 設定を更新する

フラッシュ権限。

7. 終了

出口;

おすすめ

転載: blog.csdn.net/anything14/article/details/127856256