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

系统环境

  • 操作系统: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 目录,就会发现多出了很多文件:

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容