mysql5.7.27リモート接続で開けない

19724 ワード

一.アリクラウドはubuntu 18をインストールする.04,mysql5.7.27以降、mysqlにはデフォルトのパスワードがなく、リモート接続が開けません.
1.mysqlがIPとポートをリスニングしているかどうかを確認します.
netstat -anpt
root@iZuf63gpxv4kgzve2n8mkqZ:/# netstat -anpt
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      9589/apache2
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      417/systemd-resolve
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      777/sshd
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      14770/mysqld
tcp        0      0 172.19.190.107:51294    100.100.30.25:80        ESTABLISHED 847/AliYunDun
tcp        0      0 172.19.190.107:3306     180.161.84.139:51106    ESTABLISHED 14770/mysqld
tcp        0      0 172.19.190.107:22       180.161.84.139:64797    ESTABLISHED 841/sshd: root@pts/
root@iZuf63gpxv4kgzve2n8mkqZ:/#

リスニングされたアドレスが::3306または0.0.0.0:3106の場合、すべてのIPアドレスがリスニングされていることを示し、このリスニング状態は正常です.127.0.0.0:3106が表示されると、リスニングのローカル・アドレスが示されます.
2.mysqlを直接入力し、サーバからデータベースに入り、mysqlの下のuserテーブルを表示する
root@iZuf63gpxv4kgzve2n8mkqZ:/# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.27-0ubuntu0.18.04.1 (Ubuntu)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> use mysql;
mysql> select host,user,authentication_string,plugin from user;
+-----------+------------------+-------------------------------------------+-----------------------+
| host      | user             | authentication_string                     | plugin                |
+-----------+------------------+-------------------------------------------+-----------------------+
| localhost | root             |                                           | auth_socket           |
| localhost | mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password |
| localhost | mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password |
| localhost | debian-sys-maint | *CE1DA9A6E250643912DD52CF0FFCDD58416D426C | mysql_native_password |
+-----------+------------------+-------------------------------------------+-----------------------+
4 rows in set (0.00 sec)

userをrootに変更するhostは%で、すべてのサーバへのアクセスを許可することを示します.authentication_の設定stringの値はrootのパスワードです.pluginをmysql_に変更native_password.
mysql> update user set host='%' , authentication_string=PASSWORD('  ') , plugin='mysql_native_password' where user='root';

3.コンソールセキュリティグループのルールを確認し、3306ポートがオープンし、セキュリティグループの追加がオープンしていないかどうかを確認します.
4.mysqlサービスの再起動
root@iZuf63gpxv4kgzve2n8mkqZ:/# service mysql restart

二.パスワードを忘れた場合、mysqlのプロファイルが見つかります.
1.[mysqld]後にskip-grant-tablesを追加します(set password forでパスワードを設定するのは無効で、その後ログインしてパスワードを入力する必要はありません)
root@iZuf63gpxv4kgzve2n8mkqZ:/etc/mysql/mysql.conf.d# vi mysqld.cnf
[mysqld]
#
# * Basic Settings
#
skip-grant-tables
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr

2.mysqlを再起動し、mysqlに直接ログインし、パスワードを変更する
root@iZuf63gpxv4kgzve2n8mkqZ:/# mysql
mysql> use mysql;
mysql> UPDATE user SET authentication_string=PASSWORD('root') WHERE user='root';
mysql> exit

3.MySQLを再起動し、パスワードの変更に成功したかどうかを確認し、プロファイルのskip-grant-tablesをコメントします.