我爱编程

MySQL容器技术

2018-03-06  本文已影响0人  天夭夭

前提:安装好Docker服务。

1、拉去镜像

    docker pull mysql/mysql-server:tag 默认版本5.7.21

    docker pull mysql/mysql-server:5.6 版本5.6.39

2、启动一个实例

    docker run -d  --name=mysql  -p 3306:3306 mysql/mysql-server

3、查看初始化密码

    docker logs mysql 2>&1 | grep GENERATED

4、用获取到的密码登录数据库,并修改root密码

    docker exec -it mysql mysql -uroot -p

        mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';

5、从宿主机访问数据库容器

    docker exec -it mysql bash

6、启动时配置MySQL

docker run -d  --name=mysql  -p 3306:3306 mysql/mysql-server--character-set-server=utf8mb4 --collation-server=utf8mb4_col

备注:以上参数效果是使用 utf8mb4默认字符集和 utf8mb4_col数据库的默认排序规则

7、将增量数据映射到宿主机,达到持久数据效果

    docker run -d  --name=mysql  -p 3306:3306 -v /path:/var/lib/mysql  mysql/mysql-server

备注:1、这样做的原因是容器一旦被删除,容器里的数据也将会丢失,这对于数据库来说是不能接受的。所以应当将其映射到宿主机中。

           2、宿主机中的/path目录路径 权限应该是  mysql:mysql 且为755

8、将配置文件映射到宿主机,达到配置更改效果

    docker run -d  --name=mysql  -p 3306:3306 -v /root/docker_data:/var/lib/mysql -v /root/mysql_conf/my.cnf:/etc/my.cnf  mysql/mysql-server

备注:1、

           2、宿主机中my.cnf必须已经存在[mysqld]  user=mysql  ;即允许用户为mysql

9、运行其他初始化脚本

    如果在创建数据库后立即想要在数据库上运行任何脚本.sh或 .sql脚本,可以将它们放入主机目录,然后将该目录挂载 /docker-entrypoint-initdb.d/到容器内。

    docker run -d  --name=mysql  -p 3306:3306 -v  /path:/docker-entrypoint-initdb.d mysql/mysql-server

备注:已目录的形式将初始化脚本挂载进初始化目录中;此项笔者暂时没场景测试,还不知其能达到的效果。

10、从另一个Docker容器中的应用程序连接到MySQL

    方法1、以link方式即可(推荐)

    方法2、通过容器IP直接连接(不推荐),可能存在重启后更改IP的情况

    方法3、将3306端口映射到宿主机上(不推荐),采取该方式一定要配置好宿主机的防火墙规则和MySQL的连接权限,否则安全性将非常低。

    以上内容均参考MySQL的官方安装文档,笔者一直未将MySQL放置于容器中,总觉得没必要,或者说现在还没适合的场景来如此使用。

参考文件:https://dev.mysql.com/doc/refman/5.7/en/docker-mysql-more-topics.html

上一篇下一篇

猜你喜欢

热点阅读