docker版MySQL5.7重置root密码并授权localhost访问

2 篇文章 0 订阅
1 篇文章 0 订阅

启动docker版mysql5.7后,容器输出日志一直报错如下:

[Note] Access denied for user 'root'@'localhost' (using password: NO)

通常第一次启动mysql时,会生成随机密码,这里我就不管有没有密码,以及是哪个密码,直接重置root密码。

一、重置mysql root密码

  1. 确定mysql读取了哪个配置文件,通常读取配置文件的顺序是:/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf

后面的配置文件会覆盖前面的配置文件(如果有的话),先进入容器:

docker exec -it mysql /bin/bash

# 查看上面的几个配置文件是否存在,实际上只有第一个配置文件存在
ls /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
  1. 设置跳过密码验证
    按ctrl+d退出容器,复制配置文件并修改:
docker cp mysql:/etc/my.cnf ~/mysql.cnf

# 在[mysqld]下面添加一行内容:
# skip-grant-tables
vim ~/mysql.cnf

# 把文件拷贝回去,并进入容器查看是否添加成功
docker cp ~/mysql.cnf mysql:/etc/my.cnf
docker exec -it mysql /bin/bash
cat /etc/my.cnf | grep skip-grant-tables
  1. 重启mysql容器并重置密码
# ctrl+d退出容器
docker restart mysql

# 进入容器设置新密码
docker exec -it mysql /bin/bash
mysql -uroot

# 修改root密码
# 如果修改过程中报错,先退出mysql、退出容器,然后重启mysql:docker restart mysql,再重新进入容器
mysql> flush privileges;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

# 创建用户并授权访问
mysql> CREATE USER 'nacos'@'localhost' IDENTIFIED BY '123456';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'nacos'@'localhost';
mysql> flush privileges;
  1. 去掉skip-grant-tables
# 退出mysql和容器
mysql> exit
exit

vim ~/mysql.cnf
# 注释掉skip-grant-tables

# 拷贝回去 并重启mysql容器
docker cp ~/mysql.cnf mysql:/etc/my.cnf
docker restart mysql

二、测试mysql连接

进入容器并执行如下命令:

docker exec -it mysql /bin/bash

# 登录mysql
mysql -uroot -p
Enter password:  <-- 输入root密码
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值