Docker中拉取的MySQL用户密码丢失【已解决】


参看:

  • 《MySQL必知必会》
  • https://my.oschina.net/u/2322202/blog/3090119

说来我真废物啊,刚搭建起docker中的mysql来,还没体验几天远程数据库,密码我给丢了,呜呜呜~

先说环境:MySQL5.7、阿里云Linux内核CentOS8、Docker中启动MySQL。

一、MySQL启动与挂载

挂载的作用: 使得外部Linux有docker中mysql的数据,当内部或外部数据变化的时候,会直接同步到另一处! 比如修改配置文件,直接修改外部的配置文件,就能直接映射到内部中生效。

在docker中,确定mysql中的非系统库及系统库是否有没有挂载

# Start mysql 5.7
docker run \
    -p 3306:3306 \
    -e MYSQL_ROOT_PASSWORD=123456 \
    --name mysql1 \
    -v /mydata/mysql/log:/var/log/mysql \
    -v /mydata/mysql/data:/var/lib/mysql \
    -v /mydata/mysql/conf:/etc/mysql \
	-d mysql:5.7

对上述指令进行分析:

/	# 换行
-p 3306:3306	# 端口映射, Linux端口:容器端口
--name mysql1	# 此容器名称
-e MYSQL_ROOT_PASSWORD=123456 # 修改配置,密码
-d mysql:5.7	# 后台运行mysql5.7
# 把容器内部的 /var/log/mysql 文件挂载到 Linux的/mydata/mysql/log上,Linux中会自动创建此目录
-v /mydata/mysql/log:/var/log/mysql

二、root密码丢失

核心思想:修改配置文件,不需要密码能进入MySQL,之后进行密码重置。下面就是我的解决方法:

注意看上面一项的文件挂载处:-v /mydata/mysql/conf:/etc/mysql,其中docke内部的MySQL的配置文件夹挂载本地的/mydata/mysql/conf文件夹下,所以我操作当前Linux系统的这个文件夹,即可实现docker内部的MySQL配置文件修改。(如果挂载到其他目录当然也可以)

# 进入当前的阿里云Linux
# 1.编写my.cnf配置文件(原来没有就会直接创建一个)
cd /
vi /mydata/mysql/conf/my.cnf

# 2.把以下数据写入上述文件中,保存退出
[mysqld]
skip-grant-tables
skip-networking

# 3.重新启动MySQL(mysql1是我启动MySQL时的name命名)
docker restart mysql1;

缓一下,接着看

# 4.进入当前mysql1容器
docker exec -it mysql1 bash;

# 5.进入MySQL
mysql -uroot -p  #直接回车,无密码

# 6.刷新权限
flush privileges;

# 7.修改root密码
alter user 'root'@'localhost' identified by '123456';

root用户的密码已经被修改了!

最后,还必须要做的一点是 删除前面的my.cnf配置文件(不删除本地可视化工具连接不了,我也不知道为什么嚄)

cd /
rm mydata/mysql/conf/my.cnf # y表示确认

三、其他用户密码丢失

其他用户密码丢失的话,最直接的方法就是删除此用户在创建一遍,但作为一个合格的开发人员,这样也不是办法,再说了这样做可能会有许多权限相关的配置得重新弄,非常的麻烦。言归正传,重置其他用户的密码。

查看本机用户列表

select user,host from mysql.user;

设置用户名为 pdh 的用户密码

alter user 'root'@'%' identified by '123456';

当然还可以使用其他的指令设置密码,比如使用set,update等,就不一一列举了。

这次我一定痛改前非!密码放在自己的备忘录里!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值