美文网首页原创Docker技术分享
Docker部署数据本地持久化的mysql

Docker部署数据本地持久化的mysql

作者: IT锟 | 来源:发表于2018-10-02 13:04 被阅读12次

系统环境

  • 操作系统:mac
  • Docker版本:18.03.1-ce
  • docker-compose版本:1.21.2

一、拉取镜像

docker pull mysql

二、编写 docker-compose.yml 文件


version: '2'

networks:
  basic:

services:

   mysql:
    container_name: mysql
    image: mysql
    ports:
      - "3306:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=admin
    volumes:
      - ./mysql:/var/lib/mysql
    networks:
      - basic

这里需要说明下:

  • MYSQL_ROOT_PASSWORD 是设置mysql的登录密码,我们进入容器后登录mysql就得用这个密码。
  • volumes 挂载把容器里面的 /var/lib/mysql 目录挂载到本地的mysql目录下,如果这里不挂载到本地,那你重启容器时就会发现数据没了,这个很重要。
  • ports 这里配置mysql对外开放的端口,我这里就用默认的3306。

最后的文件结构就是这样的:

文件结构

三、启动

我们只需要cd到这个目录下执行:

docker-compose -f docker-compose.yml up -d mysql

看到上面的输出,就说明启动成功了,当然我们也可以再用

docker ps -a

去验证下,是否已经启动成功了

四、连接mysql

在终端输入连接命令:

mysql -h 127.0.0.1 -uroot -p

会发现报这个错误:

Enter password:
ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2): image not found

数据库查询user表,发现新版使用的,caching_sha2_password,可能我自己的终端不支持这种格式的密码。

解决方案:

1.进入mysql容器

docker exec -it mysql /bin/bash

2.进入mysql

mysql -uroot -padmin

3.修改密码

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

然后你再用root密码连接下刚才的mysql,就OK了。

此时你再看下你本地目录下面的 mysql 目录,就会发现多出了很多文件:

相关文章

网友评论

    本文标题:Docker部署数据本地持久化的mysql

    本文链接:https://www.haomeiwen.com/subject/ufzooftx.html