docker-compose啟動mysql並配置遠程訪問


配置文件

```

version: "3.8"
services:
  mysql_docker_server:
    image: mysql
    restart: always
    container_name: mysql_server
    ports:
      - 3307:3306
    command:
      #這行代碼解決無法訪問的問題
      --default-authentication-plugin=mysql_native_password
      # --character-set-server=utf8mb4
      # --collation-server=utf8mb4_general_ci
      # --explicit_defaults_for_timestamp=true
      # --lower_case_table_names=1
    volumes:
      - d:/code/docker_project/mysqlData/data/:/var/lib/mysql/
      - d:/code/docker_project/mysqlData/conf/:/etc/mysql/conf.d/
      - d:/code/docker_project/mysqlData/init/:/docker-entrypoint-initdb.d/
      # 數據庫還原目錄 可將需要還原的sql文件放在這里
      # - d:/code/docker_project/mysqlData/mysql/source:/docker-entrypoint-initdb.d
    environment:
      - MYSQL_ROOT_PASSWORD=kemi1016
      # - MYSQL_USER=kemi
      # - MYSQL_PASSWORD=Kemi1016
      # - MYSQL_DATABASE=db
      - TZ=Asia/Shanghai

```

## 解決問題

docker compose  mysql sha256_password

參考文章

[docker-compose啟動mysql並配置遠程訪問 - 簡書](https://www.jianshu.com/p/eeb96feac9ec)

參考文章內容

version: "3.7"

services:

  mysql:

    container_name: mysql

    image: mysql:latest                            #從私有倉庫拉鏡像

    restart: always     

    command: --default-authentication-plugin=mysql_native_password #這行代碼解決無法訪問的問題

    volumes:

      - /data/mysql/data/:/var/lib/mysql/                            #映射mysql的數據目錄到宿主機,保存數據

      - /data/mysql/conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf   #把mysql的配置文件映射到容器的相應目錄

    ports:

            - "3306:3306"

    environment:

      - MYSQL_ROOT_PASSWORD=123456

      - LANG=C.UTF-8

啟動mysql: sudo docker-compose -f mysql.yml up -d  沒有報錯即啟動成功

 

 

查看運行的docker容器:sudo docker ps

 

 

已Bash進入容器:sudo docker exec -it 7f /bin/bash

mysql -u root -p

 

mysql> use mysql;

mysql> grant all privileges on *.* to 'root'@'%';

mysql> flush privileges;

刷新權限遠程還是無法訪問,Navicat包2509authentication plugin caching_sha2錯誤。查詢資料發現,mysql是8.0版本的,mysql 8.0 默認使用 caching_sha2_password 身份驗證機制 —— 從原來的 mysql_native_password 更改為 caching_sha2_password

mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

Query OK, 0 rows affected (0.02 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.02 sec)

Navicat再次連接OK。

 

 

Mysql遠程連接報錯:authentication plugin caching_sha2 mysql 8.0 默認使用 caching_sha2_password 身份驗證機制 —— 從原來的 mysql_native_password 更改為 caching_sha2_password。 方法:修改用戶的密碼和加密方式

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密碼';

要同賦予用戶權限時相同。 若是localhost就同上。%也是如此

mysql8.*的新特性 caching_sha2_password 密碼加密方式

以前版本的mysql密碼加密使用的是 mysql_native_password

新添加的用戶密碼默認使用的 caching_sha2_password

如果在以前mysql基礎上升級的 就得用戶使用的密碼加密使用的是 mysql_native_password

如果使用以前的密碼加密方式,就修改文件 /etc/my.cnf

數據庫時區問題:

鏈接數據庫時serverTimezone=UTC這個參數出的問題

只要改成serverTimezone=Asia/Shanghai就OK了!

參考原文:https://blog.csdn.net/weixin_42459563/article/details/80924634


免責聲明!

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



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