phpMyAdmin 无法在 ubuntu 20.04 和 php5.6 中工作

sur*_*153 6 php phpmyadmin 20.04

问题 - phpMyAdmin 的 HTTP 错误 500。
阿帕奇错误日志

[Wed Aug 19 02:52:11.063688 2020] [:error] [pid 94653] [client ::1:56202] PHP Warning:  Unsupported declare 'strict_types' in /usr/share/php/PhpMyAdmin/MoTranslator/Loader.php on line 23
[Wed Aug 19 02:52:11.063864 2020] [:error] [pid 94653] [client ::1:56202] PHP Parse error:  syntax error, unexpected '?' in /usr/share/php/PhpMyAdmin/MoTranslator/Loader.php on line 116
Run Code Online (Sandbox Code Playgroud)

当切换到 php7.4 时,phpMyAdmin 完全工作正常。此问题仅发生在php5.6上

设置 - Ubuntu 20.04、php5.6、Apache/2.4.41、phpMyAdmin-4.9.5deb2、mysql-8.0.21 php -m(输出)

[PHP Modules]
calendar
Core
ctype
curl
date
dom
ereg
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
imagick
json
libxml
mbstring
mcrypt
mhash
mysql
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
Phar
posix
readline
Reflection
session
shmop
SimpleXML
sockets
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zlib

[Zend Modules]
Zend OPcache
Run Code Online (Sandbox Code Playgroud)

我已经从发行版中删除了 phpmyadmin 并通过 zip 安装。我收到以下错误。

mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password]
mysqli_real_connect(): (HY000/2054): The server requested authentication method unknown to the client
Run Code Online (Sandbox Code Playgroud)

我发现问题在于身份验证方法并将“caching_sha2_password”更改为“mysql_native_password”,但我仍然收到上述错误。

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| user             | authentication_string                                                  | plugin                | host      |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| debian-sys-maint | $A$005$@0IC@&1C
                                    O:Xf94qofd9PGZM4cSAB0xP0ZsNz7GUaX8UuPiAYIj5M0 | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| phpmyadmin       | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19                              | mysql_native_password | localhost |
| root             | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19                              | mysql_native_password | localhost |
| surendhar        | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19                              | mysql_native_password | localhost |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
7 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

sur*_*153 3

问题 - ubuntu 20.04 使用 mysql v8 并使用 caching_sha2_password。php7.4 一切正常。但是当你使用php5.6时你会得到两个错误

  1. 服务器向客户端发送未知的字符集
  2. 服务器请求客户端未知的身份验证方法

要解决此问题,我们需要将以下代码添加到 /etc/mysql/my.cnf

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
collation-server = utf8_unicode_ci
character-set-server = utf8
default-authentication-plugin=mysql_native_password
Run Code Online (Sandbox Code Playgroud)

还需要在mysql中通过以下代码更新用户认证方式

alter user 'username'@'localhost' identified with mysql_native_password by 'password';
Run Code Online (Sandbox Code Playgroud)