docker mysql8.0安裝以及出現問題_caching_sha2_password


一、mysql8.0簡單說明

1、性能上:MySQL 8.0 的速度要比 MySQL 5.7 快 2 倍。MySQL 8.0 在以下方面帶來了更好的性能:讀/寫工作負載、IO 密集型工作負載、以及高競爭("hot spot"熱點競爭問題)工作負載。

 

2、NoSQL:MySQL 從 5.7 版本開始提供 NoSQL 存儲功能,目前在 8.0 版本中這部分功能也得到了更大的改進。該項功能消除了對獨立的 NoSQL 文檔數據庫的需求,而 MySQL 文檔存儲也為 schema-less 模式的 JSON 文檔提供了多文檔事務支持和完整的 ACID 合規性。

3. 窗口函數(Window Functions):從 MySQL 8.0 開始,新增了一個叫窗口函數的概念,它可以用來實現若干新的查詢方式。窗口函數與 SUM()、COUNT() 這種集合函數類似,但它不會將多行查詢結果合並為一行,而是將結果放回多行當中。即窗口函數不需要 GROUP BY。

4. 隱藏索引:在 MySQL 8.0 中,索引可以被“隱藏”和“顯示”。當對索引進行隱藏時,它不會被查詢優化器所使用。我們可以使用這個特性用於性能調試,例如我們先隱藏一個索引,然后觀察其對數據庫的影響。如果數據庫性能有所下降,說明這個索引是有用的,然后將其“恢復顯示”即可;如果數據庫性能看不出變化,說明這個索引是多余的,可以考慮刪掉。

5. 降序索引:MySQL 8.0 為索引提供按降序方式進行排序的支持,在這種索引中的值也會按降序的方式進行排序。

6. 通用表表達式(Common Table Expressions CTE):在復雜的查詢中使用嵌入式表時,使用 CTE 使得查詢語句更清晰。

7. UTF-8 編碼:從 MySQL 8 開始,使用 utf8mb4 作為 MySQL 的默認字符集。

8. JSON:MySQL 8 大幅改進了對 JSON 的支持,添加了基於路徑查詢參數從 JSON 字段中抽取數據的 JSON_EXTRACT() 函數,以及用於將數據分別組合到 JSON 數組和對象中的 JSON_ARRAYAGG() 和 JSON_OBJECTAGG() 聚合函數。

9. 可靠性:InnoDB 現在支持表 DDL 的原子性,也就是 InnoDB 表上的 DDL 也可以實現事務完整性,要么失敗回滾,要么成功提交,不至於出現 DDL 時部分成功的問題,此外還支持 crash-safe 特性,元數據存儲在單個事務數據字典中。

10. 高可用性(High Availability):InnoDB 集群為您的數據庫提供集成的原生 HA 解決方案。

11. 安全性:對 OpenSSL 的改進、新的默認身份驗證、SQL 角色、密碼強度、授權。

二、鏡像下載與容器啟動

1、下載官方鏡像

docker pull mysql:8.0
docker images 查看鏡像

2、啟動容器

docker run -itd 3306:3306 --name mysql-8.0 -e MYSQL_ROOT_PASSWORD=123456  mysql:8.0

3、出現問題

Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): image not found

  解決:

    1)進入容器:docker exec -it mysql-8.0 /bin/bash

    2)  依次執行

       mysql -u root -p123456
       use mysql;
       SELECT Host, User, plugin from user;
       ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
       ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
       FLUSH PRIVILEGES;

 

 

 

   

 

 

  


免責聲明!

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



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