MySQL ed25519认证导致PHPMyAdmin连接失败的解决方案

花韻仙語
发布: 2025-09-19 14:06:27
原创
343人浏览过

MySQL ed25519认证导致PHPMyAdmin连接失败的解决方案

当PHPMyAdmin尝试连接使用ed25519认证插件的MySQL服务器时,常因客户端不支持该认证方法而报错。本教程提供了一个分步解决方案,通过修改MySQL服务器配置(my.cnf)将默认认证插件设置为mysql_native_password,并更新特定用户的认证方式,从而使PHPMyAdmin能够成功连接。

问题描述

在使用phpmyadmin管理数据库时,如果后端mysql服务器配置了ed25519作为用户认证插件,phpmyadmin可能会因为客户端不支持该认证方法而无法连接,并抛出类似如下的错误信息:

mysqli::real_connect(): The server requested authentication method unknown to the client [client_ed25519]
mysqli::real_connect(): (HY000/2054): The server requested authentication method unknown to the client
登录后复制

这表明PHPMyAdmin所依赖的MySQL客户端库无法识别或处理ed25519认证机制。为了解决这一兼容性问题,我们需要调整MySQL服务器的配置,并确保PHPMyAdmin连接的用户使用一种它支持的认证方式,例如mysql_native_password。

解决方案

解决此问题需要两个主要步骤:首先,修改MySQL服务器的配置文件以允许或默认使用mysql_native_password;其次,更新PHPMyAdmin所使用的数据库用户的认证方式。

步骤一:修改MySQL服务器配置文件 (my.cnf)

我们需要编辑MySQL服务器的配置文件,通常位于/etc/mysql/my.cnf或/etc/my.cnf。此修改将允许MySQL服务器提供mysql_native_password作为认证选项。

  1. 打开配置文件: 使用文本编辑器(如nano或vim)打开MySQL的配置文件。

    立即学习PHP免费学习笔记(深入)”;

    sudo nano /etc/mysql/my.cnf
    登录后复制
  2. 添加或修改配置项: 在文件的相应部分添加或修改以下配置。请特别注意[mysqld]部分下的default-authentication-plugin=mysql_native_password,这是解决认证问题的关键。同时,也建议配置字符集以避免潜在的编码问题。

    [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
    登录后复制
    • [client]和[mysql]部分设置了客户端连接时的默认字符集为utf8。
    • [mysqld]部分是服务器端的配置:
      • collation-server = utf8_unicode_ci 和 character-set-server = utf8 确保服务器的默认字符集和排序规则为utf8。
      • default-authentication-plugin=mysql_native_password 告诉MySQL服务器,当创建新用户时,默认使用mysql_native_password插件进行认证;或者当客户端未指定特定认证插件时,优先提供此插件。
  3. 保存并关闭文件。

    火山方舟
    火山方舟

    火山引擎一站式大模型服务平台,已接入满血版DeepSeek

    火山方舟 99
    查看详情 火山方舟
  4. 重启MySQL服务: 配置更改后,必须重启MySQL服务才能使新设置生效。

    sudo systemctl restart mysql
    # 或者对于某些系统
    sudo service mysql restart
    登录后复制

步骤二:更新数据库用户的认证方法

即使服务器配置了default-authentication-plugin,已存在的用户可能仍然使用ed25519。因此,我们需要明确地将PHPMyAdmin连接所使用的数据库用户的认证方式更改为mysql_native_password。

  1. 连接到MySQL服务器: 使用支持ed25519认证的客户端(例如,如果您的命令行MySQL客户端支持)或使用具有足够权限的root用户(如果root用户没有使用ed25519)连接到MySQL服务器。

    mysql -u root -p
    登录后复制
  2. 执行ALTER USER命令: 在MySQL命令行中,执行以下SQL语句来修改目标用户的认证插件和密码。请将'username'替换为PHPMyAdmin将使用的实际用户名,将'localhost'替换为用户的主机名(例如'%'表示任何主机),并将'password'替换为该用户的新密码。

    ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
    FLUSH PRIVILEGES;
    登录后复制
    • ALTER USER 'username'@'localhost' 指定了要修改的用户。
    • IDENTIFIED WITH mysql_native_password 明确设置该用户使用mysql_native_password认证插件。
    • BY 'password' 设置用户的新密码。
    • FLUSH PRIVILEGES; 刷新权限表,确保更改立即生效。
  3. 退出MySQL命令行。

注意事项与总结

  • 安全性考量: ed25519通常被认为是比mysql_native_password更安全的认证方法。将认证方式降级到mysql_native_password是为了解决PHPMyAdmin的兼容性问题。在条件允许的情况下,应考虑升级PHPMyAdmin及其依赖的客户端库,以支持更安全的认证方法,或使用其他支持ed25519的数据库管理工具
  • 用户权限: 执行ALTER USER命令需要CREATE USER或ALTER USER权限。通常,root用户拥有这些权限。
  • 配置路径: my.cnf的路径可能因Linux发行版和MySQL安装方式而异。常见的路径包括/etc/mysql/my.cnf、/etc/my.cnf、/var/lib/mysql/my.cnf或/usr/local/mysql/etc/my.cnf。
  • 验证连接: 完成上述步骤后,尝试通过PHPMyAdmin连接到MySQL服务器。如果一切配置正确,您应该能够成功登录并管理数据库。

通过以上两个步骤,您应该能够解决PHPMyAdmin因ed25519认证插件而无法连接MySQL服务器的问题,使PHPMyAdmin能够正常工作。请务必在生产环境中进行此类更改前进行充分测试。

以上就是MySQL ed25519认证导致PHPMyAdmin连接失败的解决方案的详细内容,更多请关注php中文网其它相关文章!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号