docker搭建mysql:5.7.29


拉取對應版本鏡像

docker pull mysql:5.7.29

mysql:5.7.29容器中目錄結構

|-- conf.d
|   |-- docker.cnf
|   |-- mysql.cnf
|   |-- mysqldump.cnf
|-- my.cnf -> /etc/alternatives/my.cnf
|-- my.cnf.fallback
|-- mysql.cnf
|-- mysql.conf.d
    |-- mysqld.cnf

注意:不要映射:/etc/mysql/my.cnf,該文件是個軟連。即使映射成功配置文件是不會生效的。

編寫腳本

├─mysql5.7
│      ├─conf
│      │  └─mysql.conf.d
│      │          mysqld.cnf
│      └─scripts
│              run.sh

文件:mysqld.cnf

[mysql]
default-character-set=utf8

[mysqld]
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data/

pid-file=/var/run/mysqld/mysqld.pid
socket=/var/run/mysqld/mysqld.sock

# 錯誤日志
log-error=/var/log/mysql/error.log

# 默認存儲引擎
default-storage-engine=InnoDB

# 服務器ID
server-id=1

# 開啟BIN LOG日志
log-bin=mysql-bin

# 設置SQL模式
sql_mode="IGNORE_SPACE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

# 服務器默認字符集
character_set_server=utf8

# 默認字符集
collation_server = utf8_general_ci

注意:character_set_databasecollation_database 這兩個參數在MySQL5.7版本中已經棄用不再使用
官網文檔:https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html

文件:run.sh

#!/usr/bin/env bash

# 設置MySQL端口
mysql_port=$1
if [ ! "$mysql_port" ]; then
  mysql_port=3306
fi

# 腳本當前目錄
scrpts_path=$(cd $(dirname "$0") || exit; pwd)

# MySQL根目錄
dirpath=$(dirname "$scrpts_path")

# 創建MySQL數據存儲目錄
mkdir -p "$dirpath"/data

# 啟動MySQL服務
docker rm mysql_"$mysql_port" -f

docker run -d -p "$mysql_port":3306 --name mysql_"$mysql_port" \
-v="$dirpath"/conf/mysql.conf.d/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf \
-v="$dirpath"/data:/usr/local/mysql/data/ \
-v="$dirpath"/data:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=123 \
mysql:5.7.29

說明

  • 修改容器中的配置文件
  • 修改mysql數據目錄
  • 設置mysql初始密碼

啟動MySQL服務

sh scripts/run.sh

執行:docker ps 查看服務是否啟動成功

注意:data 目錄不要隨便刪除

注意:該鏡像自動創建遠程賬號:root 密碼就是初始密碼

進入MySQL服務容器內

docker exec -it mysql bash

連接MySQL

mysql -uroot -p

# 初始密碼:123

修改密碼

按需操作

# 修改本地連接賬號-置空
alter user 'root'@'localhost' identified by '';

# 修改遠程賬號密碼-置空
alter user 'root'@'%' identified by '';

注意:此時連接mysql服務器root密碼不再是初始密碼,而是剛才設定的密碼

---------------至此部署完畢---------------


免責聲明!

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



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