首页 > 数据库 >通过docker启动mysql

通过docker启动mysql

时间:2023-04-20 23:35:17浏览次数:40  
标签:容器 启动 -- exec 数据备份 mysql docker

一、启动mysql

1.下载mysql

docker pull mysql:5.7

# 具体可以去dockerhub中查找想要的版本

2.启动mysql

docker run    -d  -p 3306:3306  mysql:5.7  --name mysql01   -e  MYSQL_ROOT_PASSWORD="123"  -v /data/mysql/datadir:/var/lib/mysql  -v /data/mysql/my.cnf:/etc/mysql/my.cnf 

-d : 后台启动

-p:端口映射

--name:给容器起个名字

-v : 将宿主机和容器内的文件进行数据映射

-e: 指定环境变量

在实际生产环境中,通常还要加上--restart=always ,只要docker重新启动,那么容器就重新启动。

3.连接mysql

可以通过相应的数据库连接软件直接去连接启动的docker.

如果连接不上,那么可以进入容器内部:

# 进入容器内部
docker exec -it mysql01 mysql -uroot -p123 # 授权 GRANT ALL ON *.* TO 'root'@'%';
# 添加用户
ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

更改root的密码:

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

 # 刷新 

flush privileges;

4.进行数据备份

通过数据卷映射是将整个mysql中的文件系统映射到宿主机上,这种情况下如果要将这个容器内的数据库数据备份后迁移到另外一台服务器上,会将整个mysql的文件系统都要迁移过去,这里面可能有一些问题,比如迁移中如果某些文件少了,就可能启动不来,或者说mysql的版本不一致,也会导致出现问题。因此,通过可以通过下面的命令来进行数据备份:

a.利用mysql的mysqldump 

mysqldump -uroot -p123  --all-databases  >  /root/mysql/test.sql

--all-databases:所有数据库和库中的表

具体的操作:(docker中进行mysql的数据备份)

 docker exec id(msyql容器id)   sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql

备份指定库数据:

docker exec id(msyql容器id)   sh -c 'exec mysqldump databases 库名  -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/ehs.sql

备份指定库数据不要数据:

docker exec id(msyql容器id)   sh -c 'exec mysqldump   --no-data  --databases 库名  -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/ehs_test.sql

b.使用navicat进行数据备份

使用navicat进行数据备份

 

标签:容器,启动,--,exec,数据备份,mysql,docker
From: https://www.cnblogs.com/shaoyishi/p/17338773.html

相关文章

  • springboot启动自动执行sql脚本
    一:packagecom.lianzhu.bigdata.config;importlombok.extern.slf4j.Slf4j;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.boot.CommandLineRunner;importorg.springframework.boot.autoconfigure.EnableAutoConfigurati......
  • mysql数据库学习1-cmd中乱码怎么办
    由于今天学习orcal,于是便顺便看下mysql,不看不知道,一看吓一跳,自己竟然不知道怎么用cmd登陆mysql。荒废了如此!首先,我们在cmd中要输入用户名和密码,此处的登陆方式不同于sqlplus;mysql-u用户名-p密码在查看当前用户下的表列表时,发现有几个是乱码,因为实在navicat中创建的,所以在编......
  • ubuntu 安装挂载mysql
    因为有两台电脑,所以准备把ubuntu电脑作成对外服务提供,各种数据库,中间件都使用docker安装管理,然后挂载配置和日志到本地,提供给另一台电脑的对外服务。安装dockersudoaptsearchdockersudoaptinstalldocker.io看到很多安装都繁琐,我也还是在初步使用,如上安装暂时没有发现......
  • 玩一下mysql
     我电脑版本的mysql是5.7.29,此时InnoDB已经是默认的存储引擎存储引擎是基于表的,而不是数据库MyISAM和InnoDB有什么区别?MyISAM不支持事务和行级锁,不支持外键,最大缺陷为崩溃后无法安全恢复。Mysql日志:常见的日志都有什么用?(针对InnoDB引擎)错误日志、二进制日志、一般查询日志......
  • docker 创建jenkins
    #查看远程镜像dockersearchjenkins#拉取镜像dockerpulljenkins/jenkins#创建容器dockerrun-d-uroot-p8080:8080-p50000:50000--namejenkins-v~/jenkins_home:/var/jenkins_home-v/etc/localtime:/etc/localtimejenkins/jenkins  #查看密码#......
  • Junit启动测试mybatis xml文件BindingException: Invalid bound statement问题
    背景:1、正常启动,xml文件放在java目录和resource目录下均正常2、junit启动,xml文件放在resource目录下正常,放在java目录下报BindingException错误mapperlocation绑定地址为:"classpath:com/a/b/**/*.xml" 原因就在于绑定的地址有问题。 junit生成的test-classes下的测......
  • MySQL大量脏数据,如何只保留最新的一条?
    因为系统的一个Bug,导致数据库表中出现重复数据,需要做的是删除重复数据且只保留最新的一条数据。具体场景是这样的有张订单关联额外费用表,而且一个订单号(order_no)记录只能关联同一个费用(cost_id)一次,但是数据库中出现了同一个订单号关联同一个费用n次当然有人会说上面的问......
  • docker入门学习
    第一部分一、docker简介docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化容器时完全使用沙箱机制,互相之间不会有任何接口(类似IPhon......
  • MySQL 中常见的几种高可用架构部署方案
    MySQL中的集群部署方案前言MySQLReplicationInnoDBClusterInnoDBClusterSetInnoDBReplicaSetMMMMHAGaleraClusterMySQLClusterMySQLFabric参考MySQL中的集群部署方案前言这里来聊聊,MySQL中常用的部署方案。MySQLReplicationMySQLReplication是......
  • Mysql添加用户和设置权限的操作方法
    Mysql添加用户和设置权限的操作方法 更新时间:2022年07月28日09:42:08 作者:怪 咖@  https://www.jb51.net/article/257120.htm这篇文章主要介绍了Mysql添加用户和设置权限的操作方法,主要包括管理用户,权限控制的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具......