Docker安装Mysql

1.拉取Mysql

powershell 复制代码
docker pull mysql:8.3.0

2.检查成功了没有

powershell 复制代码
docker images mysql:8.3.0

3.创建先关目录

powershell 复制代码
# conf放配置文件,data放数据,log放日志
mkdir -p  /home/mysql/{conf,data,log}

4.创建配置文件

powershell 复制代码
vim /home/mysql/conf/my.cnf

把这些cv进去,写好保存

powershell 复制代码
[client]
#设置客户端默认字符集utf8mb4
default-character-set=utf8mb4
[mysql]
#设置服务器默认字符集为utf8mb4
default-character-set=utf8mb4
[mysqld]
#配置服务器的服务号,具备日后需要集群做准备
server-id = 1
#开启MySQL数据库的二进制日志,用于记录用户对数据库的操作SQL语句,具备日后需要集群做准备
log-bin=mysql-bin
#设置清理超过30天的日志,以免日志堆积造过多成服务器内存爆满。2592000秒等于30天的秒数
binlog_expire_logs_seconds = 2592000
#解决MySQL8.0版本GROUP BY问题
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
#允许最大的连接数
max_connections=1000
# 禁用符号链接以防止各种安全风险
symbolic-links=0
# 设置东八区时区
default-time_zone = '+8:00'

5.启动容器

  • docker run: 启动一个新的容器。
  • -p 3306:3306: 将主机的 3306 端口映射到容器的 3306 端口,这是 MySQL 默认的服务端口。
  • --restart=always: 设置容器总是自动重启,无论容器退出代码是什么。
  • --name mysql: 为容器指定一个名称 "mysql"。
  • --privileged=true: 给予容器扩展权限,通常在需要更高级别的系统访问权限时使用(注意:这会降低容器的安全性)。
  • -v /home/mysql/log:/var/log/mysql : 将主机的 /home/mysql/log 目录挂载到容器内的 /var/log/mysql,用于存储 MySQL 的日志文件。
  • -v /home/mysql/data:/var/lib/mysql : 将主机的 /home/mysql/data 目录挂载到容器内的 /var/lib/mysql,这是 MySQL 数据库存储数据的地方。
  • -v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf : 将主机的配置文件 /home/mysql/conf/my.cnf挂载到容器内作为 MySQL 的主配置文件。
  • -e MYSQL_ROOT_PASSWORD=123456 : 设置环境变量 MYSQL_ROOT_PASSWORD,其值是数据库的 root 用户密码,正式的不要写这么简单。
  • -d mysql:8.3.0: 在后台运行(-d)指定的 Docker 镜像,这里是指定版本为 8.3.0 的 MySQL 镜像。
powershell 复制代码
docker run \
-p 3306:3306 \
--restart=always \
--name mysql \
--privileged=true \
-v /home/mysql/log:/var/log/mysql \
-v /home/mysql/data:/var/lib/mysql \
-v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:8.3.0  

测试连接,成功

6.进入容器修改密码(可选)

  1. 进入名为mysql的容器
powershell 复制代码
docker exec -it mysql bash
  1. 连接数据库并输入密码
powershell 复制代码
mysql -u root -p
  1. 修改密码为abcdef
powershell 复制代码
ALTER USER 'root'@'%' IDENTIFIED BY 'abcdef';
  1. 刷新权限
powershell 复制代码
FLUSH PRIVILEGES;
  1. 测试一下

  2. 退出

powershell 复制代码
# 退出MySQL
exit;
# 退出容器
exit;

7.关闭/重启容器(可选)

  1. 关闭容器
powershell 复制代码
# 等10s关
docker stop mysql
# 立即关
docker stop -t 0 mysql
  1. 检查一下
powershell 复制代码
# 查看所有容器,包括未启动的
docker ps -a
  1. 重新启动
powershell 复制代码
docker start mysql
  1. 再看一下,没有问题,搞定
powershell 复制代码
docker ps
相关推荐
瓯雅爱分享24 分钟前
Java+Vue构建的采购招投标一体化管理系统,集成招标计划、投标审核、在线竞价、中标公示及合同跟踪功能,附完整源码,助力企业实现采购全流程自动化与规范化
java·mysql·vue·软件工程·源代码管理
咋吃都不胖lyh3 小时前
SQL-多对多关系
android·mysql·数据分析
hello_2505 小时前
动手模拟docker网络-bridge模式
网络·docker·桥接模式
哲Zheᗜe༘6 小时前
了解学习MySQL数据库基础
数据库·学习·mysql
咋吃都不胖lyh6 小时前
MySQL 多表查询中,联合查询(UNION) 和子查询
mysql·数据分析
小醉你真好6 小时前
15、Docker Compose 安装ELK + Filebeat单机版
elk·docker·jenkins
先鱼鲨生7 小时前
【MySQL】认识数据库以及MySQL安装
数据库·mysql
周杰伦_Jay8 小时前
【终端使用MySQL】MySQL 数据库核心操作全解析:从入门到性能优化
数据库·mysql·性能优化
Gss7778 小时前
Docker 公有仓库使用、Docker 私有仓库(Registry)使用总结
docker·容器
暴富奥利奥8 小时前
完成docker方式的ros环境配置
linux·学习·docker·容器