赞
踩
Docker 与 docker-compose 安装这里不做介绍。
# 5.7 版本
docker pull mysql:5.7
# 8.2 版本
docker pull mysql:8.2
cd home
# 创建目录
mkdir mysql && cd mysql
# 存放数据库文件
mkdir data
# 存放数据库日志
mkdir logs
# 存放数据库配置
mkdir conf
在缩主机 /home/mysql/conf 目录下创建 my.cnf。
[mysqld]
skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
secure-file-priv=/var/lib/mysql-files
user=mysql
# MySQL监听端口
port=3306
# MySQL绑定IP
# bind_address=127.0.0.1
# 生成日志
general_log=1
general_log_file=/var/log/mysql/mysql.log
# 无论是否超时,未被索引的记录也会记录下来
log_queries_not_using_indexes=1
# 全局开启慢查询功能
slow_query_log=1
# 慢查询阈值(秒),SQL 执行超过这个阈值将被记录在日志中
long_query_time=1
# 慢查询仅记录扫描行数大于此参数的 SQL
min_examined_row_limit=500
# 指定慢查询日志存储文件的地址和文件名
slow_query_log_file=/var/log/mysql/slow.log
# 错误日志
log_error=/var/log/mysql/error.log
log_error_verbosity = 3
# 取消 ONLY_FULL_GROUP_BY
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
# 开启定时事件
event_scheduler=1
# 表名大小写不敏感
lower_case_table_names=1
# 设置字符集
character_set_server=utf8mb4
collation_server=utf8mb4_bin
# 默认使用的存储引擎
default_storage_engine=InnoDB
[client]
socket=/var/run/mysqld/mysqld.sock
default_character_set=utf8mb4
注: Docker 容器中 不带mysqlbinlog 的,可以从已安装 MySQL 的Linux服务器上获取。
[mysqld]
# binlog功能
log_bin=/var/lib/mysql/mysql-bin
# binlog 文件格式
binlog_format=ROW
# 表无论有没有主键约束或者唯一约束binlog都会记录所有前后镜像
binlog_row_image=FULL
# binlog 文件保留时间7天(默认0天)
expire_logs_days=7
# binlog 单个文件的最大值大小(默认1G)
max_binlog_size=512m
# 开启 binlog 后需要创建 function 或 procedure 时要开启
log_bin_trust_function_creators=1
# 服务id,以区分主库和备库
server-id=1
-- 显示是否开启 binlog
show variables like 'log_bin%';
-- 显示 binlog 文件格式
show variables like 'binlog_format%';
-- 显示 binlog 文件保留时间
show variables like 'expire_logs_days%';
-- 显示 binlog 单个文件的最大值大小
show variables like 'max_binlog_size%';
-- 显示 binlog 事件
show binlog events;
-- 显示全部 binlog 文件列表
show binary logs;
show master logs;
-- 显示最新 binlog 文件编号以及最后一个操作事件结束点(Position)值
show master status;
-- 结束当前 binlog 文件并生成新的 binlog 文件
flush logs;
-- 重置 binlog 文件(清空全部 biglog 文件)
reset master;
注: binlog 默认存放在容器内 /var/lib/mysql 数据库文件目录。
# /usr/bin/mysqlbinlog
whereis mysqlbinlog
docker cp mysqlbinlog mysql:/usr/bin
# 进入容器内
docker exec -it mysql /bin/bash
# 在容器内为 mysqlbinlog 添加权限
chmod +x /usr/bin/mysqlbinlog
# 进入容器内执行
mysqlbinlog --no-defaults \
--base64-output=DECODE-ROWS \
-v /var/lib/mysql/mysql-bin.000001 >/tmp/binlog_000001.sql
services:
mysql:
image: mysql:5.7
container_name: mysql
restart: always
ports:
- "3306:3306"
environment:
# root 账号密码
MYSQL_ROOT_PASSWORD: '4NuMDwIzp05BdKp7Bdmf'
MYSQL_USER: 'Test'
MYSQL_PASSWORD: 'MySql123456'
volumes:
- /etc/localtime:/etc/localtime
- /home/mysql/data:/var/lib/mysql
- /home/mysql/conf:/etc/mysql/conf.d
- /home/mysql/logs:/var/log/mysql
docker-compose up -d mysql
# 查询日志是否启动成功
docker logs -f mysql
登录 root 账号操作。
-- 查询用户在数据库中拥有的所有权限,包括函数权限
SHOW GRANTS FOR 'Test'@'%';
-- 添加所有权限
GRANT ALL PRIVILEGES ON *.* TO 'Test'@'%' WITH GRANT OPTION;
-- 查询数据库版本
select version();
-- 查询数据库字符集
show variables like 'character%';
-- 查看事件计划是否开启
SHOW VARIABLES LIKE '%event_sche%';
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。