導航:首頁 > 版本升級 > dockermysql配置文件

dockermysql配置文件

發布時間:2022-12-20 14:40:00

A. docker中MySQL的時區修改

docker中的mysql時區是使用了世界標准時間(UTC),把時區改成東八區方法:
1、啟動容器時設置: 添加如下配置:

2、進入docker配置:(重啟才能生效--永久生效)

3、臨時修改(從mysql上修改,重啟失效)

B. 解決docker 中mysql佔用內存過大問題

docker stats

首先安裝vim :    yum install vim -y

修改mysql配置 : vim /etc/my.cnf

[mysqld]

performance_schema_max_table_instances=400

table_definition_cache=400

table_open_cache=256

docker restart db-manage

C. docker 怎麼配置mysql

首先創建一個Dockerfile:
FROM docker/whalesay:latest
RUN apt-get -y update && apt-get install -y fortunes
CMD /usr/games/fortune -a | cowsay

然後使用docker build -t name .命令來構建一個image,在這里,FROM是源鏡像,如構建mysql可以使用FROM ubuntu:14.04來指定操作系統,RUN是跑的一些shell命令,我們能通過這些命令來在image持久化一些操作。CMD則是docker run時執行的命令。

D. docker mysql 配置文件在哪兒

首先要看你是自己裝的還是docker pull的成品,不過不管怎麼樣,mysql的配置文件名稱是不變的,最簡單的方法是使用在容器里使用find / -name +文件名稱 查找。

E. Docker MySQL修改配置文件不生效

官方文檔說只要volume映射就可以 https://hub.docker.com/_/mysql?tab=description

但本地配置文件雖然映射過去了,MySQL對於配置文件的許可權會檢查,導致不生效。錯誤信息為

具體方法見StackOverflow: https://stackoverflow.com/questions/37001272/fixing-world-writable-mysql-error-in-docker
解決思路是映射配置文件的source,並在啟動MySQL前將配置文件source復制到conf.d,這樣配置文件的許可權是滿足要求的。

我使用的容器版本內vim裝不上,無法容器內編輯配置文件。root也進不去,無法修改文件許可權。

F. Docker 安裝Mysql 配置 lower_case_table_names 不生效問題

重啟mysql

show global variables like '%lower_case%'

沒有生效! 且查了很多文章都是來回拷貝,無有用信息

將參數配置在docker run 中有效

注意/說明

1.對於已經在運行的mysql docker,沒有辦法, 備份資料庫 再docker run 一個

2.lower_case_table_names 在 docker run 參數中變成了:lower-case-table-names

3.可能類似的參數都需要這種方式才能成功

4.本次問題主要是為了運行開源代碼,並不是推薦使用mysql 的"忽略大小寫"

G. Docker映射配置文件到宿主機

    最近在做mysql中間件的docker,搞了mycat、mysql route都拉不起來容器,最後試試proxysql可以,proxysql官方發布了鏡像,感覺比較可靠。但是遇到一個小問題,筆者以前寫過一篇文章-Docker MySQL數據持久化,用數據卷掛載的方式將mysql的數據(映射數據目錄)持久化到宿主機。那麼配置文件也是有必要來映射的,注意就可以避免在容器內安裝編輯器。

    容器內有apt  和ap-get工具,安裝前要apt update(或者apt-get  update,較慢)更新軟體列表,然後apt install(或者apt-get  install),這樣會增大容器空間,是沒有必要的。筆者以前就是這樣操作的,但是比較麻煩,而且容器如果是內部網路的話來安裝的話就更加不方便了。筆者在映射數據目錄時使用-v /home/mysql/data:/var/lib/mysql 。但是使用同樣的分發,今天在映射proxysql的配置文件proxysql.cnf時遇到一個麻煩。

    先看看筆者掛載時遇到的問題: Are you trying to mount a directory onto a file。

    都是文件,那裡來的目錄呢。映射的意思是將可以將宿主機目錄掛載到容器中,那麼可能就是將/home/mycentos/proxysql.cnf設別為一個目錄了,因為容器內/etc/proxysql.cnf的是真實存在的文件。在/home/mycentos/目錄下ls -l查看一下。

    果然是目錄!輾轉反側找到原因是 docker啟動容器進行掛載的時候,如果路徑不存在,那麼docker會自動創建一個目錄。

    筆者的home/mycentos/目錄下沒有proxysql.cnf文件,掛載時docker就新建了一個proxysql.cnf的目錄,但是這個對於掛載數據目錄時是十分有用的,對於配置文件來說是不行的。於是筆者在目錄home/mycentos/下新建了一個proxysql.cnf文件,再次運行docker run成功(前面運行失敗的容器需要刪除,不然名稱沖突)。

docker run -itd --name proxysql -p 16032:6032 -p 16033:6033 -p 16070:6070 -v /home/mycentos/proxysql.cnf:/etc/proxysql.cnf proxysql/proxysql

    掛載後,容器內的/etc/proxysql.cnf配置文件是空的,不掛載的情況下是保持默認配置文件內容的,使用徐需要在編輯/home/mycentos/proxysql.cnf文件,然後進入容器後/etc/proxysql.cnf配置文件會跟隨改變的。但是配置文件為空,那麼就要從頭開始配置,這對於配置文件很多的話是不方便的,保留原來的配置配置文件,再在裡面修改會更加方便。這里筆者只能想到先運行一個容器,然後docker cp拷貝容器內的文件或者文件夾,在刪除這個容器,另外開一個配置文件映射的容器。

    映射配置文件避免在容器內進行apt操作,使得容器膨脹過大。比如你要安裝編輯器vi,首先要apt update更新,然後apt install ,相比於在容器外對其進行操作來說,更加麻煩沒必要。

H. 在Docker中安裝MySQL5.7

docker pull mysql:5.7

將全部的配置文件和關聯的文件夾統一放到 /opt/docker/mysql 中

創建 MySQL 配置文件文件夾
mkdir -p /opt/docker/mysql/conf.d

增加並修改配置文件 config-file.cnf
vim /opt/docker/mysql/conf.d/config-file.cnf

輸入如下內容:

創建 MySQL 數據文件夾
mkdir -p /opt/docker/mysql/var/lib/mysql

啟動,設置默認密碼 root ,TZ 設置容器的默認時區

Windows使用這條:

進入容器
docker exec -it mysql bash

進入 MySQL
mysql -uroot -p
輸入剛才我們設置的密碼 root

授權
mysql> GRANT ALL ON *.* TO 'root'@'%';

刷新許可權
mysql> flush privileges;

更新加密規則
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root' PASSword EXPIRE NEVER;

更新 root 密碼
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密碼';

刷新許可權
mysql> flush privileges;

退出容器
exit

啟動容器
docker start mysql

停止容器
docker stop mysql

重啟容器
docker restart mysql

進入容器
docker exec -it mysql bash

刪除容器
docker rm mysql

查看日誌
docker logs -f mysql

備份數據
docker exec mysql sh -c 'exec mysqlmp --all-databases -uroot -p 密碼' > /usr/local/all-databases.sql

恢復數據
docker exec -i mysql sh -c 'exec mysql -uroot -p 密碼' < /usr/local/all-databases.sql

I. Docker搭建與使用

docker 命令與 Docker 引擎通訊之間通過 UnixSocket ,但是能夠有許可權訪問 UnixSocket 的用戶只有 root 和 docker 用戶組的用戶才能夠進行訪問,所以我們需要建立一個 docker 用戶組,並且將需要訪問 docker 的用戶添加到這一個用戶組當中來。

這里使用的是 阿里雲提供的鏡像加速 ,登錄並且設置密碼之後在左側的 Docker Hub 鏡像站點 可以找到專屬加速器地址,復制下來。
然後分開執行以下命令:

之後重新載入配置,並且重啟 Docker 服務

這里推薦使用 Portainer 作為容器的 GUI 管理方案。官方地址: https://portainer.io/install.html
安裝命令:

訪問你的 IP:9000 即可進入容器管理頁面。

名字為鏡像庫中的鏡像名,若出現許可權問題報錯,前面加上sudo即可。

參數說明:
-p 3306:3306 :將容器的3306埠映射到主機的3306埠
-v /mydata/mysql/log:/var/log/mysql :將配置文件夾掛載到主機
-v /mydata/mysql/data:/var/lib/mysql :將日誌文件夾掛載到主機
-v /mydata/mysql/conf:/etc/mysql :將配置文件夾掛載到主機
-e MYSQL_ROOT_PASSWORD=root :初始化root用戶的密碼

驗證,查看docker下的所有進程:docker ps

docker安裝的mysql,相當於linux系統中單開了一個linux專門用來安裝mysql。
-p 3306:3306 :將容器的3306埠映射到主機(vagrant開啟的虛擬機)的3306埠。
日誌也是將經常變動數據掛載到外部linux文件夾下。

  上面已經說到,將mysql容器中的配置文件掛載到本機中,所以直接修改本機目錄下的配置文件即可。

防止掛載時 redis.conf找不到而在conf文件夾下再次創建名為redis.conf的文件夾,所以預先創建。

mysql之前是進入容器,現在我們直接進入客戶端進行操作redis

賊好用啊,還有提示。

docker restart redis 重啟redis容器後,發現之前的數據都丟失了,因為保存在內存中。所以我們需要配置持久化。
因為之前已經將容器配置文件掛載到本機目錄下,所以直接修改本機redis.conf即可。

重啟驗證,OK。

J. 解決Docker Mysql無法正確載入配置文件

使用-v映射宿主機下的文件作為mysql的配置文件時,可能出現mysql無法正確讀取文件中配置項的問題

該問題的主要原因為宿主機的文件許可權不對,由於docker的mysql鏡像啟動使用的是mysql這個用戶,而非root用戶,mysql用戶的id和gid都為999

通過修改宿主機文件的許可權可以解決該問題

閱讀全文

與dockermysql配置文件相關的資料

熱點內容
奇跡單機哪個文件記錄游戲賬號 瀏覽:332
地磅數據刪除後在哪裡找到 瀏覽:560
qq臨時文件夾 瀏覽:356
手機音樂裁剪合並軟體安卓版 瀏覽:123
90ss重甲升級後的屬性 瀏覽:315
哪個app支持佳明數據導入 瀏覽:529
支持外接u盤的文件瀏覽器 瀏覽:599
用word怎麼設置背景 瀏覽:309
網站上有會員會怎麼樣 瀏覽:482
win10dosboxdebug 瀏覽:65
打開智慧人社顯示配置文件不正確 瀏覽:107
數控編程u3是什麼意思 瀏覽:336
linux壓縮命令zip 瀏覽:326
怎麼做文件帶圖片上去 瀏覽:101
怎麼把erp的數據自動填到dms 瀏覽:853
怎麼將所有文件名更改 瀏覽:253
小米視頻非免費網路 瀏覽:604
發郵件文件名命名在哪 瀏覽:389
此電腦里的文件是哪個盤 瀏覽:320
homeconnect蘋果版本 瀏覽:220

友情鏈接