PDO连接mysql8.0报PDO::__construct(): Server sent charset (255) unknown to the client. Please, report to the developers错误

安装mysql8.0之后,尝试使用php连接mysql,总是报PDO::__construct(): Server sent charset (255) unknown to the client. Please, report to the developers错误,网上找了很多资料,然而都没有多大用处。

查找了mysql官方说明文档才知道原来M8.0已经已经把默认字符集升级成ut8mb4了,于是找到my.cnf文件,修改如下:

 1 [client]
  2 port = 3306
  3 socket = /tmp/mysql.sock
  4 default-character-set = utf8
  5
  6 [mysql]
  7 prompt="MySQL [\d]> "
  8 no-auto-rehash
  9 default-character-set = utf8
 10
 11 [mysqld]
 12 port = 3306
 13 socket = /tmp/mysql.sock
 14 default_authentication_plugin = mysql_native_password
 15 collation-server = utf8_unicode_ci
 16
 17 basedir = /usr/local/mysql
 18 datadir = /data/mysql
 19 pid-file = /data/mysql/mysql.pid
 20 user = mysql
 21 bind-address = 0.0.0.0
 22 server-id = 1
 23
 24 init-connect = ‘SET NAMES utf8‘
 25 character-set-server = utf8

然后使用PDO连接mysql

$db = array(
    ‘host‘ => ‘your host‘,         //设置服务器地址
    ‘port‘ => ‘3306‘,              //设端口
    ‘dbname‘ => ‘your db name‘,    //设置数据库名
    ‘username‘ => ‘your name‘,     //设置账号
    ‘password‘ => ‘your pwd‘,      //设置密码
    ‘charset‘ => ‘utf8‘,           //设置编码格式
    ‘dsn‘ => ‘mysql:host=your host;dbname=your db name;port=3306;charset=utf8‘,
);  

//连接
$options = array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,     //默认是PDO::ERRMODE_SILENT, 0, (忽略错误模式)
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,   // 默认是PDO::FETCH_BOTH, 4
);  

try{
    $pdo = new PDO($db[‘dsn‘], $db[‘username‘], $db[‘password‘], $options);
    var_dump($pdo);
}catch(PDOException $e){
    die(‘数据库连接失败:‘ . $e->getMessage());
}

结果如下:

object(PDO)#1 (0) { }

原文地址:https://www.cnblogs.com/soaring-sun/p/9172431.html

时间: 2024-10-09 07:10:39

PDO连接mysql8.0报PDO::__construct(): Server sent charset (255) unknown to the client. Please, report to the developers错误的相关文章

Navicat11.1连接Mysql8.0报错1251的解决办法

今天下载mysql-8.0.13,完成配置及正常启动后,Navicat11.1工具连接时总报错:1251,找到解决办法主是要mysql8的加密方式不同.具体解决办法如下:一.管理员权限打开CMD,输入mysql的root帐号及密码: D:\mysql8>mysql -u root -p输入root的密码回车二.更改mysql的方式:mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVE

Navicat连接mysql8.0报错 2059 1396

很多人写alter user 'Xue'@'%' identified with mysql_native_password by '123456'; 测试我本地不能用会报1396错误: 将%改为localhost可以连接成功: alter user 'Xue'@'localhost' identified with mysql_native_password by '123456'; FLUSH PRIVILEGES; 原文地址:https://www.cnblogs.com/1lwf/p/1

【问题记录】Navicat Premium连接mysql-8.0.17时出现2059 - Authentication plugin 'caching_sha2_password’....错误

问题描述: Navicat Premium连接mysql-8.0.17时出现2059 - Authentication plugin 'caching_sha2_password’ cannot be loaded:......错误 问题分析: mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password. 解决办法: 1.登陆数据库:mysql - u root -p; 2.切换数据库:use mys

java连接MySQL运行报错The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than

错误:The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than 原因:time zone 时区错误 解决方法: 1.使用root用户登录mysql,输入下面命令. show variables like '%time_zone%';SYSTEM为SQL默认美国时间,而我们中国要比他们迟8小时 2.SYSTEM为SQL默认美国时间,而我们中国要比他们迟8小时,因此将时区设置为当前系统时区即可,

PyCharm Community 2019.2 连接MySQL8.0 时区不同步的解决

Windows10中,PyCharm Community 2019.2  连接MySQL8.0 连接错误,IDE提示如下: Cannot connect to "MySQL8.0".The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via

远程连接MYSQL8.0服务器问题

title: 远程连接MYSQL8.0服务器问题 date: 2018-07-07 11:02:26 updated: tags: [MYSQL,坑] description: keywords: comments: image: --- 问题描述: 先前使用MYSQL5.1,远端访问MYSQL服务器没问题,遇到的问题也就是防火墙问题,修改出入站规则后轻松的解决了.但是MYSQL8.0就很坑了,按照网上的解决办法折腾了两个小时,最后解决,依然不明白哪里有问题,只能把操作复现,为以后使用留个记录.

解决MySQL8.0报错:Unknown system variable 'validate_password_policy'

一.问题描述 1.在安装MySQL8.0时,修改临时密码,因密码过于简单(如:123456),不符合MySQL密码规范,会触发一个报错信息: ERROR 1819 (HY000): Your password does not satisfy the current policy requirements. 二.遇到问题 1.解决办法调整MySQL密码验证规则,修改 policy 和 length 的值. 2.MySQL 5.7 进行如下设置,即可解决问题: mysql>  set global

IDEA连接mysql又报错!Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' prope

错误界面 IDEA连接mysql,地址,用户名,密码,数据库名,全都配置好了,点测试连接,咔!不成功! 界面是这样的, 翻译过来就是:服务器返回无效时区.进入“高级”选项卡,手动设置“serverTimezone”属性. 看起来是时区出了问题.时区怎么会出问题?坑真多.网上搜了各种解决办法,琳琅满目,复杂的简单的,总算是解决了! 解决方案我的问题出在两块,第一,设置mysql的时区.第二,mysql驱动的版本.详细步骤如下: 第一,设置mysql时区.1,我们先来检查下mysql时区. 配置完环

mysql 8.0 错误The server requested authentication method unknown to the client

mysql 安装了最新版本8.0.11后创建用户并授权后,授权的用户连接数据库提示 The server requested authentication method unknown to the client 查阅一些相关的资料后发现是由于新版本的mysql账号密码解锁机制不一致导致的 解决办法: 删除创建的用户和授权, 找到mysql配置文件并加入 default_authentication_plugin=mysql_native_password 变为原来的验证方式,然后从新创建用户并