【Docker】MySQL容器部署

MySQL標(biāo)準(zhǔn)軟件基于Bitnami mysql 構(gòu)建。當(dāng)前版本未8.3.0

你可以通過(guò)輕云UC部署工具直接安裝部署,也可以手動(dòng)按如下文檔操作,該項(xiàng)目已經(jīng)全面開源,可以從如下環(huán)境獲取
配置文件地址: https://gitee.com/qingplus/qingcloud-platform
qinghub自動(dòng)安裝部署配置庫(kù)

簡(jiǎn)介

MySQL是一個(gè)開源的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),常用于Web應(yīng)用程序的后端數(shù)據(jù)存儲(chǔ)。它支持多種操作系統(tǒng)和編程語(yǔ)言,具有高性能、可靠性和可擴(kuò)展性等特點(diǎn)。

配置

環(huán)境變量

可定制的環(huán)境變量

Name Description Default Value
ALLOW_EMPTY_PASSWORD 允許 MySQL 訪問(wèn)而無(wú)需任何密碼。 no
MYSQL_ROOT_USER MySQL 數(shù)據(jù)庫(kù) root 用戶。 root
MYSQL_MASTER_PORT_NUMBER MySQL 主節(jié)點(diǎn)的端口號(hào)。 3306
MYSQL_MASTER_ROOT_USER master主機(jī)的MySQL數(shù)據(jù)庫(kù)root用戶。 root
MYSQL_MASTER_DELAY MySQL 數(shù)據(jù)庫(kù)復(fù)制延遲。 0
MYSQL_REPLICATION_SLAVE_DUMP 在主 MySQL 數(shù)據(jù)庫(kù)上進(jìn)行轉(zhuǎn)儲(chǔ)并更新從屬 MySQL 數(shù)據(jù)庫(kù) false
MYSQL_CLIENT_ENABLE_SSL 是否強(qiáng)制使用 SSL 來(lái)連接 MySQL 數(shù)據(jù)庫(kù)。 no
MYSQL_CLIENT_EXTRA_FLAGS 是否使用“mysql”CLI 工具強(qiáng)制進(jìn)行 SSL 連接。對(duì)于依賴 CLI 而不是 API 的應(yīng)用程序很有用。 no
MYSQL_STARTUP_WAIT_RETRIES 等待數(shù)據(jù)庫(kù)運(yùn)行的重試次數(shù)。 300
MYSQL_STARTUP_WAIT_SLEEP_TIME 等待數(shù)據(jù)庫(kù)運(yùn)行的重試之間的睡眠時(shí)間。 2
MYSQL_ENABLE_SLOW_QUERY 是否啟用慢查詢?nèi)罩尽?/td> 0
MYSQL_LONG_QUERY_TIME 多少時(shí)間(以秒為單位)定義了慢速查詢。 10.0

只讀環(huán)境變量

Name Description Value
DB_FLAVOR SQL 數(shù)據(jù)庫(kù)風(fēng)格。有效值:mariadb或mysql。 mysql
DB_BASE_DIR MySQL 文件的基本路徑。 ${BITNAMI_ROOT_DIR}/mysql
DB_VOLUME_DIR 持久文件的 MySQL 目錄。 ${BITNAMI_VOLUME_DIR}/mysql
DB_DATA_DIR MySQL 數(shù)據(jù)文件目錄。 ${DB_VOLUME_DIR}/data
DB_BIN_DIR 可執(zhí)行二進(jìn)制文件所在的 MySQL 目錄。 ${DB_BASE_DIR}/bin
DB_SBIN_DIR 服務(wù)二進(jìn)制文件所在的MySQL目錄。 ${DB_BASE_DIR}/bin
DB_CONF_DIR MySQL 配置目錄。 ${DB_BASE_DIR}/conf
DB_DEFAULT_CONF_DIR MySQL默認(rèn)配置目錄。 ${DB_BASE_DIR}/conf.default
DB_LOGS_DIR MySQL 日志目錄。 ${DB_BASE_DIR}/logs
DB_TMP_DIR MySQL 臨時(shí)文件目錄。 ${DB_BASE_DIR}/tmp
DB_CONF_FILE 主要 MySQL 配置文件。 ${DB_CONF_DIR}/my.cnf
DB_PID_FILE MySQL PID 文件。 ${DB_TMP_DIR}/mysqld.pid
DB_SOCKET_FILE MySQL 服務(wù)器套接字文件。 ${DB_TMP_DIR}/mysql.sock
DB_DAEMON_USER 將執(zhí)行 MySQL Server 進(jìn)程的用戶。 mysql
DB_DAEMON_GROUP 將執(zhí)行 MySQL Server 進(jìn)程的組。 mysql
MYSQL_DEFAULT_PORT_NUMBER 用于 MySQL 服務(wù)器服務(wù)的默認(rèn)端口號(hào)。 3306
MYSQL_DEFAULT_CHARACTER_SET 默認(rèn) MySQL 字符集。 utf8mb4
MYSQL_DEFAULT_BIND_ADDRESS 默認(rèn) MySQL 綁定地址。 0.0.0.0
MYSQL_DISABLE_SERVICE 是否默認(rèn)禁用MySQL服務(wù)。 no

初始化一個(gè)新實(shí)例

容器可以在第一次啟動(dòng)和每次啟動(dòng)時(shí)執(zhí)行自定義文件。支持?jǐn)U展名為.sh,.sql和.sql.gz的文件。

  • 在/docker-entrypoint-initdb.d中的文件只會(huì)在第一個(gè)容器啟動(dòng)時(shí)執(zhí)行。
  • 在/docker-entrypoint-startdb.d中的文件將在每個(gè)容器啟動(dòng)時(shí)執(zhí)行。
    為了將自定義文件放入 docker 映像中,可以將它們掛載為卷。

考慮到這些腳本根據(jù)擴(kuò)展名的不同而被不同地對(duì)待。當(dāng).sh腳本在所有節(jié)點(diǎn)執(zhí)行;和.sql腳本.sql.gz僅在主節(jié)點(diǎn)中執(zhí)行。這種差異背后的原因是.sh腳本允許添加條件來(lái)確定運(yùn)行腳本的節(jié)點(diǎn)是什么,而這些條件不能使用.sql或者sql.gz文件來(lái)設(shè)置。這樣就可以根據(jù)需要覆蓋不同的用例。

注意:如果您要導(dǎo)入大型數(shù)據(jù)庫(kù),建議將它們導(dǎo)入為.sql而不是.sql.gz,因?yàn)楹笳咝枰磿r(shí)解壓縮并且不允許進(jìn)行額外的優(yōu)化來(lái)導(dǎo)入大文件。

首次運(yùn)行時(shí)設(shè)置 root 密碼

可以使用以下環(huán)境變量通過(guò)設(shè)置 root 用戶和密碼:

  • MYSQL_ROOT_USER:數(shù)據(jù)庫(kù)管理員用戶。默認(rèn)為root.
  • MYSQL_ROOT_PASSWORD:數(shù)據(jù)庫(kù)管理員用戶密碼。沒(méi)有默認(rèn)值。

在首次運(yùn)行時(shí)會(huì)設(shè)置以上用戶名及密碼新。

docker run --name mysql -e MYSQL_ROOT_PASSWORD=qingcloud123 registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mysql:latest

或者通過(guò)修改docker-compose.yml文件:

services:
  mysql:
  ...
    environment:
      - MYSQL_ROOT_PASSWORD=qingcloud123
  ...

Warning MYSQL_ROOT_USER始終是通過(guò)遠(yuǎn)程訪問(wèn)創(chuàng)建的。建議始終指定 env 變量來(lái)為用戶MYSQL_ROOT_USER設(shè)置密碼MYSQL_ROOT_PASSWORD。如果您希望允許MYSQL_ROOT_USER用戶無(wú)需密碼即可訪問(wèn)數(shù)據(jù)庫(kù),請(qǐng)?jiān)O(shè)置環(huán)境變量ALLOW_EMPTY_PASSWORD=yes。建議僅用于開發(fā)。

允許空密碼

默認(rèn)情況下,要設(shè)置所有可用的密碼。為了允許空密碼,需要設(shè)置ALLOW_EMPTY_PASSWORD=yes 環(huán)境變量。

docker run --name mysql -e ALLOW_EMPTY_PASSWORD=yes registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mysql:latest

或者通過(guò)修改docker-compose.yml文件:

services:
  mysql:
  ...
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
  ...

設(shè)置字符集和排序規(guī)則

可以使用以下環(huán)境變量配置數(shù)據(jù)庫(kù)默認(rèn)使用的字符集和排序規(guī)則:

  • MYSQL_CHARACTER_SET:使用的默認(rèn)字符集。默認(rèn):utf8
  • MYSQL_COLLATE:要使用的默認(rèn)排序規(guī)則。默認(rèn):utf8_general_ci

首次運(yùn)行時(shí)創(chuàng)建數(shù)據(jù)庫(kù)

MYSQL_DATABASE通過(guò)在第一次運(yùn)行鏡像時(shí)傳遞環(huán)境變量,將創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)。如果您的應(yīng)用程序要求數(shù)據(jù)庫(kù)已存在,這非常有用,使您不必使用 MySQL 客戶端手動(dòng)創(chuàng)建數(shù)據(jù)庫(kù)。

docker run --name mysql \
    -e ALLOW_EMPTY_PASSWORD=yes \
    -e MYSQL_DATABASE=my_database \
    registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mysql:latest

或者通過(guò)修改docker-compose.yml文件:

services:
  mysql:
  ...
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
      - MYSQL_DATABASE=my_database
  ...

首次運(yùn)行時(shí)創(chuàng)建數(shù)據(jù)庫(kù)用戶

您可以創(chuàng)建一個(gè)受限數(shù)據(jù)庫(kù)用戶,該用戶僅具有使用環(huán)境變量創(chuàng)建的數(shù)據(jù)庫(kù)的權(quán)限MYSQL_DATABASE。為此,請(qǐng)?zhí)峁㎝YSQL_USER環(huán)境變量并為提供該變量的數(shù)據(jù)庫(kù)用戶設(shè)置密碼MYSQL_PASSWORD。MySQL支持不同的身份驗(yàn)證機(jī)制,例如caching_sha2_password或mysql_native_password。要設(shè)置它,請(qǐng)使用MYSQL_AUTHENTICATION_PLUGIN變量。

docker run --name mysql \
  -e ALLOW_EMPTY_PASSWORD=yes \
  -e MYSQL_USER=my_user \
  -e MYSQL_PASSWORD=my_password \
  -e MYSQL_DATABASE=my_database \
  -e MYSQL_AUTHENTICATION_PLUGIN=mysql_native_password \
  registry.cn-hangzhou.aliyuncs.com/qingcloudtech/mysql:latest

或者通過(guò)修改docker-compose.yml文件:

services:
  mysql:
  ...
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
      - MYSQL_USER=my_user
      - MYSQL_PASSWORD=my_password
      - MYSQL_DATABASE=my_database
  ...

注意:這里如果要禁用空密碼, 可以配置MYSQL_ROOT_PASSWORD 環(huán)境變量替代ALLOW_EMPTY_PASSWORD=yes

你可以通過(guò)輕云UC 部署工具直接安裝部署,也可以手動(dòng)按如下文檔操作
部署配置文件獲取地址: https://gitee.com/qingplus/qingcloud-platform

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容