这里记录一下使用Docker-compose安装MySQL的笔记
1、创建Dockerfile
首先,创建目录mysql,用于存放后面的相关东西。
root@Docker:~$ mkdir -p ~/mysql/data ~/mysql/logs ~/mysql/conf
data目录将映射为mysql容器配置的数据文件存放路径
logs目录将映射为mysql容器的日志目录
conf目录里的配置文件将映射为mysql容器的配置文件
进入创建的mysql目录,创建Dockerfile
imageversion: '3.1'
services:
mysql:
restart: always
image: mysql:5.7.22
container_name: mysql
ports:
- 3306:3306
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 12345678
command:
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
--max_allowed_packet=128M
--sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"
volumes:
- mysql-data:/var/lib/mysql
volumes:
mysql-data:
2. 启动容器
默认情况,docker-compose up
启动的容器都在前台,控制台将会同时打印所有容器的输出信息,可以很方便进行调试。当通过 Ctrl-C 停止命令时,所有容器将会停止。如果使用docker-compose up -d
,将会在后台启动并运行所有的容器。一般推荐生产环境下使用该选项。
3.进入容器
首先查看容器状态,如果启动成功了,进入容器 docker exec -it mysql /bin/bash
登录MySQL,mysql -u root -p
4.修改远程访问权限
use mysql;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '12345678' WITH GRANT OPTION;
FLUSH PRIVILEGES;
这里的12345678为你给新增权限用户设置的密码,%代表所有主机,也可以具体到你的主机ip地址
②flush privileges; 这一步一定要做,不然无法成功! 这句表示从mysql数据库的grant表中重新加载权限数据 因为MySQL把权限都放在了cache中,所以在做完更改后需要重新加载。
网友评论