Win10 + AppServ + 另外自行安装的Mysql8.0遇到的问题

Win10 + AppServ 2.6.0 + 另外自行安装的Mysql8.0遇到的问题

  1. 配置PHPMyAdmin
    • 需要配置的内容有:连接路径,连接的Mysql服务及账户密码
    • phpMyAdmin配置文件路径:./config.inc.php (phpMyAdmin根目录下)
1
2
3
4
5
6
7
8
9
10
// config.inc.php
// 1. 配置php网站域名
$cfg['PmaAbsoluteUri'] = 'http://127.0.0.1/phpmyadmin';
// 2. 配置Mysql
$cfg['Servers'][$i]['host'] = 'localhost'; // MySQL的连接IP, 若需要远程连接即可配置此处
$cfg['Servers'][$i]['port'] = ''; // 端口号, 默认空白即为3306
// 3. 配置Mysql账号密码
$cfg['Servers'][$i]['auth_type'] = 'http';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '123456'; // 此处使用的是基于mysql_native_password加密规则的账号密码
  • 注意事项
    • ./config.sample.inc.php 不需要进行另外的配置
  1. Mysql #1251- Client does not support authentication protocol, consider upgrade mysql.
    • 问题原因:Mysql 8.0 以上后使用了新的加密规则——chaching_sha2_password. 而 AppServ 2.6.0 中自带的PHP版本为PHP6,因此PHPMyAdmin在登陆Mysql时,无论Mysql账户密码有无设置正确,PHPMyAdmin都无法登陆。
    • 延伸:此处是Mysql报错,因此若是其他程序登陆Mysql时遇到此问题,也可以用同样的方法。
    • 解决方法:
      1. 升级PHP到7.0以上的版本即可使PHP支持新的加密规则(由于本人才疏学浅,担心AppServ统一安装的PHP6若是更换版本会不会导致整个AppServ崩溃,于是选用了另一个方法)
      2. 由于MySql 8.0以后只是默认使用了新的加密规则,并没有直接不支持旧规则——mysql_native_password,因此我们在Mysql进程中进行设置mysql_native_password规则的密码,使之能兼容两个加密规则的登陆请求。下面是解决方案
1
2
3
4
5
6
7
8
9
# 运行环境为win10 1908
# 1. 在终端中登陆mysql
mysql -u username -p123456 # -u后面可以不加空格, -p后面必须不加空格(除非密码里含有一个空格)
# 2. 进入系统数据库
use mysql;
# 3. 添加加密规则 设置在mysql_native_password加密规则下的密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
# 4. 刷新权限
FLUSH PRIVIEGES;
  1. 新版Edge貌似仍然有BUG,无法通过AppServ进入phpMyAdmin,神秘
    • 解决办法:Chrome可以正常打开