今天来水一篇,差点被这个远程登陆搞死了,因此记录下这个问题。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;
继续求流量我的博客