Docker部署mysql5.7

部署環境準備

百度雲服務器 centos 7.2
inux instance-5bf3tef2 3.10.0-1062.4.1.el7.x86_64 #1 SMP Fri Oct 18 17:15:30 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
Docker 版本
Docker version 19.03.5, build 633a0ea
Mysql 5.7

環境安裝
1. 拉取mysql 鏡像
docker search mysql
docker pull centos/mysql-57-centos7

在這裏插入圖片描述
查看鏡像

docker iamges

在這裏插入圖片描述

2. 創建掛載目錄
mkdir -p /root/mysql57/conf  /root/mysql57/data /root/mysql57/logs

conf目錄用於掛載mysql容器的配置目錄
data目錄掛載mysql數據目錄
logs目錄掛載mysql日誌目錄

3. 複製配置文件

先運行一個沒有掛載目錄的mysql容器

docker run -p 3307:3306 --name mysql57  -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

將該容器內的mysql配置目錄copy到conf下

docker cp mysql57:/etc/mysql /root/mysql57/conf/
4. 重新運行容器,並加上掛載的目錄
docker stop mysql57
docker rm mysql57
docker run -p 3306:3306 --name mysql57 --privileged=true -v /root/mysql57/conf/mysql:/etc/mysql -v /root/mysql57/data:/var/lib/mysql -v /root/mysql57/logs:/logs -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 --lower_case_table_names=1

-p 端口映射,宿主機端口:容器端口
–name 容器名稱
–privileged 容器內root用戶與宿主機root用戶享用相同權限
-v 數據掛載 宿主機目錄:容器目錄
-e 添加參數 MYSQL_ROOT_PASSWORD 設定mysql root密碼
-d 後臺運行容器

5. 進入容器配置mysql
docker exec -it mysql57 bash

進入容器後,

mysql -uroot -p

執行, root用戶遠程登陸授權命令

grant all privileges on *.* to root@'%' identified by '123456';
flush privileges;

這樣就可以通過主機地址訪問mysql了
配置字符集:
在/root/mysql57/conf/mysql/conf.d下新建my.cnf文件(文件名不重要,重要得是以.cnf爲後綴)

vim my.cnf
添加內容如下
[mysqld]
character-set-server = utf8
collation-server = utf8_general_ci
[mysql]
default-character-set  = utf8
[client]
default-character-set  = utf8

重啓mysql

docker restart mysql57

進入容器內,登陸mysql,用以下命令查看mysql的字符集是否修改

SHOW VARIABLES LIKE 'character%';

爲什麼要把配置文件放在/root/mysql57/conf/mysql/conf.d下呢?
我試過直接修改mysql下目錄下的my.cnf,但是沒起作用,於是就把它放在了/root/mysql57/conf/mysql/conf.d下,當然取其他名字也是可以的。原理就在於mysql 5.7.2下的conf.d中的cnf文件會覆蓋默認配置

至此,docker 安裝mysql完成!

發佈了40 篇原創文章 · 獲贊 13 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章