【问题标题】:"Server sent charset (255) unknown to the client" Set MySQL charset to utf8 w/o /etc/my.cnf? [duplicate]“服务器向客户端发送未知的字符集(255)”将 MySQL 字符集设置为 utf8 w/o /etc/my.cnf? [复制]
【发布时间】:2018-12-05 16:19:12
【问题描述】:

我正在尝试从 phpMyAdmin 连接到 MySQL 数据库。但是当我输入用户名和密码时,我收到两条错误消息:

mysqli_real_connect(): Server sent charset (255) unknown to the client. Please, report to the developers

mysqli_real_connect(): (HY000/2054): Server sent charset unknown to the client. Please, report to the developers

我正在使用 MySQL 8.0.11 和 phpMyAdmin 4.8.2

我找到了类似问题的答案: PDO::__construct(): Server sent charset (255) unknown to the client. Please, report to the developers

这是重要的部分:“MySQL 8 将默认字符集更改为 utfmb4。但有些客户端不知道这个字符集。因此,当服务器向客户端报告其默认字符集时,客户端不知道是什么服务器意味着,它会抛出这个错误。”

给出的解决方案是通过在 /etc/my.cnf 中添加几行并将默认字符集更改回 utf8 并重新启动 mysqld。

我的问题是 /etc/my.cnf 在我的文件中的任何地方都不存在,所以我无法在那里更改默认字符集。我查看的所有其他地方最终都引用了 /my.cnf 或引用了旧版本。

那么,对于 MySQL 8,如何在没有 /etc/my.cnf 的情况下将默认字符集更改为 utf8?

【问题讨论】:

  • 如果它不存在,就制作它。
  • 当您说“我的文件中不存在任何位置”时,您指的是您的 Web 文件,还是您对服务器具有 root 访问权限?
  • 向前而不是向后。努力升级客户端。
  • @Sammitch 制作了 /etc/my.cnf 文件并且它工作了。在 mySQL gui 中,将其设置为配置选项卡下的配置文件。
  • 如果你更新你的 PHP 版本应该可以解决问题

标签: php mysql pdo utf-8


【解决方案1】:

为了澄清答案:

  1. 在您的 /etc/ 文件夹中创建一个名为 my.cnf 的文件。

  2. 现在将以下文本添加到/etc/my.cnf

    [客户]
    默认字符集=utf8

    [mysql]
    默认字符集=utf8

    [mysqld]
    排序服务器 = utf8_unicode_ci
    字符集服务器 = utf8
    default_authentication_plugin = mysql_native_password

最后,重启mysql,一切都应该好了!如果仍有问题,请尝试将 PHP 升级到更高版本。

【讨论】:

    【解决方案2】:

    我也有这个问题。问题是因为我运行的是旧版本的 PHP (5.6),一旦升级到 PHP 7.4,错误就消失了。

    这对我来说是在 Amazon Linux 2 上,升级命令是:

    amazon-linux-extras install php7.4
    

    我发现许多版本的 RedHat/CentOS 默认都带有 PHP 5.6,而我能够将它们升级到最新 PHP 的最简单方法是在这里使用 remi 的 repo (https://rpms.remirepo.net/)

    【讨论】:

    • 版本升级成功!
    【解决方案3】:

    重新安装MySQL 8,安装时选择Authentication的Second Method“Use Legacy Authentication Method(Retain MySQL 5.x compatible)”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-25
      • 2017-06-25
      相关资源
      最近更新 更多