PHP 5.6連接MySQL 8.0版本遇到的坑


一、數據庫失敗Warning: mysqli_connect(): The server requested authentication method unknown to t...

 

 

1 <?php
2 
3 //查詢數據的查詢語句
4 //1.建立與數據庫服務器之間的連接
5 $connection = @mysqli_connect('127.0.0.1','root','123456','demo2');
6 
7 
8 var_dump($connection);

查詢資料之后發現:

查了一下發現是mysql8密碼機制換成了cha2導致的,解決辦法hin簡單,來一個SQL命令

1 mysql> ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourpassword';                                    

 

二、不要在MySQL中使用utf8,改用utf8mb4

  

1.為什么需要使用utf8mb4???

在mysql、MariaDB中:

    • MySQL的“utf8mb4”是真正的“UTF-8”。長度是4個字節。

    • MySQL的“utf8”是mysql自己的一種“專屬的編碼”,它的最大字符長度為 3 字節。只是“UTF-8”標准的一個子集。

      所以Emoji 表情(Emoji 是一種特殊的 Unicode 編碼,常見於 ios 和 android 手機上),和一些不常用的漢字,存儲就會報錯。

2、如何修改:

 

修改MySQL配置文件,修改mysql的客戶端默認連接字符集,服務端以及數據庫的默認字符集

只需要在MySQL配置文件中[mysqld]下加這兩行

1 character-set-server = utf8mb4
2  
3 collation-server = utf8mb4_unicode_ci

3、最后是重啟mysql

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM