Docker 使用Docker創建MySQL容器


使用Docker創建MySQL容器

實踐環境

Docker version 20.10.5

MySQL5.7

Centos 7.8

創建步驟

1、拉取MySQL鏡像

docker pull mysql:5.7

說明:如果不執行該步驟,執行創建MySQL容器時會自動拉取鏡像:docker pull mysql:latest

3、創建mysql數據文件,日志文件,配置文件掛載目錄

# mkdir -p /usr/local/mysql/data /usr/local/mysql/logs /usr/local/mysql/conf
# chmod -R 755 /usr/local/mysql/data
# chmod -R 755 /usr/local/mysql/logs
# chmod -R 755 /usr/local/mysql/conf

2、編寫MySQL數據庫配置文件my.cnf

[mysqld]
basedir=/usr/local/mysql   
datadir=/usr/local/mysql/data  
port=3306
character_set_database=utf8
character_set_server=utf8
user=mysql
slow_query_log=on
slow_query_log_file=/usr/local/mysql/logs/slow.log
long_query_time=0.3
default-storage-engine=INNODB
innodb_buffer_pool_size=64M
innodb_purge_threads = 1
innodb_log_buffer_size=2M
innodb_log_file_size = 64M
innodb_thread_concurrency=8 
innodb_lock_wait_timeout = 120
innodb_flush_log_at_trx_commit=1
max_connections=512 
query_cache_size=0
tmp_table_size=18M
thread_cache_size=8
myisam_max_sort_file_size=64G 
myisam_sort_buffer_size=35M
key_buffer_size=25M 
read_buffer_size=64K
read_rnd_buffer_size=256K
sort_buffer_size=16M
log-error=/usr/local/mysql/logs/mysql.log 
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION


[mysql]
default-character-set=utf8
character_set_database=utf8

[client]     
port=3306
default-character-set=utf8

說明:該配置文件存放在上文創建的/usr/local/mysql/conf目錄下

3、創建MySQL容器數據庫

# sudo docker run --restart=always -p 3306:3306 --name db.mysql -v /usr/local/mysql/conf:/etc/mysql -v /usr/local/mysql/my.cnf:/etc/mysql/my.cnf -v /usr/local/mysql/logs:/var/log/mysql -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mFF!Wmh\& -d mysql:5.7

MySQL環境變量配置說明:

MYSQL_ROOT_PASSWORD : 指定root用戶初始密碼,例中為 mFF!Wmh&,還可以配置其它

實踐時發現,以下3個配置不起作用
MYSQL_DATABASE : 運行時需要創建的數據庫名稱;
MYSQL_USER : 運行時需要創建用戶名,與MYSQL_PASSWORD一起使用;
MYSQL_PASSWORD : 運行時需要創建的用戶名對應的密碼,與MYSQL_USER一起使用;

以下配置未驗證過
MYSQL_ALLOW_EMPTY_PASSWORD : 是否允許root用戶的密碼為空,該參數對應的值為:yes;
MYSQL_RANDOM_ROOT_PASSWORD:為root用戶生成隨機密碼;
MYSQL_ONETIME_PASSWORD : 設置root用戶的密碼必須在第一次登陸時修改(只對5.6以上的版本支持)。
MYSQL_ROOT_PASSWORD 和 MYSQL_RANDOM_ROOT_PASSWORD 兩者必須有且只有一個。

4、進入容器,登錄MySQL

# docker exec -it db.mysql /bin/bash
root@0b023eb3b811:/# root@0b023eb3b811:/# mysql -uroot -pmH1FF\!Kemh\&
mysql> exit
Bye
root@0b023eb3b811:/# exit
#

如上,成功了

注意:登錄時,密碼如果包含特殊字符,需要進行轉義,否則會報類似如下錯誤

bash: !Kemh: event not found


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM