今天來水一篇,差點被這個遠程登陸搞死了,因此記錄下這個問題。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;
繼續求流量我的博客