docker获取mysql账号密码的方法

 更新时间:2025年08月09日 12:12:03   作者:爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ  
本文介绍Docker中获取MySQL密码的多种方法,包括检查容器参数、启动历史、初始化脚本及用户表,同时提供密码重置流程以应对忘记密码的情况,感兴趣的朋友快来跟随小编一起学习吧

亲测:

#获取运行中镜像?通过 NAMES 获取镜像名称
docker ps
#mysql-container为容器名称
docker inspect mysql-container | grep -i MYSQL_ROOT_PASSWORD

查看Docker环境变量设置的密码

  • 方法一:查看容器的运行参数
    在Linux系统下,可以使用docker inspect命令获取容器的详细信息,其中包括环境变量的设置。假设你的MySQL容器名称是mysql-container,执行以下命令:
docker inspect mysql-container

命令执行后会输出大量JSON格式的信息,你可以通过搜索关键词(如MYSQL_ROOT_PASSWORD )来查找密码相关的设置。也可以结合grep命令简化输出,比如:

docker inspect mysql-container | grep -i MYSQL_ROOT_PASSWORD

-i参数表示不区分大小写搜索,这样能快速定位到包含MYSQL_ROOT_PASSWORD的行,查看设置的密码。

  • 方法二:查看容器启动历史记录
    如果你是在本地终端启动的Docker容器,那么可以使用history命令查看历史执行过的命令。例如:
history | grep docker run

找到启动MySQL容器的那行命令,查看是否通过-e参数设置了MYSQL_ROOT_PASSWORD等环境变量,进而获取到设置的密码 。不过这种方式只适用于你没有清理过命令历史记录的情况。

查看docker-entrypoint-initdb.d里SQL文件中的密码设置

  • 进入容器查看相关目录
    首先使用docker exec命令进入MySQL容器,假设容器名称是mysql-container,执行:
docker exec -it mysql-container bash

进入容器后,导航到docker-entrypoint-initdb.d目录,使用ls命令列出该目录下的文件:

ls /docker-entrypoint-initdb.d

然后使用文本编辑器(如vimcat命令 )查看具体的SQL文件内容。比如,文件名为init-user-db.sql ,可以用以下方式查看:

cat /docker-entrypoint-initdb.d/init-user-db.sql

或者使用vim进行编辑查看:

vim /docker-entrypoint-initdb.d/init-user-db.sql

在SQL文件中查找创建用户和设置密码的相关语句,常见的设置密码语句如:

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

或者

ALTER USER 'username'@'host' IDENTIFIED BY 'password';

找到这些语句就能获取到设置的密码信息。

在MySQL容器中,无法直接从配置文件里获取明文密码,因为从MySQL 5.7版本开始,密码以加密形式存储在系统库中 。不过,可以通过以下方式间接查看相关信息或重置密码:

查看MySQL用户表(加密密码存储处)

  1. 登录MySQL:在容器内的命令行,执行登录命令:
mysql -uroot -p

如果设置了root密码,按提示输入密码回车登录 。要是不知道root密码,可尝试后续重置密码的方法。
2. 查看用户表:登录成功后,执行以下SQL语句:

USE mysql;
SELECT user, host, authentication_string FROM user;

authentication_string 字段存储的是加密后的密码,但无法直接还原为明文。

查找可能的配置文件(不一定有密码信息)

虽然通常无法从中获取明文密码,但还是可以检查下常见的配置文件,看看是否有相关线索:

  • MySQL配置文件:路径可能是 /etc/mysql/my.cnf/etc/mysql/mysql.conf.d/mysqld.cnf ,使用文本编辑器(如 vim )打开查看:
vim /etc/mysql/my.cnf

这些文件主要用于配置MySQL的运行参数,比如端口、字符集、缓存等,不一定包含密码信息。

  • 容器初始化脚本:像 docker-entrypoint-initdb.d 目录下的脚本文件,可能会有创建用户、设置密码等相关操作,你可以使用 ls 命令查看该目录下的文件:
ls /docker-entrypoint-initdb.d

然后用文本编辑器打开查看内容(如 vim 文件名 ),不过也可能经过加密处理或使用环境变量设置密码 。

重置密码

如果忘记密码,可按以下步骤重置:

  1. 停止MySQL服务
    根据MySQL服务管理方式,执行相应停止命令:
  • 若使用 service 管理:
service mysql stop
  • 若使用 systemctl 管理:
systemctl stop mysql
  1. 以特殊模式启动MySQL
    在容器外,先停止MySQL容器:
docker stop mysql-container

再重新启动容器并挂载配置文件目录,进入容器后编辑MySQL配置文件,在 [mysqld] 配置段添加 skip-grant-tables 以跳过权限验证。
3. 登录并修改密码
再次进入容器,此时无需密码即可登录MySQL:

mysql

登录后执行SQL语句重置密码(假设新密码为 new_root_password ):

USE mysql;
UPDATE user SET authentication_string = PASSWORD('new_root_password') WHERE user = 'root' AND host = 'localhost';
FLUSH PRIVILEGES;
  1. 恢复正常模式
    删除配置文件中添加的 skip-grant-tables ,重启MySQL容器:
docker restart mysql-container

之后就能用新密码登录 。

1. 登录MySQL

在当前容器内的命令行中, 执行以下命令登录MySQL :

mysql -uroot -p

如果MySQL的root用户设置了密码,系统会提示输入密码,输入正确密码后回车即可登录。
要是不知道root密码,先跳过此步骤,尝试后续重置密码的方法。

2. 查询账号信息(已登录MySQL的情况下)

成功登录MySQL后,执行以下SQL语句:

USE mysql;
SELECT user, host FROM user;

上述SQL语句会列出当前MySQL实例中的所有用户账号,以及这些账号允许登录的主机。

3. 重置密码(忘记root密码时)

停止MySQL服务

在容器内,根据MySQL服务的管理方式,执行相应的停止命令:

  • 若使用 service 管理:
service mysql stop
  • 若使用 systemctl 管理:
systemctl stop mysql

以特殊模式启动MySQL

在容器外,先停止当前MySQL容器:

docker stop xfyun-mysql-container

接着重新启动容器,并挂载MySQL的配置文件目录(具体挂载方式因镜像而异)。进入容器后,编辑MySQL的配置文件(常见路径有 /etc/mysql/my.cnf/etc/mysql/mysql.conf.d/mysqld.cnf ) ,在 [mysqld] 配置段下添加 skip-grant-tables ,用于跳过权限验证。

登录MySQL并修改密码

再次进入容器,此时无需密码即可登录MySQL:

mysql

登录后,执行以下SQL语句重置root密码(假设新密码为 new_root_password ):

USE mysql;
UPDATE user SET authentication_string = PASSWORD('new_root_password') WHERE user = 'root' AND host = 'localhost';
FLUSH PRIVILEGES;

恢复正常模式

修改完密码后,删除配置文件中添加的 skip-grant-tables ,然后重启MySQL容器:

docker restart xfyun-mysql-container

之后就可以使用新设置的密码登录MySQL 。

4. 查看或修改其他用户密码(已登录MySQL且有足够权限)

如果想查看其他用户的信息,可通过之前的 SELECT user, host FROM user; 语句 。
若要修改其他用户的密码,比如将 testuser 用户的密码修改为 newpassword ,执行以下SQL语句:

ALTER USER 'testuser'@'localhost' IDENTIFIED BY 'newpassword';
FLUSH PRIVILEGES;

testuserlocalhost 根据实际情况替换 。

到此这篇关于docker如何获取mysql的账号密码的文章就介绍到这了,更多相关docker mysql账号密码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Linux中docker的使用方法讲解

    Linux中docker的使用方法讲解

    本文给大家详细介绍了linux中docker的使用,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-12-12
  • 给docker配置指定ip的超详细图解

    给docker配置指定ip的超详细图解

    这篇文章主要给大家介绍了关于给docker配置指定ip的超详细图解教程,Docker容器的IP地址由Docker守护进程动态分配,默认情况下,它使用的是宿主机的IP地址,但是在某些情况下,您可能需要为Docker容器指定静态IP地址,需要的朋友可以参考下
    2023-09-09
  • win10家庭版安装docker遇到的问题小结

    win10家庭版安装docker遇到的问题小结

    这篇文章主要介绍了win10家庭版安装docker遇到的问题小结,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • windows下安装docker的教程详解

    windows下安装docker的教程详解

    这篇文章主要介绍了windows安装docker的教程,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-11-11
  • Next.js Docker镜像私有部署从零实现

    Next.js Docker镜像私有部署从零实现

    这篇文章主要为大家介绍了Next.js Docker镜像私有部署从零实现,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • Docker安装Nginx教程实现图例讲解

    Docker安装Nginx教程实现图例讲解

    这篇文章主要介绍了Docker安装Nginx教程图例讲解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • 利用宝塔面板和docker快速部署网站的基本流程

    利用宝塔面板和docker快速部署网站的基本流程

    当你有了一台服务器,就会折腾往这台服务器上部署各种好玩的网站,本文将以部署filebrowser举例介绍网站部署的基本流程,感兴趣的朋友一起看看吧
    2023-12-12
  • 基于docker搭建selenium分布式环境

    基于docker搭建selenium分布式环境

    这篇文章主要介绍了基于docker搭建selenium分布式环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • 使用Dockerfile实现数据卷的挂载问题(推荐)

    使用Dockerfile实现数据卷的挂载问题(推荐)

    Dockerfile就是一个可以用来构建镜像的文件,可以理解为一个脚本文件,可以通过这个脚本文件自定义生成一个我们想要的镜像,镜像都是一层一层的,里面的每一条命令就是一层,本文给大家介绍使用Dockerfile实现数据卷的挂载,感兴趣的朋友一起看看吧
    2022-03-03
  • 关于immich docker-compose.yml配置文件详解

    关于immich docker-compose.yml配置文件详解

    Immich是一个自托管的照片和视频备份解决方案,允许用户在私有服务器上存储、管理和分享他们的媒体文件,项目提供了自托管、照片和视频备份、易于访问、数据控制、隐私保护等功能,通过Docker容器化部署,用户可以方便地安装和维护Immich应用
    2025-03-03

最新评论