做网站用框架/网站seo优化心得
本示例采用bitnami的镜像进行安装MySQL
一、镜像搜索
先搜索一下mysql有哪些镜像
[root@localhost ~]# docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 14734 [OK]
mariadb MariaDB Server is a high performing open sou… 5621 [OK]
percona Percona Server is a fork of the MySQL relati… 623 [OK]
phpmyadmin phpMyAdmin - A web interface for MySQL and M… 919 [OK]
bitnami/mysql Bitnami MySQL Docker Image 105 [OK]
bitnami是一个比较好的镜像制作机构,其文档也比较完善,所以我们用bitnami/mysql作为示例来安装mysql,点击查看官网的说明文档链接
二、拉取镜像
拉取
[root@localhost ~]# docker pull bitnami/mysql
查看镜像
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
bitnami/mysql latest cc987bd64212 4 weeks ago 680MB
三、运行msyql容器
可以通过两种方式来运行我们的容器docker run命令行,或者docker-compose
通过docker run
官网的一个示例是这么运行
docker run \-e ALLOW_EMPTY_PASSWORD=yes \-v /path/to/mysql-persistence:/bitnami/mysql/data \bitnami/mysql:latest
我们需要将宿主机的一个目录
通过docker-compose
需要提前安装好docker-compose,如果不清楚怎么安装,点击这里查看安装说明
version: '2'networks:app-tier:driver: bridgeservices:mysql:image: 'bitnami/mysql:latest'environment:- ALLOW_EMPTY_PASSWORD=yesnetworks:- app-tiermyapp:image: 'YOUR_APPLICATION_IMAGE'networks:- app-tier
四、重要的环境变量
下面的示例中,展示了在docker run 启动容器时,通过-e参数设置了一系列的环境变量
docker run -d \-p 3306:3306 \--name mysql \-e ALLOW_EMPTY_PASSWORD=yes \-e MYSQL_ROOT_PASSWORD=yourrootpassword \-e MYSQL_CHARACTER_SET=utf8mb4 \-e MYSQL_COLLATE=utf8mb4_general_ci \-e MYSQL_ENABLE_SLOW_QUERY=1 \-e MYSQL_LONG_QUERY_TIME=5.0 \-e TZ=Asia/Shanghai \-v /path/to/persitence-data:/bitnami/mysql/data \-v /path/to/conf/my_custom.cnf:/opt/bitnami/mysql/conf/my_custom.cnf:ro \bitnami/mysql:latest
-d 后台运行
-p 3306:3306: 把docker镜像内部的3306端口映射到宿主机的3306端口.
--name mysql docker实例的名字
-e ALLOW_EMPTY_PASSWORD=yes 让mysql可以使用空密码进行链接. 即可以使用没有密码的账号.
-e MYSQL_ROOT_PASSWORD=yourrootpassword 设置好新mysql 实例的root 账号密码.
-e MYSQL_CHARACTER_SET=utf8mb4 把数据库的默认字符编码修改为utf8b4 , 如果不修改,默认的设置是utf8
-e MYSQL_COLLATE=utf8mb4_general_ci 同上.
-e MYSQL_ENABLE_SLOW_QUERY=1 开启慢查询日志.
-e MYSQL_LONG_QUERY_TIME=5.0 慢查询日志的query 时间阈值. 默认值是10.0秒, 这里设置为5秒
-e TZ=Asia/Shanghai 重要: 设置 Mysql Docker实例的系统时区. 如果不设置,其默认的时区将会为UTC
-v /path/to/persitence-data:/bitnami/mysql/data 持久化配置. 把mysql的数据存储到宿主机的相关的目录.
-v /path/to/conf/my_custom.cnf:/opt/bitnami/mysql/conf/my_custom.cnf:ro 把镜像内部的自定义的my_custom.cnf文件映射到宿主机上.且docker内部是只读权限.
bitnami/mysql:5.7.43-debian-11-r73 最后的镜像名称.
五、修改配置文件
bitnami的mysql配置文件是在容器的
/opt/bitnami/mysql/conf/my_custom.cnf 这个位置
如何修改这个配置文件呢
第一步:宿主机上新建一个my_custom.cnf 文件
以下的启动参数基本是一个可以实际使用的命令.但是还需要配置一些其它的额外参数. 这里贴出我的配置:
[mysqld]
max_allowed_packet = 256M
innodb_log_file_size = 256M
transaction-isolation = READ-COMMITTED
default_time_zone = '+08:00'
一个是修改最大的包大小,这个在一些特别大的数据插入与查询时会用到. RC 隔离级别是 Confluence所要求的. 最后的 default_time_zone = ‘+08:00’ 是为中国区的程序员准备的. 这样可以写入正确的默认值.
第二步:将宿主机上的文件挂载到容器内部
docker run --name mysql \-p 3306:3306 \-e ALLOW_EMPTY_PASSWORD=yes \-v /path/to/my_custom.cnf:/opt/bitnami/mysql/conf/my_custom.cnf:ro \-v /path/to/mysql-persistence:/bitnami/mysql/data \bitnami/mysql:latest
配置参数 - my_custom.cnf
六、日志
通过docker启动的,可以通过下面命令查看日志
docker logs mysql
通过docker-compose启动的,可以通过下面命令查看日志
docker-compose logs mysql
七、实操
我们给自己定下如下目标:
- 设置好数据存储的挂载到宿主机
- 设置好用户名和密码
- 端口号映射到宿主机的3306
- 自定义一个配置文件挂载到容器my_custom.cnf
- 系统重启时,自动启动mysql容器
- 容器被误删除时,数据还在
通过docker run 启动一个mysql容器,实现上述功能
准备工作
#拉取镜像
[root@localhost ~]# docker pull bitnami/mysql
#创建配置文件
[root@localhost ~]# mkdir -p /opt/bitnami/mysql/conf
[root@localhost ~]# cd /opt/bitnami/mysql/conf
[root@localhost conf]# touch my_custom.cnf
[root@localhost conf]# vim my_custom.cnf
[root@localhost conf]# cat my_custom.cnf
#配置文件如下
[mysqld]
max_allowed_packet = 256M
innodb_log_file_size = 256M
transaction-isolation = READ-COMMITTED
default_time_zone = '+08:00'
#创建一个挂载目录
[root@localhost conf]# mkdir -p /bitnami/mysql/data
#设置目录和文件的权限
[root@localhost data]# chmod 777 /bitnami/mysql/data/
[root@localhost data]# chmod 777 /opt/bitnami/mysql/conf/my_custom.cnf
运行容器
其中–restart=always表示,重启系统后,只要docker进程自动启动,那就可以把mysql启动起来
docker run -d \-p 3306:3306 \--name mysql \##--restart=always \-e ALLOW_EMPTY_PASSWORD=yes \-e MYSQL_ROOT_PASSWORD=123456\-e MYSQL_CHARACTER_SET=utf8mb4 \-e MYSQL_COLLATE=utf8mb4_general_ci \-e TZ=Asia/Shanghai \-v /bitnami/mysql/data:/bitnami/mysql/data \-v /opt/bitnami/mysql/conf/my_custom.cnf:/opt/bitnami/mysql/conf/my_custom.cnf:ro \bitnami/mysql:latest
查看一下日志,主要看看有没有报错啥的,有报错的话,根据报错信息,修改上面的启动命令,比如环境变量有没有设置错的
#先看有没有启动成功
[root@localhost data]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9f8eadad1226 bitnami/mysql:latest "/opt/bitnami/script…" About a minute ago Up About a minute 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp mysql
#再查看日志
[root@localhost conf]# docker logs mysql
mysql 20:54:45.86 INFO ==>
mysql 20:54:45.86 INFO ==> Welcome to the Bitnami mysql container
mysql 20:54:45.86 INFO ==> Subscribe to project updates by watching https://github.com/bitnami/containers
mysql 20:54:45.86 INFO ==> Submit issues and feature requests at https://github.com/bitnami/containers/issues
mysql 20:54:45.86 INFO ==>
mysql 20:54:45.86 INFO ==> ** Starting MySQL setup **
mysql 20:54:45.90 INFO ==> Validating settings in MYSQL_*/MARIADB_* env vars
mysql 20:54:45.90 WARN ==> You set the environment variable ALLOW_EMPTY_PASSWORD=yes. For safety reasons, do not use this flag in a production environment.
mysql 20:54:45.90 ERROR ==> root user is already created in the database and you can't use it as username for user creation.
...略...
查看一下我们的宿主机的挂载目录,是不是有了数据库的文件了
可以看到文件都有了
[root@localhost data]# pwd
/bitnami/mysql/data
[root@localhost data]# ls -al
总用量 95700
drwxrwxrwx. 7 root root 4096 12月 27 08:13 .
drwxr-xr-x. 3 root root 18 12月 27 07:53 ..
-rw-r-----. 1 1001 root 56 12月 27 08:12 auto.cnf
-rw-r-----. 1 1001 root 1814 12月 27 08:13 binlog.000001
-rw-r-----. 1 1001 root 180 12月 27 08:13 binlog.000002
-rw-r-----. 1 1001 root 157 12月 27 08:13 binlog.000003
-rw-r-----. 1 1001 root 48 12月 27 08:13 binlog.index
-rw-------. 1 1001 root 1680 12月 27 08:12 ca-key.pem
-rw-r--r--. 1 1001 root 1108 12月 27 08:12 ca.pem
-rw-r--r--. 1 1001 root 1108 12月 27 08:12 client-cert.pem
-rw-------. 1 1001 root 1680 12月 27 08:12 client-key.pem
-rw-r-----. 1 1001 root 196608 12月 27 08:13 '#ib_16384_0.dblwr'
-rw-r-----. 1 1001 root 8585216 12月 27 08:13 '#ib_16384_1.dblwr'
-rw-r-----. 1 1001 root 8001 12月 27 08:13 ib_buffer_pool
-rw-r-----. 1 1001 root 12582912 12月 27 08:13 ibdata1
-rw-r-----. 1 1001 root 12582912 12月 27 08:13 ibtmp1
drwxr-x---. 2 1001 root 4096 12月 27 08:13 '#innodb_redo'
drwxr-x---. 2 1001 root 187 12月 27 08:13 '#innodb_temp'
drwxr-x---. 2 1001 root 143 12月 27 08:13 mysql
-rw-r-----. 1 1001 root 30408704 12月 27 08:13 mysql.ibd
-rw-r-----. 1 1001 root 5 12月 27 08:13 mysql_upgrade_info
drwxr-x---. 2 1001 root 8192 12月 27 08:12 performance_schema
-rw-------. 1 1001 root 1680 12月 27 08:12 private_key.pem
-rw-r--r--. 1 1001 root 452 12月 27 08:12 public_key.pem
-rw-r--r--. 1 1001 root 1108 12月 27 08:12 server-cert.pem
-rw-------. 1 1001 root 1680 12月 27 08:12 server-key.pem
drwxr-x---. 2 1001 root 28 12月 27 08:13 sys
-rw-r-----. 1 1001 root 16777216 12月 27 08:13 undo_001
-rw-r-----. 1 1001 root 16777216 12月 27 08:13 undo_002
数据库操作
远程连接数据库,创建一个数据库,一个表
发现远程连接宿主机的3306端口连接不上,这是什么原因呢
查了一下,说的是,在 JDBC 连接串中加入 allowPublicKeyRetrieval=true 参数;
dbeaver连接设置如下,设置好后,连接成功了
通过dbeaver来创建一个数据库,一个表
CREATE DATABASE `test`;
USE test;
CREATE TABLE `project` (`id` bigint(20) NOT NULL,`name` varchar(255) NOT NULL,`status` bit(1) NOT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO test.project (id,name,status) VALUES(1,'项目1',1);
进入容器通过命令行查看数据
[root@localhost data]# docker exec -it mysql /bin/bash
I have no name!@9f8eadad1226:/$ mysql -uroot -p
Enter password:
...略...
mysql> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql> select * from project;
+----+---------+----------------+
| id | name | status |
+----+---------+----------------+
| 1 | 项目1 | 0x01 |
+----+---------+----------------+
1 row in set (0.00 sec)
mysql容器误删演练
重点:删除容器,宿主机的挂载文件不会删除
[root@localhost data]# docker stop mysql
mysql
[root@localhost data]# docker rm mysql
mysql
再重新启动容器
docker run -d \-p 3306:3306 \--name mysql \--restart=always \-e ALLOW_EMPTY_PASSWORD=yes \-e MYSQL_ROOT_PASSWORD=123456\-e MYSQL_CHARACTER_SET=utf8mb4 \-e MYSQL_COLLATE=utf8mb4_general_ci \-e TZ=Asia/Shanghai \-v /bitnami/mysql/data:/bitnami/mysql/data \-v /opt/bitnami/mysql/conf/my_custom.cnf:/opt/bitnami/mysql/conf/my_custom.cnf:ro \bitnami/mysql:latest
这次多了–restart=always,我们等会重启系统时,mysql会自动重启(前提开启docker进程自动启动 systemctl enable docker)
新建一个容器,指定数据文件挂载点,检查数据是否还在。经过测试,数据依然还在的。
服务器重启演练
前提开启docker进程自动启动
systemctl enable docker
重启操作系统,可以看到mysql随着系统启动,自动启起来了
到这里,我们的MySQL就安装完成了
思考
如果通过docker-compose,那这个yaml应该怎么写呢
version: '2'
services:mysql:image: 'bitnami/mysql:latest'environment:- ALLOW_EMPTY_PASSWORD=yes- MYSQL_USER=myuser- MYSQL_PASSWORD=my_password- MYSQL_AUTHENTICATION_PLUGIN=mysql_native_passwordports:- '15672:15672'volumes:- '/path/to/my_custom.cnf:/opt/bitnami/mysql/conf/my_custom.cnf'- '/path/to/mysql-persistence:/bitnami/mysql/data'
相关文章:

【docker实战】02 用docker安装mysql
本示例采用bitnami的镜像进行安装MySQL 一、镜像搜索 先搜索一下mysql有哪些镜像 [rootlocalhost ~]# docker search mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql …...

循环渲染ForEach
目录 1、接口说明 2、键值生成规则 3、组件创建规则 3.1、首次渲染 3.2、非首次渲染 4、使用场景 4.1、数据源不变 4.2、数据源组项发生变化 4.3、数据源数组项子属性变化 5、反例 5.1、渲染结果非预期 5.2、渲染性能降低 Android开发中我们有ListView组件、GridVi…...

纷享销客华为云:如何让企业多一个选择?
纷享销客携手华为云推出多项联合解决方案,为企业的数字化提供了一个新选择。12月12日,纷享销客&华为云联合解决方案发布会在北京举办。本次发布会以“「CRM云」让企业多一个选择”为主题,来自行业头部企业的CEO、CIO、业务负责人等&#…...

前端实现断点续传文件
公司要求实现的功能,大概思路是将上传的文件通过jsZip压缩后,进行切片,留一下总切片,当前片,并把这些数据给后端,至于前端的校验,是由Md5完成的,验证文件唯一性,这样下次…...

复试 || 就业day01(2023.12.27)算法篇
文章目录 前言两数之和存在重复元素 II好数对的数目总持续时间可被 60 整除的歌曲 前言 💫你好,我是辰chen,本文旨在准备考研复试或就业 💫文章题目大多来自于 leetcode,当然也可能来自洛谷或其他刷题平台 Ὂ…...

JavaWeb——JQuery
文章目录 JQuery 是什么?jQuery 的原理示意图JQuery 基本开发步骤jQuery 对象和 DOM 对象将dom对象转为JQuery对象jQuery 对象转成 DOM 对象jQuery 选择器基本选择器基础过滤选择器JQuery 是什么? 基本介绍 jQuery 是一个快速的,简洁的 javaScript 库,使用户能更方便地处理…...

Python教程:查询Py模块的版本号,有哪些方法?
1.查看模块内部的版本信息:如果你已经导入了该模块,可以查看模块内部的__version__属性来获取版本信息。例如,对于pandas模块,可以运行import pandas和print(pandas.version)来获取版本信息。 import pandas print(pandas.__vers…...

第一节 初始化项目
系列文章目录 第一节 初始化项目 文章目录 操作步骤 总结 操作步骤 打开cmd 输入 vue ui 在打开的网页中点击“创建”,复制文件夹路径并粘贴点击“在此创建新项目” 输入项目名称 点击下一步选择手动配置 选择babel、router、vuex、css pre-processors、 linter建…...

idea提示unable to import maven project
问题描述: idea导入maven依赖时提示unable to import maven project 打开log日志如下: 问题原因以及解决方案: maven版本与idea版本不兼容,切换maven版本即可...

【Spring】SpringBoot日志
文章目录 什么是日志日志的用途日志的使用如何打印日志日志级别日志框架门面模式(外观模式)日志级别的使用配置日志级别日志持久化配置日志的存储目录配置日志文件名配置日志文件分割 更简单的日志输出 什么是日志 在计算机领域,日志是一个记…...

HTML+CSS制作动漫绿巨人
🎀效果展示 🎀代码展示 <!DOCTYPE html> <html lang="en" > <head>...

AGV智能搬运机器人-替代人工工位让物流行业降本增效
在当今快速发展的世界中,物流业面临着巨大的挑战,包括提高效率、降低成本和优化工作流程。为了应对这些挑战,一种新型的自动化设备——智能搬运机器人正在崭露头角。本文将通过一个具体的案例来展示富唯智能转运机器人在实际应用中的价值。 案…...

【办公技巧】怎么批量提取文件名到excel
Excel是大家经常用来制作表格的文件,比如输入文件名,如果有大量文件需要输入,用张贴复制或者手动输入的方式还是很费时间的,今天和大家分享如何批量提取文件名。 打开需要提取文件名的文件夹,选中所有文件,…...

uniapp实现前端银行卡隐藏中间的数字,及隐藏姓名后两位
Vue 实现前端银行卡隐藏中间的数字 主要应用了 filters过滤器 来实现效果 实现效果,如图: <template><div><div style"background-color: #f4f4f4;margin:50px 0 0 460px;width:900px;height:300px;"><p>原来&#…...

HPCC:高精度拥塞控制
HPCC:高精度拥塞控制 文章目录 HPCC:高精度拥塞控制摘要1 引言1.1 背景1.2 现有CC的局限性1.3 HPCC的提出 2 研究动机2.1 大型RDMA部署2.2 RDMA目标2.3 当前RDMA CC中的权衡DCQCNTIMELY 2.4 下一代高速CC 3 技术方案3.1 INT3.2 HPCC设计3.3 HPPC的参数 4…...

centos 配置 git 连接 github
centos 配置 git 连接 github 首先安装 git 创建 ssh key ssh-keygen -t rsa复制公钥 cat ~/.ssh/id_rsa.pub # 打印出公钥内容然后复制配置 github 登录网页 github 账号;进入 setting;点击 SSH and GPG keys,点击 New SSH keytitile 随便填…...

SpringBoot发布项目到docker
Dockerfile FROM openjdk:11 # 作者 MAINTAINER chenxiaodong<2774398338qq.com># 安装 vim # RUN yum -y install vim# 环境变量 # 进入容器后的默认工作目录 ENV WORKPATH /usr/local/webapp ENV EXECFILE Docker2Application-0.0.1-SNAPSHOT.jarRUN mkdir -p $WORKPA…...

sheng的学习笔记-卷积神经网络
源自吴恩达的深度学习课程,仅用于笔记,便于自行复习 导论 1)什么是卷积神经网络 卷积神经网络,也就是convolutional neural networks (简称CNN),使用卷积算法的神经网络,常用于计…...

数据库:园林题库软件(《中国古代园林史》答题卷一 )
《中国古代园林史》答题卷一 填空题 1、中国古代园林曾被誉为“世界园林之母”。国际风景园林师联合会(IFLA)的创始人、著名风景园林师和教育家杰里柯爵士( Sir Geoffrey Alan Jellicoe)把中国古代园林和西亚园林以及古希腊园林列为世界三大园林体系之首。 2、中国古代园林是…...

upset 绘制
好久没有更新,今天来一个upset图的绘制 1.1 安装包 #绘制upset的包现在看来有三个 ## UpSet ### 最基本的upsetR包,使用方便,但是扩展不方便 devtools::install_github("hms-dbmi/UpSetR") ## complex-upset ### UpSet的升级款 支持ggplot2 devtools::install_git…...

声明 | 为打击假冒账号、恶意抄袭账号等诈骗活动,提升本账号权威,本博主特此郑重声明
声明 | 为打击假冒账号、恶意抄袭账号诈骗活动,提升本账号权威,本博主特此郑重声明 一、本账号为《机器学习之心》博主CSDN唯一官方账号,唯一联系方式见文章底部。 二、《机器学习之心》博主未授权任何第三方账号进行模型合作、程序设计、源…...

云计算:OpenStack 配置二层物理网卡为三层桥的接口
目录 一、理论 1.OpenStack 二、实验 1. Linux系统修改网卡 2.OpenStack 配置二层物理网卡为三层桥的接口 一、理论 1.OpenStack (1)概念 OpenStack是一个开源的云计算管理平台项目,是一系列软件开源项目的组合。由NASA(美国国家航空…...

Python sanic框架钉钉和第三方打卡机实现
同样还是需要开通钉钉应用这里就不错多说了 第一步:梳理逻辑流程 前提:打卡的机器是使用postgres数据库,由于因为某些原因,钉钉userId 我已经提前获取到了存放到数据库里。 1.用户打卡成功后,我们应该监听数据库进行查询…...

微信小程序性能优化
1. 代码包不包含插件大小超过 1.5 M 建议:小程序代码包单个包大小限制为2M。因此我们建议开发者在开发时,如果遇到单包体积大于1.5M的情况,可以采取分包的方式,把部分代码拆分到分包去,降低单个包的体积,提…...

java并发编程六 ReentrantLock,锁的活跃性
多把锁 一间大屋子有两个功能:睡觉、学习,互不相干。 现在小南要学习,小女要睡觉,但如果只用一间屋子(一个对象锁)的话,那么并发度很低 解决方法是准备多个房间(多个对象锁…...

深度学习 | DRNN、BRNN、LSTM、GRU
1、深度循环神经网络 1.1、基本思想 能捕捉数据中更复杂模式并更好地处理长期依赖关系。 深度分层模型比浅层模型更有效率。 Deep RNN比传统RNN表征能力更强。 那么该如何引入深层结构呢? 传统的RNN在每个时间步的迭代都可以分为三个部分: 1.2、三种深层…...

代理模式:中间者的故事
代理模式:中间者的故事 介绍需求分析代理模式代码实现代理模式整理和用途第一种用途第二种用途第三种用途第四种用途 总结 介绍 本文引用《大话设计模式》第七章节的内容进行学习分析,仅供学习使用 需求:小明拜托自己好朋友小王给他朋友小美…...

中间件系列 - Redis入门到实战(高级篇-多级缓存)
前言 学习视频: 黑马程序员Redis入门到实战教程,深度透析redis底层原理redis分布式锁企业解决方案黑马点评实战项目 中间件系列 - Redis入门到实战 本内容仅用于个人学习笔记,如有侵扰,联系删除 学习目标 JVM进程缓存Lua语法入…...

是德科技E9304A功率传感器
是德科技E9304A二极管功率传感器测量频率范围为9 kHz至6 GHz的平均功率,功率范围为-60至20 dBm。该传感器非常适合甚低频(VLF)功率测量。E系列E9304A功率传感器有两个独立的测量路径,设计用于EPM系列功率计。功率计自动选择合适的功率电平路径。为了避免…...

视频格式网络地址转换视频到本地,获取封面、时长,其他格式转换成mp4
使用ffmpeg软件转换网络视频,先从官网下载对应操作系统环境的包 注意:网络地址需要是视频格式结尾,例如.mp4,.flv 等 官网地址:Download FFmpeg window包: linux包: 如果下载缓慢,下载迅雷安装使用…...