Docker安装mysql

Posted by linhuanjie on 2019-01-28

环境

时间: 2019-01-28 20:04:46
系统: Ubuntu 18.04 LTS
docker 18

获取镜像(’[:8.0]’可有可无,默认会pull最新版本)

docker pull mysql[:8.0]

新建容器

1
2
3
runoob@runoob:~/mysql$ docker run -p 3306:3306 --name mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
21cb89213c93d805c5bacf1028a0da7b5c5852761ba81327e6b99bb3ea89930e
runoob@runoob:~/mysql$

命令说明:

  • -p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。
  • -v -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。
  • -v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。
  • -v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。
  • -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。

查看容器启动情况

1
2
3
runoob@runoob:~/mysql$ docker ps 
CONTAINER ID IMAGE COMMAND ... PORTS NAMES
21cb89213c93 mysql:5.6 "docker-entrypoint.sh" ... 0.0.0.0:3306->3306/tcp mymysql

启动后使用远程工具连接会报错

1
plugin caching_sha2_password could not be loaded

解决方法

  1. 进入mysql

    1
    docker exec -it mysql /bin/bash
  2. 运行以下mysql命令

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    //登录数据库

    mysql -uroot -p{your password}
    //使用mysql数据库
    mysql>use mysql

    //修改数据库
    mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

    //重新修改密码后可连接成功
    mysql> alter user 'root'@'%' identified by '123456';

    //刷新数据库
    mysql> flush privileges;