文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

基于docker容器部署MySQL数据库

2023-09-06 19:47

关注

一,概要.... 2

二,环境准备.... 3

2.1,docker部署.... 3

三,使用docker部署mysql 6

3.1、创建数据存放目录.... 6

3.2、创建bridge网络并指定IP区间.... 6

3.3、Docker安装MySQL. 6

3.4、自定义配置.... 7

四,MySQL简单的配置.... 9

4.1、在容器 mysql 中开启一个交互模式的终端.... 9

4.2、mysql登录.... 9

4.3、给予远程用户所有表所有权限.... 9

4.4,验证Navicat远程连接MySQL. 10

五,数据库的导出备份.... 11

5.1,数据库备份.... 11

5.2,数据库还原.... 12

六,MySQL常用简单命令   13

一,概要

MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

二,环境准备

2.1,docker部署

# 安装docker的前提条件:

1) .必须是64位CPU架构的计算机,Docker目前不支持32位CPU;

2) .运行Linux3.8或更高版本内核,CentOS时内核必不小于3.10;

3) .内核必须支持一种合适的存储驱动,可以是Device Manager、AUFS、vfs、btrfs、以及默认的驱动Device Mapper中的一个;

4) .内核必须支持并开启cgroup和命名空间namespace功能。

# 使用下面的命令来查看centos的内核版本

uname –r

1.1 yum 部署docker

#注意: 这里是首次安装, 之前安装过的要先卸载旧版本的包哦!!!

更新yum包, 确保最新

yum update

# 卸载旧版本docker,新机器可以忽略

sudo yum remove docker \

                docker-common \

                docker-selinux \

                docker-engine

# 安装需要的依赖软件包

yum install -y yum-utils device-mapper-persistent-data lvm2

# 设置yum docker 源

//官方镜像

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

//阿里镜像

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 安装DockerCE

sudo yum install docker-ce

1.2 脚本安装

脚本安装(多用于测试和开发环境)

$ curl -fsSL https://get.docker.com -o get-docker.sh

$ sudo sh get-docker.sh

2.2 配置镜像加速器

# 以阿里云镜像加速器为例

注意:每个阿里云账户所持有镜像加速器均不同

针对Docker客户端版本大于 1.10.0 的用户

您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'

{

  "registry-mirrors": ["https://**20l7s9.mirror.aliyuncs.com"]

}

EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

三,使用docker部署mysql

3.1、创建数据存放目录

注意:这是数据库数据存放目录,保障下次重新安装数据不丢失

mkdir -p /data/mysql/data

chmod 777 /data/mysql/data

cd /data/mysql/data

3.2、创建bridge网络并指定IP区间

注意:多容器IP访问必备

#创建自定义网络

docker network create --driver bridge --subnet 172.0.0.0/16 ****

#查看已存在网络

docker network ls

3.3、Docker安装MySQL

端口:3306,初始密码:123456

数据存放目录:/dat/mysql/data

#创建mysql容器

此处以虚拟机部署安装为例,省略指定网络,IP

sudo docker run -d -p 3306:3306 \

--name mysql --privileged=true \

-v /data/mysql/data:/var/lib/mysql \

-e MYSQL_ROOT_PASSWORD=123456 \

mysql

注意:若不加字段--privileged=true可能会报权限错误,报错信息如下图所示:

 

3.4、自定义配置

1、创建配置存放映射目录

mkdir -p /data/mysql/data /data/mysql/logs /data/mysql/conf

chmod -R 755 /data/mysql/

2、将 MySQL 容器里的配置文件复制到该路径

docker cp mysql:/etc/mysql/my.cnf /data/mysql/conf

3、删除 MySQL 容器

docker rm -f mysql

4,重新创建MySQL容器

#重新创建MySQL容器将数据,日志,配置文件映射到本机

docker run -p 3306:3306 --name mysql8 --restart always \

-v /data/mysql/conf/my.cnf:/etc/mysql/my.cnf \

-v /data/mysql/logs:/logs \

-v /data/mysql/data:/var/lib/mysql \

-v --privileged=true \

-e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.31

5、编辑配置文件

vim /data/mysql/conf/my.cnf

# 最大连接数

max_connections=10000

# 设置默认时区

default-time_zone='+8:00'

#重启 MySQL 容器

docker restart mysql

四,MySQL简单的配置

4.1、在容器 mysql 中开启一个交互模式的终端

进入docker容器中

docker exec -it mysql /bin/bash

4.2、mysql登录

mysql -u root –p

4.3、给予远程用户所有表所有权限

GRANT ALL ON *.* TO 'root'@'%';

# 更改加密规则

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;

# 远程访问

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

# 刷新权限

flush privileges;

# 退出

exit

4.4,验证Navicat远程连接MySQL

五,数据库的导出备份

5.1,数据库备份

#进入容器

docker exec -it 【容器ID】 /bin/bash 

或者

docker exec -it 【容器ID】 bash

# 数据库导出 (docker 进入容器之后操作)

 # 常用

# 导出整个数据库(包括数据库中的数据)

mysqldump -u username -p 数据库 > 数据库.sql

# 导出数据库结构(不含数据)

mysqldump -u username -p -d 数据库 > 数据库.sql   

# 导出数据库中的某张数据表(包含数据)

mysqldump -u username -p 数据库 表 >  表.sql

导出到指定文件路径下

查看容器映射卷也就是挂载文件夹的地方(容器中的/var/lib/mysql路径会挂载到linux的某个目录下面,下面命令查看)

docker inspect name/id  | grep Mounts -A 20

# 导出到指定路径下为

   mysqldump -R -uroot -p 数据库 > /var/lib/mysql/数据库_bak.sql

# /var/lib/mysql/ 为容器中的路径,执行上面的命令之后查看该路径下面是否有数据库_bak.sql生成

# 相应的在Linux本地系统挂载路径下同样生成 数据库_bak.sql

# 备份完成之后退出容器

5.2,数据库还原

导入数据库(docker 进入容器之后操作)

mysql -uroot -p

use 【数据库名称】;

source 【sql文件】# 此处source 数据库的存放路径为Linux系统本地挂载MySQL的路径

例:source /data/MySQL/data/数据库.sql

# 导入数据到数据库

mysql -uroot -D数据库名

# 导入数据到数据库中得某个表

mysql -uroot -D数据库名  表名

六,MySQL常用简单命令

# 删除mysql命令

docker rm mysql

# 强制删除mysql容器

docker rm -f mysql

# 删除mysql镜像

docker rmi mysql

# 查看docker镜像

docker images

# 查看运行中容器

docker ps

# 查看所有容器

docker ps -a

# 删除容器

docker rm 容器ID或者容器名称

# 导出整个数据库(包括数据库中的数据)

mysqldump -u username -p 数据库 > 数据库.sql

# 导出数据库结构(不含数据)

mysqldump -u username -p -d 数据库 > 数据库.sql

# 导出数据库中的某张数据表(包含数据)

mysqldump -u username -p 数据库 表 >  表.sql

# 导出数据库中的某张数据表的表结构(不含数据)

mysqldump -u username -p -d 数据库 表 >  表.sql

# 恢复数据

mysql -uroot -p 【数据库名称】 < 【sql文件】

# docker 中的文件拷贝 (docker容器中的文件copy到本地文件) 

 docker cp 【容器ID】:【容器目录】【目标目录】

# 传文件进docker指定路径

# 执行下面命令上传文件到容器中的镜像的指定位置

docker cp /本地路径/文件名 容器ID or name:/上传路径

# 从docker传文件到实体机

同理,如果我们需要将docker中的文件传输到实体机上,我们只需要将之前的cp命令方向反过来

docker cp 容器ID:/上传路径 /路径/文件名

来源地址:https://blog.csdn.net/qq_52497256/article/details/128870731

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯