mysql是否应该被容器_MySQL容器技术

前提:安装好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放置于容器中,总觉得没必要,或者说现在还没适合的场景来如此使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值