知数堂推了两期关于MySQL 8.0的公开课 https://zst.ke.qq.com/ ,很多程序员,也按耐不住了,要升级到MySQL 8.0. PHP是世界上最好的语言。 骚年肯定也不会落后。但升级到MySQL 8.0后,马上面监到两个问题。
- PHP连接上MySQL。 同样的程序 MySQL 5.7没事,换了MySQL8.0 报: Access Denied for user ‘XXXX’
- Server sent charset (255) unknown to the client. Please, report to the developers in … on line X . 不识别字符集
人生艰难,再次打击我们PHP程序员。 好吧! MySQL 8.0 发生重大变革了:
1. 认证方法更新为了: caching_sha2_password 2. 字符集改成了默认: utf8mb4
据说字符集的已经在php-7.20 支持了。 不过升级PHP也不容易。 我们先几个兼容支持方法吧。
关于认证和字符集兼容:
1. 配置文件[mysqld]部分
[mysqld] default_authentication_plugin=mysql_native_password character_set_server =utf8
上面这两个配置,把MySQL 8.0 认证更改成老的方法,字符集更改成原来的:utf8.
2. 创建基于native_password的帐号
CREATE USER 'wubx'@'%' IDENTIFIED WITH mysql_native_password BY 'zstzst'; GRANT ALL PRIVILEGES ON *.* TO 'wubx'@'%';
3. 创建DB
CREATE DATABASE IF NOT EXISTS `zst` COLLATE 'utf8_general_ci' ; show create database zst;
确认字符集是utf8.
4. 使用我们新创建的帐号连接zst,应该万事Ok。 如果遇到其它问题,欢入裙交流
作者:吴炳锡 来源:http://wubx.net/ 联系方式: wubingxi#163.com 转载请注明作/译者和出处,并且不能用于商业用途,违者必究.