基於docker的mysql使用

2021-10-12 21:20:09 字數 2503 閱讀 7836

搭建一些個人專案時,使用docker能夠非常方便的進行一些基礎服務的建立。

這是mysql的官方映象位址

冒號後面跟的是資料庫版本,我選擇的版本是mysql 5.7

#docker pull mysql:5.7
# docker images

repository tag image id created size

docker.io/mysql 5.7 a347a5928046 3 days ago 545 mb

啟動服務
$ docker run --name some-mysql -v /data/mysql/conf.d:/etc/mysql/conf.d -v /data/mysql/data:/var/lib/mysql -e mysql_root_password=123456  -p 3306:3306 -d  mysql:5.7
mysql_root_password指定資料庫密碼

-p 3306:3306暴露容器埠

-v /data/mysql/conf.d:/etc/mysql/conf.d將容器內的mysql配置檔案對映到主機上,方便資料庫的配置

-v /data/mysql/data:/var/lib/mysql將容器內的資料對映到主機上,之所以要把資料對映出來,是為了保護資料,之後會講

-d表示後台執行

執行成功後,資料庫執行起來,可以通過docker ps檢視

# docker ps

container id image command created status ports names

245fc2507040 mysql:5.7 "docker-entrypoint..." 6 minutes ago up 6 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp some-mysql

245fc2507040即為我們執行的資料庫例項

可以看到,在主機上建立的兩個目錄,data即為資料庫的資料

# tree -l 2 /data

/data

└── mysql

├── conf.d

└── data

資料保護

插入一些模擬資料

新建了乙個share庫,並建了一張表table_test,插入了一條hello資料

/data/mysql/data下執行ls命令,可以看見建立的資料庫:

刪除資料庫例項

現在我們模擬資料庫例項出了問題,把上面建立的例項刪除

docker stop 245f

docker rm 245f

建立新的例項,載入舊時資料

現在重新建立新的例項

$ docker run --name some-mysql -v /data/mysql/conf.d:/etc/mysql/conf.d -v /data/mysql/data:/var/lib/mysql -e mysql_root_password=123456  -p 3306:3306 -d  mysql:5.7
重新整理之後,發現資料依然存在。這樣即便某個docker例項掛掉了,只要資料還在,就能快速的恢復。也能非常方便的將資料遷移到更好的機器上。

tips: 資料庫的版本最好要一致

建立新表報 errorno 13

後來建立新錶時,會報乙個errorno 13的錯誤,經查,是資料庫許可權問題:

執行命令,修改許可權,即可解決這個問題chown polkitd:input -r share/

基於docker安裝MySQL

為了更好的管理,打算把mysql redis等服務放在虛擬機器中統一部署,這樣不會因為這些服務的問題影響到系統本身。前段時間正好在看docker相關的內容,打算在虛擬機器中通過docker來使用mysql等服務。這次先記錄安裝mysql的過程。yum y install docker 複製 dock...

基於Docker搭建mysql的PXC集群

docker官網 3.pxc映象 percona percona xtradb cluster 5.7.22 1.這裡博主特別說明一下,之前實踐pxc的時候直接docker pull 乙個最新版本的percona percona xtradb cluster 用於搭建pxc集群的最重要工具 結果搞了...

docker建立mysql容器,go語言使用

docker pull mysql 二 建立容器 docker run name mysql it p 3306 3306 e mysql root password emc123123 d mysql 在後台啟動mysql容器 name指定了容器的名稱,方便之後進入容器的命令列,mysql roo...