1. 程式人生 > 其它 >docker-compose啟動mysql並配置遠端訪問

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