Docker中安装MySQL--------【详细图解】

1.根据所需拉取镜像---------不指定版本会下载最新版

docker pull mysql:8.0.27

2.查看所拉取的镜像

docker images

 3.在/usr/local下创建docker、mysql目录

cd /usr/local

mkdir docker 

 mkdir mysql

4.进入mysql文件夹

cd mysql

5.创建config文件夹

mkdir config    

6.编写配置文件

vim my.cnf
 
 
[client]
# 端口号
port=3306
 
[mysql]
no-beep
default-character-set=utf8mb4
 
[mysqld]
# 端口号
port=3306
# 数据目录
datadir=/var/lib/mysql
# 新模式或表时将使用的默认字符集
character-set-server=utf8mb4
# 默认存储引擎
default-storage-engine=INNODB
# 将 SQL 模式设置为严格
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
#  最大连接数
max_connections=1024
# 表缓存
table_open_cache=2000
# 表内存
tmp_table_size=16M
# 线程缓存
thread_cache_size=10
# 设置大小写不敏感
lower_case_table_names=1
 
# myisam设置
myisam_max_sort_file_size=100G
myisam_sort_buffer_size=8M
key_buffer_size=8M
read_buffer_size=0
read_rnd_buffer_size=0
 
# innodb设置
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=1M
innodb_buffer_pool_size=8M
innodb_log_file_size=48M
innodb_thread_concurrency=33
innodb_autoextend_increment=64
innodb_buffer_pool_instances=8
innodb_concurrency_tickets=5000
innodb_old_blocks_time=1000
innodb_open_files=300
innodb_stats_on_metadata=0
innodb_file_per_table=1
innodb_checksum_algorithm=0
# 其他设置
back_log=80
flush_time=0
join_buffer_size=256K
max_allowed_packet=4M
max_connect_errors=100
open_files_limit=4161
sort_buffer_size=256K
table_definition_cache=1400
binlog_row_event_max_size=8K
sync_master_info=10000
sync_relay_log=10000
sync_relay_log_info=10000 

7.编写脚本

cd /usr/local/docker/mysql/
 
vim startMysql.sh 

docker run \
--name mysql \
-d \
-p 3306:3306 \
--restart unless-stopped \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
mysql:8.0.27

注意版本号和密码的修改

8.赋予权限

 chmod -R 777 startMysql.sh

9.启动脚本

./startMysql.sh 

10.我的MySQL 容器 (mysql:8.0.27) 处于 不断重启 (Restarting) 状态,这表明 MySQL 容器启动失败,通常是由于配置错误、权限问题或数据冲突导致的。

接下来开始问题排查!!!!!

11.查看日志

docker logs mysql 

问题原因

MySQL 8.0+ 容器默认需要访问 /var/lib/mysql-files 目录(用于 secure-file-priv 功能),但该目录在容器内不存在或权限不足。

解决方案

挂载 mysql-files 目录

# 1. 在宿主机创建目录并设置权限
mkdir -p /usr/local/docker/mysql/mysql-files
chown -R 999:999 /usr/local/docker/mysql/mysql-files  # MySQL容器用户UID=999

# 2. 重新运行容器时挂载该目录
docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=yourpassword \
  -v /usr/local/docker/mysql/data:/var/lib/mysql \
  -v /usr/local/docker/mysql/mysql-files:/var/lib/mysql-files \  # 新增挂载
  mysql:8.0.27

①清理旧容器

docker rm -f mysql 

②创建必要的目录

mkdir -p /usr/local/docker/mysql/{data,mysql-files}
chown -R 999:999 /usr/local/docker/mysql/* 

③修改脚本

vim startMysql.sh

docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=123456 \  # 替换为你的密码
  -v /usr/local/docker/mysql/data:/var/lib/mysql \
  -v /usr/local/docker/mysql/mysql-files:/var/lib/mysql-files \
  mysql:8.0.27 

④重新启动脚本

./startMysql.sh

⑤再次查看日志-------不报错了

 ⑥再次查看容器------启动成功

⑦确认Mysql容器的启动密码 

 # 查看容器启动时使用的环境变量
docker inspect mysql | grep MYSQL_ROOT_PASSWORD

⑧启动Mysql容器

⑨测试连接-------可连接成功~

### 基于Spring Boot的社区快递代取服务系统的架构设计与实现 #### 1. 需求分析 为了构建一个高效的社区快递代取服务系统,需深入理解当前市场上的痛点。现有的快递服务系统存在信息更新滞后、服务流程缺乏透明度和服务沟通障碍等问题[^3]。因此,新系统应着重解决这些不足。 #### 2. 功能模块划分 该系统可划分为多个核心功能模块: - **用户注册登录模块** 用户可以通过手机号或第三方平台账号快速完成注册和登录过程。 - **订单管理模块** 支持创建、查询、取消订单等功能;提供实时跟踪物流状态的服务。 - **支付结算模块** 整合多种在线支付方式,保障交易安全便捷。 - **客服支持模块** 提供即时通讯工具帮助客户解决问题并反馈意见。 - **数据分析报表模块** 对业务运营情况进行统计分析,辅助决策制定。 #### 3. 技术选型 考虑到项目的特性和长远发展,推荐采用如下技术栈: - 后端框架选用 `Spring Boot` ,其轻量级特性有助于加快开发速度; - 数据库方面则考虑使用关系型数据库 MySQL 来存储结构化数据; - 接口文档生成工具可以选择 Swagger 或者 Apifox 进行 API 文档自动生成; - 缓存机制引入 Redis 减少数据库压力提高访问效率; - 日志记录组件 Logback 方便调试排查错误日志。 #### 4. 系统架构图解 以下是简化版的三层架构模型描述: ``` +-------------------+ | 客户端 | +--------+----------+ | HTTP/HTTPS 请求响应循环 +--------v----------+ | 应用层 (API Server)| | | | - 控制器 | | - 服务 | | - DAO | +--------+----------+ | JPA/Hibernate ORM 映射实体类到表映射 +--------v----------+ | 持久层 (Database) | | | | - 表 | | - 视图 | +-------------------+ ``` #### 5. 关键代码片段展示 下面给出部分关键逻辑实现示例(以 Java 为例): ```java // User.java 实体对象定义 @Entity public class User { @Id private Long id; private String name; // getter setter 方法省略... } // UserController.java RESTful API 控制器接口 @RestController @RequestMapping("/users") public class UserController { @Autowired UserService userService; @GetMapping("/{id}") public ResponseEntity<User> getUserById(@PathVariable Long id){ Optional<User> userOpt = userService.findById(id); return userOpt.map(ResponseEntity::ok).orElseGet(() -> ResponseEntity.notFound().build()); } } ``` #### 6. 测试部署指南 项目完成后应当进行全面的功能测试确保各环节正常运作。之后可以借助 Docker 容器化技术打包应用程序及其依赖环境一并分发至生产环境中运行。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值