docker 中部署 mysql 以及一些配置

[TOC]

部署 mysql

官方文档:

2.8 Deploying MySQL on Linux with Docker - 概述,实际上没啥价值
2.8.1 Basic Steps for MySQL Server Deployment with Docker - 包含一个简单的基本介绍,没有介绍数据持久化的问题
2.8.2 More Topics on Deploying MySQL Server with Docker - 介绍了需要的参数,包括持久化问题

我采用的命令是:

docker run --name mysql -d \
    -p 3306:3306 \
    -v mysql-data:/var/lib/mysql \
    -v /etc/timezone:/etc/timezone \
    -v /etc/localtime:/etc/localtime \
    --restart=always \
    mysql/mysql-server:5.7.26

配置完 mysql 以后,设置新密码

首先,登录 mysql

docker exec -it mysql mysql -uroot -pxxxxxx

修改密码

alter user `root`@`localhost` identified by 'PASSWORD';

MySQL5.7 添加用户、删除用户与授权

# 创建用户同时授权
grant all privileges on *.* to test@localhost identified by 'PASSWORD';

这里可以用宿主机的 ip 地址可以作为局域网访问的授权 host,比如

# 创建用户同时授权
grant all privileges on *.* to test@'192.168.0.%' identified by 'PASSWORD';

各个平台的mysql重启命令

开启 回滚

echo "
# 开启 binlog 支持数据回滚
server_id=1
binlog_format=row
binlog_row_image=full
# 控制 binlog 文件大小
log_bin=/var/log/mysql/mysql-bin.log
max_binlog_size=1G
expire_logs_days=30
">>/etc/my.cnf

注意给权限,否则将导致无法启动问题,参见:mysql配置binlog后无法启动解决办法

mkdir -p /var/log/mysql
chown -R mysql:mysql /var/log/mysql

开启 慢日志

echo "
# 开启慢日志
slow_query_log = ON
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 1
">>/etc/my.cnf

innodb 独占表空间

innodb_file_per_table

echo "
# innodb 独占表空间
innodb_file_per_table = 1
">>/etc/my.cnf

参考博客: MySQL Server参数优化 - innodb_file_per_table(独立表空间)

你可能感兴趣的:(docker 中部署 mysql 以及一些配置)