2021-07-01 记mariadb数据库容器授权丢失的现象

最近在调试一个自动化部署脚本时,遇到mariadb数据库的一个问题:授权会消失。

过程是这样的。在用mariadb:10.6.2这个官方镜像运行容器之后,尝试判断show databases指令是否可执行,如果可以就认为容器已经起来了、可以使用了。没毛病吧。而且看日志显示了这样的信息:

mysqld: ready for connections.

更加确信数据库容器正常了。


随后创建数据库和赋予用户权限:

create database abc;
grant all on abc.* to abc@'%' identified by 'abc';

问题来了:不论是分成两个语句用mysql -e执行,还是放在一个sql文件里执行,还是放在容器的初始化目录/docker-entrypoint-initdb.d里执行,都有一定概率出现grant失效的现象。不是完全失效,有时候是成功的。直接的表现是,后续应用程序访问数据库,有时候成功,有时候报密码错误。一查用户表,发现没有添加用户。


后来怀疑是grant指令没有执行成功,于是在grant指令执行之后增加了一个show grants指令来检测,发现show grants是有数据的。用select * from mysq.user也能看到这个用户。但是后来应用程序访问的时候,授权莫名其妙消失了。

查了半天,头大了一圈。后来按照同事推荐的方法规避了,就是:预先创建好数据库,把数据目录保留下来。部署的时候直接映射到数据库容器里,就不需要重新创建和授权了。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值