Docker之安装MySQL

Posted 码之优雅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker之安装MySQL相关的知识,希望对你有一定的参考价值。

Docker容器之安装mysql


1.拉取mysql镜像

docker pull mysql
提示:此处拉取最新版本镜像。

2.通过镜像创建容器
根据需求创建Mysql容器(此处我们选择自定义映射端口创建容器):
  
    
    
  
#自定义Mysql容器映射端口:3639 docker run --name mysqlserver -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=Lxw888888.. -d -i -p 3963:3963 mysql
#默认Mysql容器映射端口:3306 docker run --name mysqlserver -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d -i -p 3306:3306 mysql
提示:映射端口即对外部navicat开放连接的端口,为了安全通常同自定义映射端口的方式创建容器。
拓展:查看docker下的容器
  
    
    
  
cd /var/lib/docker/containers/

3.进入容器
  
    
    
  
docker exec -it mysqlserver bash
提示:mysqlserver为容器名。

4.配置Mysql容器映射端口( 解决 Navicat连接10061错误)
默认3306端口(由于默认端口配置简单,此处简单讲解):
#进入容器docker exec -it mysqlserver bash#连接Mysql容器中的Mysqlmysql -uroot -p#连接到mysql容器的mysqluse mysql;#选定表select host,user from user;#外部navicat连接授权和设置密码ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'navicat连接的密码';#刷新权限flush privileges;

自定义端口(为了安全不建议使用默认端口):
自定义映射端口时需要在Mysql容器/etc/mysql/文件夹下的my.cnf文件追加内容。 以便后续操作, 我们需要提前给Mysql容器安装好vim。
当然也可以将docker容器中的文件copy出来,编辑好之后再copy会容器中覆盖进行原文件。此处我们使用前者。
容器安装vim命令:
步骤一:apt-get update步骤二:apt-get install vim

(1)使用vim给 my.cnf 追加内容
bind-addrees = 0.0.0.0port = 3963
Docker之安装MySQL

(2)重启容器
docker restart 容器ID

拓展:copy的方式:
  
    
    
  
#将容器中的my.cnf文件copy到宿主主机中 docker cp 9035681ac86e:/etc/mysql/my.cnf /home #追加内容 bind-addrees = 0.0.0.0 port = 3963 #copy到Mysql容器/etc/mysql/文件夹下进行覆盖 docker cp /home/my.cnf 9035681ac86e:/etc/mysql/
Docker之安装MySQL
参考:
https://blog.csdn.net/weixin_41866607/article/details/107181998  
https://www.cnblogs.com/jiefu/p/12204555.html


忘记root密码解决方案

必读:

在docker中忘记Mysql密码时。我们需要在docker容器中的/etc/mysql/conf.d文件夹下的docker.cnf文件追加skip-grant-tables。追加后登录容器中的mysql无需密码,这样我们就可以修改密码了。修改完密码之后再将追加的skip-grant-tables注释掉重启Mysql容器即可。

在docker容器中是不能直接更改docker容器的文件,对此我们有两个解决方案:

1.安装vim后在容器编辑docker.cnf文件。

容器安装vim
步骤一:apt-get update
步骤二:apt-get install vim
2.将 docker.cnf文件从docker容器中copy出来编辑完毕后再copy回去(推荐)。
由于vim安装的镜像在国外,本人百度N次尝试无果所以推荐使用第二种方式。教程如下:
1.将 容器中的docker.cnf文件copy到宿主主机中:
  
    
    
  
docker cp 321459c00aa0:/etc/mysql/conf.d/docker.cnf /home/
提示:321459c00aa0为Mysql容器ID
注意:实践发现容器中的 /etc/mysql/conf.d文件夹是不存在 docker.cnf文件的。所以我们可以先在宿主机中创建该文件然后再copy到容器的 /etc/mysql/conf.d文件夹 中。
2.在宿主机 home 下创建 docker.cnf文件,追加以下内容 :
  
    
    
  
[mysqld] skip-host-cache skip-name-resolve skip-grant-tables


3.将编辑好的文件copy到mysql容器的 /etc/mysql/conf.d文件夹下:
  
    
    
  
docker cp /home/docker.cnf 321459c00aa0:/etc/mysql/conf.d/
4.在Mysql容器中登录mysql并修改密码:
  
    
    
  
#进入Mysql容器 docker exec -it mysqlserver bash #连接mysql mysql #由于使用了skip-grant-tables我们需要先刷新权限 flush privileges; #修改密码 ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码'; #再次刷新权限 flush privileges; #退出:注意是退出不是exit quit

此时密码就修改完毕了!
5.注释掉 skip-grant-tables后重新copy到Mysql容器中进行覆盖:
  
    
    
  
docker cp /home/docker.cnf 321459c00aa0:/etc/mysql/conf.d/
6.重启Mysql容器
  
    
    
  
docker restart 容器ID
参考:
https://blog.csdn.net/weixin_39816332/article/details/103746846?utm_medium=distribute.pc_relevant.none-task-blog-title-3&spm=1001.2101.3001.4242
https://blog.csdn.net/qq939782569/article/details/87344602



以上是关于Docker之安装MySQL的主要内容,如果未能解决你的问题,请参考以下文章

玩大数据的你竟然不知道容器?——Docker入门之安装Docker及MySQL

Docker 技术系列之安装多版本Mysql5.6和Mysql5.7

docker技术之安装

Docker之安装

docker之安装配置

Docker入门之安装与使用