ubuntu基于docker-compose部署mysql5.7和mysql8.0

       docker-compose部署系统简单方便,出现问题也可以快速重来。mysql5.7和mysql8.0是两个比较流行的mysql版本。简单部署记录下来,供大家参考。

1、准备docker-compose环境

      安装docker.io和docker-compose

sudo apt install docker.iosudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose# Apply executable permissions to the binary
sudo chmod +x /usr/local/bin/docker-compose# Verify the installation
docker-compose version

    mysql的docker-compose安装需要my.cnf配置文件和docker-compose.yml文件,下面分别介绍

2、mysql 5.7的安装

my.cnf文件如下

[mysql]
#mysql客户端默认字符集
default-character-set=utf8[mysqld]
# 设置3306端口
port = 3306
# 允许最大连接数
max_connections=1000
# 设置mysql服务端默认字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 缓存大小
sort_buffer_size=256MB
#设置为东八区(北京时间)
explicit_defaults_for_timestamp=true
default-time_zone='+8:00'

docker-compose.yml文件如下

services:mysql:image: mysql:5.7container_name: mysqlports:- 3306:3306volumes:- ./mysql:/var/lib/mysql- ./my.cnf:/etc/mysql/my.cnfenvironment:MYSQL_ROOT_PASSWORD: "root"restart: alwaysprivileged: true

ports的端口映射,第一个是主机端口,第二个是容器内的端口(my.cnf中的port指定),容器内的端口尽量使用默认值,根据需要调整主机端口即可。

volumes用于挂载配置文件和数据目录,./mysql表示当前目录下的mysql子目录,也可以用绝对路径指定

保存编辑后,执行sudo docker-compose up -d中后台启动容器。

也可以分步骤,先执行docker-compose pull拉取,然后执行docker-compose up执行,没问题了再转为后台运行。

3、mysql8.0的安装

my.cnf文件如下

[mysqld]
default-time_zone='Asia/Shanghai'
datadir=/var/lib/mysqldefault-storage-engine=INNODB
character_set_server=utf8
lower_case_table_names=1
table_open_cache=128
max_connections=2000
max_connect_errors=6000
innodb_file_per_table=1
innodb_buffer_pool_size=1G
max_allowed_packet=64M
transaction_isolation=READ-COMMITTED
innodb_flush_method=O_DIRECT
innodb_lock_wait_timeout=1800
innodb_flush_log_at_trx_commit=0
sync_binlog=0
group_concat_max_len=1024000
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
skip-name-resolve[mysql]
default-character-set=utf8[mysql.server]
default-character-set=utf8

docker-compose.yml文件如下

services:mysql:image: mysql:8.0container_name: mysql80ports:- 13306:3306volumes:- ./mysql:/var/lib/mysql- ./my.cnf:/etc/mysql/my.cnfenvironment:MYSQL_ROOT_PASSWORD: "root"restart: alwaysprivileged: true

    升级到8.0后连接MySQL数据库的时候,如果报错内容如下:“Public Key Retrieval is not allowed”,原因是mysql 8.0 默认使用 caching_sha2_password 身份验证机制 (即从原来mysql_native_password 更改为 caching_sha2_password。)

    从 5.7 升级 8.0 版本的不会改变现有用户的身份验证方法,但新用户会默认使用新的 caching_sha2_password 。 客户端不支持新的加密方式。 修改用户的密码和加密方式。

方案一:

在命令行模式下进入mysql,输入以下命令:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

或者

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

方案二:

在配置数据源的时候直接将属性allowPublicKeyRetrieval设置为true即可

4、其他

     外部访问需要开放对应的防火墙端口

     如果有多个版本mysql运行,docker-compose.yml中的container_name名称不能重复,可以加上版本,如mysql80。多个mysql的主机端口也不能重复,上面示例中一个使用3306,一个使用13306。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/58697.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

conda的对应环境下安装cuda11.0和对应的cudnn

在 Conda 环境中安装 CUDA 11.0 和对应的 cuDNN,可以按照以下步骤进行: 一. 环境配置 1. 创建 Conda 环境 首先,创建一个新的 Conda 环境(可选): conda create -n myenv python3.8 conda activate myen…

每天五分钟深度学习pytorch:基于pytorch搭建普通全连接神经网络

本文重点 本文我们通过pytorch搭建普通的全连接神经网络,这里我们就不介绍什么是全连接神经网络了,如果不知道的可以看我的机器学习专栏,或者深度学习专栏,它们对全连接神经网络都进行了简单的介绍。 代码 import torch from torch import nn class ThreeNet(nn.Module)…

python opencv1

一、基本参数 OpenCV的全称是Open Source Computer Vision Library,是一个开放源代码的计算机视觉库。 安装:pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple imprort cv2 1、显示窗口 cv2.namedWindow(winname, flagsNone) :w…

unity学习-异步场景加载

我们的项目在加载场景的时候如果需要加载的场景过大的话就会卡很久, 我们可以摒弃掉一定要到最后才加载下一个场景的观念,可以将加载场景的任务设置在任何地方,放在携程函数下,加载场景的任务和游戏运行任务同时进行 这叫做异步…

故障诊断 | MTF-TLSSA-DarkNet-GRU-MSA迁移学习故障识别程序(t分布+莱维飞行改进麻雀优化)

故障诊断 | 故障诊断实例代码 目录 故障诊断 | 故障诊断实例代码效果一览基本介绍程序设计参考资料 效果一览 基本介绍 利用了迁移学习和多项技术改进,包括麻雀搜索法、DarkNet19、GRU、多头注意力机制等,以提高故障识别的准确性和效率 模型框架&#x…

【一起python】使用python实现学生管理系统

文章目录 📝前言🌠主函数man🌉菜单menu🌉添加学生信息🌉展示目前学生信息🌉查找学生🌉删除同学信息🌉退出程序 🌠python完整代码🚩总结 📝前言 &…

前缀和_560. 和为 K 的子数组

560. 和为 K 的子数组 #include <unordered_map> class Solution { public:int subarraySum(vector<int>& nums, int k) {int nnums.size();unordered_map<int,int> hs;int sum0,re0;hs[0]1;for(int i0;i<n;i){sumnums[i];if(hs.count(sum-k)) rehs[s…

(转载)Tools for Learning LLVM TableGen

前提 最近在学习有关llvm的东西&#xff0c;其中TableGen占了一部分&#xff0c;所以想特意学习下TableGen相关的语法。这里找到了LLVM官网的一篇介绍TableGen的博客&#xff0c;学习并使用机器翻译为中文。在文章的最后也添加了一些学习TableGen的资源。 原文地址&#xff1…

excel表格文字识别-ocr表格文字提取api接口集成-python

表格文字识别接口的集成示例通常包含几个关键步骤&#xff0c;从接入API接口到最终数据处理和展示。以下是翔云表格文字识别接口的一个基本集成流程示例&#xff1a; 1. 获取接口信息 在开始集成前&#xff0c;请确保已经获取了表格文字识别API的接口文档&#xff0c;并了解该接…

Python酷库之旅-第三方库Pandas(182)

目录 一、用法精讲 841、pandas.api.types.is_complex函数 841-1、语法 841-2、参数 841-3、功能 841-4、返回值 841-5、说明 841-6、用法 841-6-1、数据准备 841-6-2、代码示例 841-6-3、结果输出 842、pandas.api.types.is_float函数 842-1、语法 842-2、参数 …

CSS基础学习篇——选择器

学习文档连接&#xff1a;CSS层叠样式表 1.全局选择器&#xff1a;* * {margin: 0;padding: 0;font-size: 18px; }2.类&#xff08;clss&#xff09;选择器&#xff0c;以 . 开头 .container {display: flex;justify-content: space-around;align-items: center;width: 1200…

Marin说PCB之电源的Surface Current Density知多少?

小编我是一位资深的国漫迷&#xff0c;像什么仙逆&#xff0c;斗破&#xff0c;斗罗&#xff0c;完美世界&#xff0c;遮天&#xff0c;凡人修仙传&#xff0c;少年歌行等&#xff0c;为了可以看这些视频小编我不惜花费了攒了很多年的私房钱去开了这个三个平台的会员啊&#xf…

CSS中display和visibility的区别

在 CSS 中&#xff0c;display 和 visibility 是两个用于控制元素显示和布局的属性&#xff0c;但它们的作用和效果是不同的。以下是它们的主要区别&#xff1a; 1.display 定义&#xff1a;display 属性用于控制元素的显示类型和布局行为。 常见值&#xff1a; none&#…

计算机毕业设计——ssm-基于SSM框架的校园爱心公益平台的设计与实现-演示录像2021

作者&#xff1a;程序媛9688开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等。 &#x1f31f;文末获取源码数据库&#x1f31f;感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff08;免费咨询指导选题&#xff09;&#xff0…

Oracle视频基础1.3.3练习

1.3.3 检查数据库启动情况 ps -ef | grep oracle启动数据库 sqlplus /nolog conn / as sysdba修改 fast_start_mttr_target 参数为初始值-50&#xff0c;缺省 scope 和 sid&#xff0c;查看修改结果 show parameter fast; alter system set parameter 250; show parameter fa…

CSS flex布局- 最后一个元素占满剩余可用高度转载

效果图 技术要点 height父元素必须有一个设定的高度flex-grow: 1 flex 盒子模型内的该元素将会占据父容器中剩余的空间F12检查最后一行的元素&#xff0c;高度就已经改变了&#xff1b;

LlamaIndex框架学习-提示词的几种使用模式

定义自定义提示词 定义自定义提示词就像创建格式字符串一样简单。 from llama_index.core import PromptTemplatetemplate ("We have provided context information below. \n""---------------------\n""{context_str}""\n------------…

基于vue框架的的驾校预约管理系统设计d5tq3(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,驾校教练,车辆信息,报名信息,学员信息,考试预约,教学课程,教练评价,考试成绩,练车预约,报修申请,维修信息,课程类型,车辆类型 开题报告内容 基于Vue框架的驾校预约管理系统设计开题报告 一、项目背景与意义 随着驾驶培训行业的快…

shell脚本编写注意细节 ==、=等的区别

文章目录 和的使用主要区别小结 Shell脚本要注意的细节1. 变量引用和空格处理2. [[ ... ]] vs [ ... ]3. 使用-n和-z来检测变量是否为空4. 整数运算和浮点运算5. 避免使用反引号执行命令6. for循环中的命令替换7. 使用trap来清理临时文件8. 避免使用硬编码路径9. 使用-eq、-lt、…

Docker Swarm简介

注意事项 Swarm 模式是用于管理 Docker 守护进程集群的一项高级特性。如果你打算将 Swarm 用作生产运行时环境&#xff0c;那就使用 Swarm 模式。如果你不打算使用 Swarm 进行部署&#xff0c;可改用 Docker Compose。如果正在为 Kubernetes 部署进行开发&#xff0c;可以考虑使…