PHP 5.6搭配最新phpMyAdmin无法登录MySQL服务器求助
嘿,这个问题我之前帮朋友排查过,根源就是PHP 5.6和新版phpMyAdmin的字符集兼容冲突——毕竟PHP 5.6的mysqli扩展对MySQL 8.0+推出的新字符集支持有限,而新版phpMyAdmin默认会适配这些新字符集,直接导致了登录失败。
先拆解下你碰到的报错:mysqli_real_connect(): Server sent charset (255) unknown to the client,这里的255对应的是utf8mb4_0900_ai_ci这类MySQL新字符集,PHP 5.6压根识别不了,所以才会连不上服务器,哪怕开了无密码登录也没用。
下面是几个亲测有效的解决办法,按优先级来:
方法1:修改MySQL全局字符集配置(最彻底)
找到你的MySQL配置文件(通常是my.cnf或my.ini,集成环境比如XAMPP/WAMP的话,一般在mysql\bin目录下),在[mysqld]段落里添加或修改以下内容:
[mysqld] character-set-server = utf8 collation-server = utf8_general_ci
保存后重启MySQL服务,这样MySQL就会用PHP 5.6能识别的utf8字符集,而非新的utf8mb4变种。
方法2:在phpMyAdmin配置里指定兼容字符集
如果不想改动MySQL全局配置,可以修改phpMyAdmin的config.inc.php文件,找到服务器配置的段落,添加字符集指定:
$cfg['Servers'][$i]['charset'] = 'utf8'; $cfg['Servers'][$i]['collation'] = 'utf8_general_ci';
同时确保你的无密码登录配置是正确的(别漏了这行):
$cfg['Servers'][$i]['AllowNoPassword'] = true;
保存后刷新phpMyAdmin页面重试即可。
方法3:降级phpMyAdmin到兼容PHP 5.6的版本
新版phpMyAdmin(比如5.x及以上)已经彻底放弃对PHP 5.6的支持了,如果你不想折腾配置,可以直接下载phpMyAdmin 4.9.x系列的版本——这是最后支持PHP 5.6的分支,替换现有phpMyAdmin文件后,登录问题应该直接消失。
额外小提醒
- 重启MySQL后,最好登录MySQL命令行执行
SHOW VARIABLES LIKE 'character_set_server';,确认输出值是utf8,确保配置生效。 - 集成环境的配置文件位置可能藏得比较深,比如WAMP的
my.ini可能在wamp64\bin\mysql\mysqlX.X.X目录下,别找错了。
内容的提问来源于stack exchange,提问作者progy85

