docker拉取镜像并启动mysql容器
docker run \
-p 33306:3306 \
--name mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:8.0.28
启动docker容器后进入容器,拷贝数据以及配置文件
docker exec -it mysql bash
show variables like '%datadir%';
docker cp mysql:/var/lib/mysql /mydata/mysql/data
docker cp mysql:/etc/mysql /mydata/mysql/conf
使用上面的mysql配置文件,挂载本地配置文件以及数据
docker stop mysql && docker rm mysql
docker run --restart=always --privileged=true \
-p 33306:3306 \
--name mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-v /mydata/mysql/conf/conf.d:/etc/mysql/conf.d \
-v /mydata/mysql/logs:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-e TZ=Asia/Shanghai \
-d mysql:8.0.28
my.cnf配置文件:
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000
default-time-zone='+08:00'
innodb_buffer_pool_size = 128M
port = 3306
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
pid-file=/var/run/mysqld/mysqld.pid
# 允许连接失败的次数。
max_connect_errors=10
#引擎
default-storage-engine=INNODB
log-bin = mysql-bin
# #设置保存时间
expire_logs_days=7
# #注意5.7以及更高版本需要配置本项:server-id=123454(自定义,保证唯一性); server-id 一般去ip后三位
server-id=138
# #binlog格式,有3种statement,row,mixed
binlog-format=ROW
# #表示每1次执行写入就与硬盘同步,会影响性能,为0时表示,事务提交时mysql不做刷盘操作,由系统决定
sync-binlog=1
# ##开启慢sql
slow_query_log=on
slow_query_log_file=/var/lib/mysql/slow-query.log
long_query_time=1
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
以上便是docker拉取mysql镜像并挂载本地配置文件以及数据启动容器