简介
本文介绍使用Docker compose安装MySQL8的方法。
脚本及配置
目录结构
├── docker-compose.yml # docker-compose.yml文件 ├── conf │ └── my.cnf # MySQL配置文件 ├── data # 数据库数据文件目录 ├── log # 日志存放目录 └── bak # 手动备份数据的目录
data、log不需要手动创建,在docker compose运行时会自动创建。
docker-compose.yml
version: '3.1' services: mysqldb: # 启动方式 #restart: unless-stopped # 镜像 image: mysql:8.0 # 容器名字 container_name: mysql8 privileged: true environment: # 时区 TZ: Asia/Shanghai # root用户的密码 MYSQL_ROOT_PASSWORD: 123456 # 用户(不能是root, 后续需要给新用户赋予权限) MYSQL_USER: admin # 用户密码 MYSQL_PASSWORD: 222333 command: --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --explicit_defaults_for_timestamp=true ports: - 3306:3306 volumes: - ./log/:/var/log/mysql/ - ./data/:/var/lib/mysql/ - ./conf/:/etc/mysql/conf.d/ - ./bak/:/bak/
my.cnf(mysql配置文件)
[client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4 [mysqld] #服务端口号 默认3306 port=3306 # 数据路径,默认是/var/lib/mysql/ #datadir = /app/data/ init_connect='SET NAMES utf8mb4' character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci # 最大连接数 max_connections=200 # 连接失败的最大次数。防止有人从该主机试图攻击数据库系统 max_connect_errors=20 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB skip-name-resolve # 最大binlog文件大小。达到设定大小后,会创建新的bin log日志。 max_binlog_size=500M # binlog过期天数。默认是0(永远存在) expire_logs_days=5 # 若不配置log-error默认输出到控制台。 # 若只配置但不指定文件,即:log-error,,则为datadir目录下的 `hostname`.err,hostname为主机名。 log-error = /var/log/mysql/error.log # 是否启用慢查询日志,默认不启用 # slow_query_log={1|ON|0|OFF} slow_query_log=ON # 默认路径为库文件目录下主机名加上-slow.log slow_query_log_file=/var/log/mysql/slow.log # 指定慢查询超时时长(默认10秒),超出此时长的属于慢查询 long_query_time=10 # 定义一般查询日志和慢查询日志的输出格式,默认为file # log_output={TABLE|FILE|NONE} # 查询没有使用索引的时候是否也记入慢查询日志,默认OFF # log_queries_not_using_indexes=OFF # 开启一般查询日志,默认off关闭 # general_log=ON # 指定一般查询日志路径 # general_log_file=/var/log/mysql/general.log
运行docker compose
法1:到配置文件目录下运行
docker compose up
会打印详细启动日志,而且会占用控制台。
后台运行的方法:
docker compose up -d
-d:在后台运行。
法2:指定配置文件
docker compose -f /work/docker/docker-compose/mysql/docker-compose.yml up
docker compose的启动、停止等命令,全都是这样的,要么在配置文件目录下执行,要么指定配置文件。
查看运行结果
compose查看
docker compose ls
docker查看
docker ps
给用户赋予权限
进到MySQL这个docker中
docker exec -it mysql8 bash
连接到MySQL服务
mysql -uroot -p
回车后输入密码:123456,然后再回车即可。
授予所有权限
GRANT ALL ON *.* TO 'adminUser'@'%';
刷新权限
FLUSH PRIVILEGES;
Navicat连接测试
停止容器
docker compose stop
停止容器,但不删除容器。
启动容器
docker compose start
删除容器
法1:rm
docker compose rm
只删除容器
法2:down
docker compose down
停止容器,然后删除容器。
请先
!