MySQL容器技术

作者: 天夭夭 | 来源:发表于2018-03-06 10:57 被阅读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

    相关文章

      网友评论

        本文标题:MySQL容器技术

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