如何使用?docker?搭建一個?mysql?服務(wù)
前言
在日常開發(fā)中,數(shù)據(jù)庫 mysql 是必不可少的,但是由于其繁瑣的配置,安裝 mysql 時總是不太順利,還可能會踩坑。所以本文的目的,可以讓你快速搭建一個 mysql 服務(wù)。
下面跟著以下教程,可以讓你快速、流暢的安裝 mysql 數(shù)據(jù)庫,流程可分成 4 步。
1. 編寫 docker-compose.yml 文件
創(chuàng)建 docker-compose.yml 文件,文件內(nèi)容如下:
version: '3.1' services: mysql: image: mysql:8 restart: always # https://stackoverflow.com/a/49021165/7756877,使用默認(rèn)的授權(quán)插件, # mysql 8 默認(rèn)使用 caching_sha2_password 作為授權(quán)插件,并非 mysql_native_password, # 然而 mysql 驅(qū)動還不支持 caching_sha2_password,為了往后兼容所以要加這一行。 command: --default-authentication-plugin=mysql_native_password ports: - "7306:3306" volumes: - "./table.sql:/docker-entrypoint-initdb.d/01-init-table.sql" environment: MYSQL_ROOT_PASSWORD: mysql # root 用戶的密碼 MYSQL_DATABASE: lingmo # 默認(rèn)創(chuàng)建 lingmo 數(shù)據(jù)庫 MYSQL_USER: kele # 新建一個用戶 MYSQL_PASSWORD: baishi2020 # 新建用戶的密碼
Compose 是用于定義和運行多容器 Docker 應(yīng)用程序的工具。通過 Compose,您可以使用 YML 文件來配置應(yīng)用程序需要的所有服務(wù)。然后,使用一個命令,就可以從 YML 文件配置中創(chuàng)建并啟動所有服務(wù)。
docker-compose 的 services 屬性中定義的一個 mysql
- image 表明鏡像版本是 mysql:8
- command 通過參數(shù)
--default-authentication-plugin
定義了一個默認(rèn)插件mysql_native_password
, 原因是: mysql 8 默認(rèn)使用 caching_sha2_password 作為授權(quán)插件,并非 mysql_native_password,然而 mysql 驅(qū)動還不支持 caching_sha2_password,為了往后兼容所以要加這一行。 - port 表明使用本地的 7306 端口映射容器中 mysql 的 3306 端口。
- volumes 表明將 ./table.sql 文件掛載到容器的 docker-entrypoint-initdb.d/01-init-table.sql 文件中,而存在容器中 docker-entrypoint-initdb.d/ 目錄中的文件,在 mysql 第一次啟動時會執(zhí)行,之后重啟容器不會重復(fù)執(zhí)行。
- environment
- MYSQL_ROOT_PASSWORD: 創(chuàng)建 mysql 服務(wù)時會新建一個 root 用戶,這個屬性定義的是 root 用戶密碼。
- MYSQL_DATABASE: 默認(rèn)創(chuàng)建一個 lingmo 的數(shù)據(jù)庫。
- MYSQL_USER: 再次創(chuàng)建一個用戶,用戶名是
kele。
- MYSQL_PASSWORD: 表明 kele 用戶的密碼,這里是
baishi2020
。
2. 定義測試數(shù)據(jù)
新建測試數(shù)據(jù)表 table.sql ,目的是在 mysql 啟動時初始化數(shù)據(jù)。
DROP TABLE IF EXISTS `students`; CREATE TABLE `students` ( `student_id` varchar(255) NOT NULL, `student_name` varchar(255), `sex` tinyint(1) DEFAULT NULL, PRIMARY KEY (`student_id`) ) ENGINE=InnoDB AUTO_INCREMENT=100 DEFAULT CHARSET=utf8mb4; INSERT INTO `students`(`student_id`, `student_name`, `sex`) VALUES(1, 'jake', 0), (2, 'jenery', 1);
以上表示新建一張 students
表,然后插入兩條數(shù)據(jù)。
3. 定義啟動文件
新建啟動文件 set-env.sh
, 通過 docker-compose 啟動 mysql 容器服務(wù);然后通過 souce set-env.sh
把 mysql-local-dev 設(shè)置到環(huán)境變量中去。
#!/bin/bash MYSQL_LOCAL_ENV_DIR="$( cd "$(dirname "$0")"; pwd -P )" function mysql-local-dev() { case $1 in "up") docker-compose -p lingmo -f "$MYSQL_LOCAL_ENV_DIR"/docker-compose.yml up -d ;; "down") docker-compose -p lingmo -f "$MYSQL_LOCAL_ENV_DIR"/docker-compose.yml down ;; *) echo 'mysql-local-dev [up | down]' esac }
啟動 mysql 的三個文件已定義完成,目錄結(jié)構(gòu)為以下:
? local-mysql git:(main) ? tree . . ├── docker-compose.yml ├── set-env.sh └── table.sql 0 directories, 3 files
最后,我們測試下是否可啟動 mysql。
4. 啟停 mysql
- 啟動 mysql
mysql-local-dev up
說明 mysql 啟動成功。
通過相應(yīng)的賬號、密碼登錄 mysql 即可。
- 停止 mysql
mysql-local-dev down
到此這篇關(guān)于如何使用 docker 搭建一個 mysql 服務(wù)的文章就介紹到這了,更多相關(guān) docker 搭建mysql 服務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker容器環(huán)境安裝及鏡像基礎(chǔ)操作
容器是一種輕量級虛擬化技術(shù),能夠快速構(gòu)建業(yè)務(wù)環(huán)境并便于業(yè)務(wù)遷移,解決兼容性問題,這篇文章主要介紹了docker容器環(huán)境安裝及鏡像基礎(chǔ)操作,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-09-09docker實現(xiàn)MySQL數(shù)據(jù)同步的方法
docker的一大好處是在本地可以很方便快速的搭建負(fù)載均衡,主從同步等需要多主機的環(huán)境,本文主要介紹了docker實現(xiàn)MySQL數(shù)據(jù)同步的方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03cordon節(jié)點drain驅(qū)逐節(jié)點delete節(jié)點詳解
這篇文章主要為大家介紹了cordon節(jié)點drain驅(qū)逐節(jié)點delete節(jié)點詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11docker-compose部署MySQL8的實現(xiàn)
本文主要介紹了docker-compose部署MySQL8的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-11-11