MySQL用戶遠程登陸問題

今天來水一篇,差點被這個遠程登陸搞死了,因此記錄下這個問題。mysql

先使用status命令查看一下MySQL版本,這裏能夠能夠看到我用的是是8.0.12版本。sql

mysql> status
--------------
mysql  Ver 8.0.12 for Linux on x86_64 (MySQL Community Server - GPL)

Connection id:          14
Current database:       test
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         8.0.12 MySQL Community Server - GPL
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    utf8mb4
Db     characterset:    utf8mb4
Client characterset:    latin1
Conn.  characterset:    latin1
UNIX socket:            /var/run/mysqld/mysqld.sock
Uptime:                 25 min 14 sec

Threads: 3  Questions: 201  Slow queries: 0  Opens: 333  Flush tables: 2  Open tables: 309  Queries per second avg: 0.132
--------------

若是什麼都不設置,那麼用PHP鏈接時會報錯:數據庫

Warning: mysqli::__construct(): The server requested authentication method unknown to the client [caching_sha2_password]

Warning: mysqli::__construct(): (HY000/2054): The server requested authentication method unknown to the client

caching_sha2_password報錯是由於加密規則的緣由。socket

能夠在mysql數據庫下查看相關信息。加密

mysql> use mysql;
mysql> select host, user, authentication_string, plugin from user;

解決方法code

首先修改遠程用戶加密規則server

mysql> ALTER USER 'root'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
Query OK, 0 rows affected (0.03 sec)

而後更新密碼get

mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
Query OK, 0 rows affected (0.08 sec)

刷新權限博客

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

搞定!string

受權全部權限遠程登陸

GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION;
8.0版本的受權命令

刷新權限

mysql> flush privileges;

繼續求流量我的博客

相關文章
相關標籤/搜索