溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

在DOCKER容器中運(yùn)行MySQL服務(wù)的操作方法

發(fā)布時(shí)間:2020-06-08 16:57:57 來源:網(wǎng)絡(luò) 閱讀:259 作者:三月 欄目:MySQL數(shù)據(jù)庫(kù)

下面講講關(guān)于在DOCKER容器中運(yùn)行MySQL服務(wù)的操作方法,文字的奧妙在于貼近主題相關(guān)。所以,閑話就不談了,我們直接看下文吧,相信看完在DOCKER容器中運(yùn)行MySQL服務(wù)的操作方法這篇文章你一定會(huì)有所受益。

        虛擬機(jī)使用了VBOX,VBOX配置了2個(gè)網(wǎng)絡(luò),一個(gè)是HOST ONLY,一個(gè)是NAT,這樣保證了虛擬機(jī)可以同時(shí)進(jìn)行本地和外網(wǎng)連接。

操作系統(tǒng)CentOS7.5,docker的安裝比較簡(jiǎn)單,參考網(wǎng)上說明即可:


1. 先卸載系統(tǒng)中版本比較低的docker

# yum remove docker \

                  docker-client \

                  docker-client-latest \

                  docker-common \

                  docker-latest \

                  docker-latest-logrotate \

                  docker-logrotate \

                  docker-selinux \

                  docker-engine-selinux \

                  docker-engine


2.安裝必要的系統(tǒng)工具

# yum install -y yum-utils device-mapper-persistent-data lvm2


3.添加阿里云的源 (有些文檔中的地址使用了http,導(dǎo)致添加源失敗,需要注意,目前源地址使用的是https協(xié)議)

# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo


4.更新yum緩存

# yum makecache fast


5.安裝docker-ce版本

# yum -y install docker-ce


6.配置docker服務(wù)自啟動(dòng)并啟動(dòng)docker服務(wù)

# systemctl enable docker

# systemctl start docker


7.至此docker配置完成,執(zhí)行docker info,查看下docker的信息

# docker info

Containers: 3

 Running: 0

 Paused: 0

 Stopped: 3

Images: 3

Server Version: 18.06.1-ce

Storage Driver: overlay2


8.下載CENTOS最新的docker image

# docker search centos

# docker pull centos

[root@mysqldb ~]# docker images

REPOSITORY      TAG                IMAGE ID               CREATED             SIZE

centos                   latest              75835a67d134        4 weeks ago         200MB

       下面開始在物理主機(jī)上面配置必要的網(wǎng)絡(luò)和目錄信息。


1. 宿主機(jī)創(chuàng)建mysql目錄

[root@mysqldb mysql]# cd /mysql/skydb/

[root@mysqldb skydb]# mkdir skydb1

[root@mysqldb skydb]# cd skydb1/

[root@mysqldb skydb1]# mkdir {data,log,binlog,tmp,script,etc}


2. 宿主機(jī)創(chuàng)建容器專用網(wǎng)絡(luò) (只需要?jiǎng)?chuàng)建一次)

創(chuàng)建網(wǎng)絡(luò)是為了方便在docker容器中使用固定的IP地址。


[root@mysqldb ~]# docker network create --subnet=172.168.56.0/16 skynet

[root@mysqldb ~]# docker network ls


3. 啟動(dòng)centos docker容器

[root@mysqldb ~]# 

docker run -id --name skydb1 \

-v /mysql/mysql/mysql-5.7.24:/opt/mysql5.7 \

-v /mysql/skydb/skydb1:/mysqldata \

-v /etc/hosts:/etc/hosts \

--net skynet --ip 172.168.56.10 --hostname skydb1 centos 


--name skydb1 指定docker容器的名稱

-v /etc/hosts:/etc/hosts 指定本地文件與docker容器內(nèi)部的文件映射

--net skynet 指定docker的虛擬網(wǎng)絡(luò)

--ip 172.168.56.10 固定docker容器的ip地址

--hostname skydb1 指定docker容器的主機(jī)名


MySQL使用的二進(jìn)制安裝包,解壓到宿主機(jī)上面,通過文件映射的方式映射給docker容器。


下面是5.7和8.0的安裝介質(zhì)下載地址:

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz


wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz


4. 連接容器 (通過容器名稱和ID進(jìn)行連接)

[root@mysqldb ~]# docker exec -it skydb1 bash -c ". /root/.bash_profile && /bin/bash"


為了使登錄的信息比較醒目,在 /root/.bash_profile 指定 banner `hostname`,方便識(shí)別docker容器主機(jī)。


5. 創(chuàng)建文件鏈接

[root@skydb1 ~]# cd /usr/local/

[root@skydb1 local]# ln -s /opt/mysql5.7/ ./mysql

[root@skydb1 local]# ln -s /opt/mysql5.7/bin/mysql /usr/local/bin/mysql

[root@skydb1 script]# ln -s /mysqldata/script/my.cnf /etc/my.cnf


6. 通過ldd,檢查mysqld程序是否包含了所有動(dòng)態(tài)庫(kù)

[root@skydb1 ~]# ldd /usr/local/mysql/bin/mysqld


7. docker容器,安裝必要軟件包

[root@skydb1 ~]# yum install libaio

[root@skydb1 ~]# yum install numactl

[root@skydb1 ~]# yum install iproute

[root@skydb1 ~]# yum install net-tools


8. 創(chuàng)建安裝用戶并修改目錄權(quán)限

[root@skydb1 ~]# groupadd mysql

[root@skydb1 ~]# useradd -g mysql -d /home/mysql -s /sbin/nologin -MN mysql

[root@skydb1 local]# cd /mysqldata/

[root@skydb1 mysqldata]# chown -R mysql:mysql ./


9. docker容器中初始化mysql

[root@skydb1 ~]# /usr/local/mysql/bin/mysqld --initialize

[root@skydb1 ~]# /usr/local/mysql/bin/mysqld  &


10. 查看默認(rèn)的root口令

[root@skydb1 ~]# cd /mysqldata/log

[root@skydb1 log]# cat skydb1.err | grep pass

2018-11-06T05:27:43.361600-00:00 1 [Note] A temporary password is generated for root@localhost: /dJt?sq62OlF


11. 修改root用戶口令

[root@skydb1 ~]# /usr/local/mysql/bin/mysql -S /mysqldata/tmp/skydb1.sock -uroot -p

mysql> set global super_read_only=0; 

mysql> set global read_only=0;

mysql> alter user user() identified by 'oracle';

mysql> flush privileges;


12. 配置本地自動(dòng)登錄

[root@skydb1 script]# cat my.cnf 

[client]

port = 3306

socket = /mysqldata/tmp/skydb1.sock

user = root

password = oracle

[root@skydb1 script]# mysql


13. 授權(quán)root用戶遠(yuǎn)程連接

root@localhost [mysql]>GRANT ALL PRIVILEGES ON *.* TO root@"172.168.56.%" IDENTIFIED BY "oracle";

root@localhost [mysql]>GRANT ALL PRIVILEGES ON *.* TO root@"172.168.0.1" IDENTIFIED BY "oracle";

root@localhost [(mysql)]>flush privileges;


[root@mysqldb ~]# mysql -uroot -h 172.168.56.10 -p

[root@mysqldb ~]# mycli -u root -h 172.168.56.10


14. docker容器啟停及登錄

[root@mysqldb ~]# docker ps

[root@mysqldb ~]# docker stop skydb1

[root@mysqldb ~]# docker start skydb1

[root@mysqldb ~]# docker exec -it skydb1 bash -c ". /root/.bash_profile && /bin/bash"

對(duì)于以上在DOCKER容器中運(yùn)行MySQL服務(wù)的操作方法相關(guān)內(nèi)容,大家還有什么不明白的地方嗎?或者想要了解更多相關(guān),可以繼續(xù)關(guān)注我們的行業(yè)資訊板塊。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI