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

devtools/2024/10/19 0:22:36/

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

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

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

mysql_root_6">一、重置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、退出容器,然后重启mysqldocker 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
exitvim ~/mysql.cnf
# 注释掉skip-grant-tables# 拷贝回去 并重启mysql容器
docker cp ~/mysql.cnf mysql:/etc/my.cnf
docker restart mysql

mysql_65">二、测试mysql连接

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

docker exec -it mysql /bin/bash# 登录mysql
mysql -uroot -p
Enter password:  <-- 输入root密码

http://www.ppmy.cn/devtools/41949.html

相关文章

第 397 场 LeetCode 周赛题解

A 两个字符串的排列差 模拟&#xff1a;遍历 s s s 记录各字符出现的位置&#xff0c;然后遍历 t t t 计算排列差 class Solution {public:int findPermutationDifference(string s, string t) {int n s.size();vector<int> loc(26);for (int i 0; i < n; i)loc[s…

python3.6+pycharm安装配置

python3.6安装 下载python3.6 官网&#xff1a;下载 安装及环境变量配置 等待几分钟安装成功&#xff0c;cmd中输入python后返回版本号&#xff0c;安装成功 环境变量path下能看到自动添加了环境变量 pycharm下载安装 pycharm社区版下载 官网&#xff1a;下载 等待…

Linux基本工具的使用

什么是工具&#xff1f; 在Linux中&#xff0c;工具的本质也是指令&#xff0c;只是因为这些指令与我们的开发的关系不是很大&#xff0c;所以就被称为工具 1 软件包管理器yum 在我们的Windows上如果想要安装软件&#xff0c;第一件事就是要先下载软件安装包&#xff0c;然后…

Java--初识类和对象

前言 本篇讲解Java类和对象的入门版本。 学习目的&#xff1a; 1.理解什么是类和对象。 2.引入面向对象程序设计的概念 3.学会如何定义类和创建对象。 4.理解this引用。 5.了解构造方法的概念并学会使用 考虑到篇幅过长问题&#xff0c;作者决定分多次发布。 面向对象的引入 J…

Android AOSP Ubuntu源码编译电脑卡顿问题定位解决

文章目录 问题概述分析问题解决问题查看交换分区创建交换分区删除交换分区调整交换分区的活跃度 问题概述 开发SystemUI时&#xff0c;使用内存为16G的主机&#xff0c;Ubuntu 20.04的系统编译SystemUI的源码&#xff0c;编译的过程中发现电脑卡顿&#xff0c;鼠标不能移动。必…

std::remove-----std::remove_if

std::remove和std::remove_if 是 C11 标准库中的一个算法函数. std::remove 作用 遍历一遍容器&#xff0c;将容器中所有不是指定元素的元素往前复制。 总之就是一句话&#xff1a; 把不该删除的移动到前面&#xff0c;后面的就是应该删除的。 注意&#xff1a; 1&#…

yum提示没有可用软件包问题

问题在于没有定义外部仓库。解决思路是加一个。 一、背景 某台生产服务器操作系统是centos 7&#xff0c;我需要在上面装个ftp软件&#xff1a;vsftpd。出于稳妥起见&#xff0c;在该生产服务器上安装之前&#xff0c;我先在测试服务器上捣鼓了一轮&#xff0c;尚算顺利。结果…

AlmaLinux 文件拷贝 cp命令用法示例

AlmaLinux 文件拷贝 在Linux系统中&#xff0c;文件复制可以使用cp命令。以下是一些基本的cp命令用法示例&#xff1a; 复制文件到目标目录&#xff1a; cp source.txt /destination/directory/ 复制多个文件到目标目录&#xff1a; cp file1.txt file2.txt /destination/d…