首页 > 数据库 >docker实战教程(十四):docker上安装mysql

docker实战教程(十四):docker上安装mysql

时间:2022-11-05 19:00:11浏览次数:48  
标签:容器 教程 1186367 mysql 3306 docker root

docker hub上查找mysql镜像

docker search mysql

从docker hub上拉取mysql镜像到本地(指定版本为5.7)

docker pull mysql:5.7


使用mysql 5.7镜像创建容器(也叫运行镜像)

简单版

1.使用mysql镜像

# -e:设置环境,这里设置的是密码
# -d:后台运行
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

如果执行过程中发现端口被占用,使用netstat -nplt找到对应的进程,kill -9杀掉进程即可

但是发现不起作用,因为再次使用netstat查看,发现mysqld服务还在,原来这个进程是服务器上的mysql,已经监听了服务器的3306端口,这时候把服务器mysqld服务关闭

这时候可以正常创建了

2.建库建表插入数据
进入容器

docker exec -it 2556d631382c /bin/bash

输入账号密码进入mysql

![](/i/l/?n=22&i=blog/1186367/202211/1186367-20221105175957018-1014353378.png)
创建数据库、数据表并插入数据
![](/i/l/?n=22&i=blog/1186367/202211/1186367-20221105180220989-1238589636.png)

3.外部window连接运行在docker上的mysql容器实例服务
如果连不成功,检查linux服务器上的防火墙是否关闭
![](/i/l/?n=22&i=blog/1186367/202211/1186367-20221105180722801-884982927.png)

4.问题
(1).插入中文数据试试,为什么会报错?
![](/i/l/?n=22&i=blog/1186367/202211/1186367-20221105181137033-967822841.png)

docker上默认字符集编码隐患
```linux
SHOW VARIABLES LIKE 'character%';

(2).删除容器后,里面的mysql数据怎么办

实战版

1.新建mysql容器实例

#  --privileged=true 容器数据卷的开启
# 挂了三个容器卷
docker run -d -p 3306:3306 --privileged=true -v /root/mysql/log:/var/log/mysql -v /root/mysql/data:/var/lib/mysql -v /root/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7

2.新建my.cfg
通过容器卷同步给mysql容器实例

[root@k8scloude1 tmp]# cd /root/mysql/conf/
[root@k8scloude1 conf]# ls -l
total 0
[root@k8scloude1 conf]# vim my.cnf
[client]
default_character_set=utf8
[mysqld]
collation_server=utf8_general_ci
character_set_server=utf8

3.重新启动mysql容器实例再重新进入并查看字符编码

docker restart mysql
docker exec -it mysql /bin/bash
mysql -u root -p

4.再新建库建表插入中文测试

5.结论
之前的DB无效,修改字符集操作+重启mysql容器实例之后的DB有效,需要重建
结论:docker安装完mysql并run出容器后,建议请先修改完字符集编码后再新建mysql库、表,插入数据

6.数据问题
假如把mysql容器删除,重新创建并启动一个新的容器

这时候进入mysql中,发现它里面的数据还在,这是因为数据已经挂载到了本地的/root/mysql/data目录下,实现了数据备份

标签:容器,教程,1186367,mysql,3306,docker,root
From: https://www.cnblogs.com/my_captain/p/16860851.html

相关文章

  • MySql如何不插入重复数据
    向数据库的插入值时,需要判断插入是否重复,然后插入。这种操作怎么提高效率下面说说一些解决方案1、insertignoreinto当插入数据时,如出现错误时,如重复数据,将不返回错......
  • robotframework自动化测试框架实战教程:测试数据整理工具(Robottiy)
    *内置的Tidy工具在RobotFramework4.1中被弃用,取而代之的是新的增强型外部Robottiy工具。它在RobotFramework5.0中被完全删除。安装pipinstallrobotframework-tidy......
  • 以太坊智能合约编程之菜鸟教程
    基本概念了解这些名词是一个不错的开始:公钥加密系统。 Alice有一把公钥和一把私钥。她可以用她的私钥创建数字签名,而Bob可以用她的公钥来验证这个签名确实是用Alice的私......
  • robotframework自动化测试框架实战教程:测试数据文档工具(Testdoc)
    生成文档的数据源可以是单个文件,单个目录,也可以是多个文件和目录.所有这些情况,最后那个参数都必须是最终文档输出要写入的文件.基本用法python-mrobot.testdoc......
  • mysql 8系备份学习总结
    一、背景:1、 PerconaXtrabackup8.0.25不支持低于MySQL8.0的备份(因为MySQL8.0在数据字典、redolog中和之前版本不兼容),因此2.4版本的也不支持8系的备份     ......
  • 解决在idea中使用springMvc向mysql写入中文数据乱码
    相关设置:1、idea编码格式设置:   2、MySQL的相关编码格式设置:修改前编码:无用操作:之前通过命令行修改编码格式:setcharacter_set_client=utf8......
  • 【秀米教程5】点击动作
    点击图片进行跳转点击右边的方块,将出出现一些控件的边框点击图片的边框——点击图中的链接——选择类型:网页链接点击图片播放音乐点击右边的方块,将出出现一些控件......
  • docker常用命令(三)
    帮助启动类命令启动docker:systemctlstartdocker停止docker:systemctlstopdocker重启docker:systemctlrestartdocker查看docker'状态systemctlstatusdocke......
  • Centos7安装MySQL
    一、卸载系统自带的mariadb1、查看系统自带的mariadbrpm-qa|grepmariadb   2、卸载rpm-e--nodeps mariadb-libs-5.5.68-1.el7.x86_64二、mysql安装1、......
  • MySQL高级3【性能分析工具-索引优化-查询优化】尚硅谷
    第09章性能分析工具的使用1.数据库服务器的优化步骤当我们遇到数据库调优问题的时候,该如何思考呢?这里把思考的流程整理成下面这张图。整个流程划分成了观察(Showstat......