docker-compose 安装mysql
Docker Compose 常用命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | docker-compose -h # 查看帮助 docker-compose up # 创建并运行所有容器 docker-compose up -d # 创建并后台运行所有容器 docker-compose -f docker-compose.yml up -d # 指定模板 docker-compose down # 停止并删除容器、网络、卷、镜像。 docker-compose logs # 查看容器输出日志 docker-compose pull # 拉取依赖镜像 dokcer-compose config # 检查配置 dokcer-compose config -q # 检查配置,有问题才有输出 docker-compose restart # 重启服务 docker-compose start # 启动服务 docker-compose stop # 停止服务 |
1.项目文件如下图
conf目录下有个my.cnf文件,内容如下:
1 2 3 4 5 6 7 8 | [mysqld] user=mysql default -storage-engine=INNODB character- set -server=utf8 [client] default -character- set =utf8 [mysql] default -character- set =utf8 |
init目录下有个init.sql文件,用于初始化数据库,内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 | create database test; use test; create table user ( id int auto_increment primary key, username varchar(64) unique not null , email varchar(120) unique not null , password_hash varchar(128) not null , avatar varchar(128) not null ); insert into user values(1, "zhangsan" , "test12345@qq.com" , "passwd" , "avaterpath" ); insert into user values(2, "lisi" , "12345test@qq.com" , "passwd" , "avaterpath" ); |
2.docker-compose.yml文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | version: '3.4' services: mysql: network_mode: "bridge" environment: MYSQL_ROOT_PASSWORD: "123456" MYSQL_USER: 'yak' MYSQL_PASS: '123456' image: "mysql:5.5" restart: always volumes: - "./db:/var/lib/mysql" - "./conf/my.cnf:/etc/my.cnf" - "./init:/docker-entrypoint-initdb.d/" ports: - "3306:3306" |
说明:
services.mysql.image: 指定mysql镜像的版本
services.mysql.environment: 环境变量
MYSQL_ROOT_PASSWORD:必须,指定root用户的密码
MYSQL_USER、MYSQL_PASS 新建用户并指定密码,可选。
services.mysql.volumes: 数据卷挂载,将本地主机的目录,映射成容器里对应的目录
./data:/var/lib/mysql :mysql的数据存储到当前目录的 data目录下
./config/my.cnf:/etc/my.cnf :指定加载mysql的配置文件为当前目录的 config/my.cnf 文件
./init:/docker-entrypoint-initdb.d/ :容器初始化时,执行 init目录下的mysql脚本
services.mysql.ports: 指定端口映射,这里本地主机的 3307 映射到容器的3306端口,则外部连接数据库的url为 jdbc:mysql://localhsot:3307/xxxxx
3.执行命令
进入docker-compose.yml文件所在目录,执行如下命令
1 | docker-compose up -d |
打开数据库
其他
增加权限和远程SQL脚本:
GRANT ALL privileges on *.* TO 'root'@'%'; ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native-pasword BY '123456';
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # docker 中下载 mysql docker pull mysql #启动 docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=Lzslov123! -d mysql #进入容器 docker exec -it mysql bash #登录mysql mysql -u root -p ALTER USER 'root' @ 'localhost' IDENTIFIED BY 'Lzslov123!' ; #添加远程登录用户 CREATE USER 'liaozesong' @ '%' IDENTIFIED WITH mysql_native_password BY 'Lzslov123!' ; GRANT ALL PRIVILEGES ON *.* TO 'liaozesong' @ '%' ; |
参考:
https://blog.csdn.net/fmi110/article/details/118279911
https://www.runoob.com/docker/docker-install-mysql.html
https://zhuanlan.zhihu.com/p/384330120
https://blog.51cto.com/riverxyz/2956641
https://www.cnblogs.com/-wenli/p/14233010.html
https://www.cnblogs.com/fkdby/articles/15438875.html
http://t.zoukankan.com/hxsen-p-13456663.html
本文来自博客园,作者:{春光牛牛,yak},转载请注明原文链接:https://www.cnblogs.com/yakniu/p/16295995.html
欢迎各位大佬们评论指正
QQ讨论群:610129902
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了