一、搜索mysql
docker search mysql

二、选择需要的mysql
docker pull mysql

三、查看
docker images

四、启动mysql
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root --name mysql --privileged=true -v=/data/docker/mysql/config/mysql:/etc/mysql -v=/data/docker/mysql/data:/var/lib/mysql mysql
需要把mysql配置文件从docker容器中下载,否则无法进行配置文件挂载
docker cp mysql:/etc/mysql/ /docker/mysql/config 映射后在config/mysql/conf.d/mysql.cnf 中添加 default-authentication-plugin=mysql_native_password lower-case-table-names=1 #区分大小写
设置区分大小写
在my.cnf中 增加lower_case_table_names=1,注意需要在初始化数据库时增加,否则需要把现有的数据库删除才能添加
说明:
- mysql启动需要指定密码,不然启动报错。(database is uninitialized and password option is not specified
You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD
) - /home/mysql/config/my.cnf 指定服务器上面的配置文件
- /home/mysql/data 指定数据存放在服务器的位置
mysql配置文件
[mysqld]# 绑定IPv4和3306端口port = 3306# 允许最大连接数max_connections=200# 设置字符集为utf8character-set-server=utf8sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLESlower_case_table_names=1[client]# 设置客户端字符集default-character-set=utf8
五、docker-compose 方式
version: '3.1'services:db:image: mysqlcontainer_name: mysqlrestart: alwaysprivileged: trueports:- 3306:3306volumes:- /docker/mysql/config/mysql:/etc/mysql/- /docker/mysql/data:/var/lib/mysql- /docker/mysql/mysql-files:/var/lib/mysql-files/environment:TZ: Asia/ShanghaiMYSQL_ROOT_PASSWORD: rootcommand:--character-set-server=utf8mb4--collation-server=utf8mb4_general_ci--explicit_defaults_for_timestamp=true--lower_case_table_names=1 //区分大小写,mysql8必须要在初始化的时候进行--max_allowed_packet=128M
version: '3.1'
services:
db:
image: mysql
container_name: mysql8
command:
# MySQL8的密码验证方式默认是 caching_sha2_password,但是很多的连接工具还不支持该方式
# 就需要手动设置下mysql的密码认证方式为以前的 mysql_native_password 方式
--default-authentication-plugin=mysql_native_password
# 字符集要是utf8mb4的 utf8字符集有bug
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
# 区分大小写 mysql8必须要在初始化的时候进行
--lower_case_table_names=1
# docker的重启策略:在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: root_password # root用户的密码
MYSQL_USER: user # 创建新用户
MYSQL_PASSWORD: user_password # 新用户的密码
ports:
- 3306:3306
volumes:
- /usr/local/docker/mysql8/data:/var/lib/mysql
- /usr/local/docker/mysql8/conf:/etc/mysql/conf.d
- /usr/local/docker/mysql8/logs:/logs
# MySQL 的 Web 客户端
adminer:
image: adminer
restart: always
ports:
- 8081:8080
docker-compose up -d启动容器
如果启动失败过,就需要删除宿主机上的data挂载目录,需要清楚上次启动留下的数据文件,不然重启启动的时候还是会报错
测试链接
链接数据库
链接网页版的管理工具

此管理工具有个帮助文档很好用
这里可以找到我在 docker-compose.yml 文件的配置的值
六、进入容器
docker exec -it ms bash
- 进入容器可以直接执行sql语句
