Linux环境下如何查询数据库用户名密码信息?有具体方法吗?
- 内容介绍
- 文章标签
- 相关推荐
在 Linux 环境下查询数据库使用者名与密码的常见痛点
很多运维和开发人员在日常工作中会遇到以下困惑:
- 忘记了 MySQL / PostgreSQL 的登录账号或密码,却找不到快速定位的入口。
- 没有足够的权限,尝试执行查询时被程序拒绝。
- 担心在生产环境直接暴露或修改密码会带来安全风险。
- 不清楚不同数据库的配置文件位置,导致浪费大量时间去搜索。
操作前的必备条件
查看或修改数据库使用者名、密码信息通常需要 root 权限 或相应的数据库管理员权限。请务必更要遵循最小权限原则。
从方法一来看,直接读取配置文件
1. MySQL / MariaDB 配置文件
常用方法的观点是。
# 常见位置
/etc/my.cnf
/etc/mysql/my.cnf
/etc/mysql/mysql.conf.d/mysqld.cnf
打开后查找 或 区块中的 user/Password字段:
user = my_user
password = my_password
2. PostgreSQL 配置文件
pg_hba.conf 用于控制客户端认证,实际使用者名保存在程序角色里而加密后的密码存放在 pg_authid 程序表中。从常用方法来看,
/etc/postgresql/<版本号>/main/pg_hba.conf
/var/lib/pgsql/data/pg_hba.conf
可以使用以下命令快速查看文件内容:
# 查看 pg_hba.conf 内容
cat /etc/postgresql/14/main/pg_hba.conf | less
# 或者
less /var/lib/pgsql/data/pg_hba.conf
从方法二来看。使用命令行工具查询程序表
1. MySQL 查询使用者表(*注意:密码已加密,无法直接还原明文*)
# 登录 MySQL
mysql -u root -p
# 查看所有使用者及其主机信息
SELECT User,Host,auntication_string FROM mysql.user;# 对于旧版本:
SELECT User,Host。Password FROM mysql.user;
2. PostgreSQL 查询角色信息
# 切换到 postgres 超级使用者
sudo -i -u postgres
# 使用 psql 交互式终端
psql
# 列出所有角色及其属性
\du+ -- 显示详细信息。包括 rolpassword 字段
SELECT rolname,rolpassword FROM pg_authid;\q -- 退出 psql
至于方法三,利用第三方图形化工具快速定位账号信息
If you prefer a UI approach。following tools can help you locate credentials stored in configuration files or system tables without manual editing:
- MySQL Workbench: 在 “Server → Users and Privileges” 界面可以查看所有使用者及其加密密码摘要。
- phpMyAdmin / phpPgAdmin: 登录后通过 “User accounts” 页面快速浏览账户列表。
- DBeaver、DataGrip 等通用客户端工具: 支持直接连接后执行上述 SQL 查询。怎么说呢,
- PgAdmin 4: 在 “Login/Group Roles” 中查看角色属性。一样只能看到哈希值,
至于方法四,通过程序账号间接获取数据库凭证
A few applications store database credentials in environment variables or dedicated secret files . 常见做法如下:
.env 或类似配置文件搜索示例
# 在项目根目录递归搜索关键字
grep -R -iE 'DB_USER|DB_PASSWORD|user|password' ./
# 示例输出:
DB_USER=app_user
DB_PASSWORD=SuperSecret123!
Kubernetes / Docker Secret 检索示例
# 查看 pod 中挂载的 secret 文件方法 kubectl exec -it my-pod -- cat /etc/secrets/db-cred # Docker Compose 环境变量示例 docker-compose exec db env | grep MYSQL_ROOT_PASSWORD
安全警告与常用方法
- No Plain‑Text Passwords in Production: 永远不要把明文密码写入代码库或共享目录;说起来,使用专门的秘密管理工具。
-
Avoid Direct Modification: 若非必要,请勿手动编辑
/etc/mysql/my.cnf//etc/postgresql/*/pg_hba.conf**;不过,使用官方提供的 ALTER USER / CREATE ROLE 命令来更改密码。 - Password Rotation: 定期更换数据库账户密码。并更新对应应用配置,防止凭证泄漏。
- Audit Logging: 开启审计日志,记录所有账户创建与修改操作。
- Lack of Permissions?: 如果你没有足够权限。请联系程序管理员或 DBA 获取临时授权,而不是尝试提权。
完整步骤汇总
- 确认自己拥有 root 或相应 DB 管理员权限。
先检查配置文件:
-
Mysql/MariaDB: /etc/my.cnf。/etc/mysql/my.cnf,/etc/mysql/mysql.conf.d/mysqld.cnf…
-
再看PQsql。/etc/postgresql/
/main/pg_hba.conf,/var/lib/pgsql/data/pg_hba.conf…
使用 | grep -iE 'user|password'
-
说到Mysql,
# 登录后执行 SELECT User,Host,aunticationstring FROM mysql.user; -
从PQsql来看。
# 切换到 postgres 使用者 sudo -i -u postgres psql -c "\du+" # 查看角色列表及 password hash psql -c "SELECT rolname,rolpassword FROM pgauthid;" # 高级查询,需要 superuser 权限
如需图形化展示。可启动对应管理工具并通过 “Users/Roles” 页面快速定位。
完成以上步骤后请务必将检索到的明文或哈希凭证妥善保存。并及时清理终端历史记录:
在 Linux 环境下查询数据库使用者名与密码的常见痛点
很多运维和开发人员在日常工作中会遇到以下困惑:
- 忘记了 MySQL / PostgreSQL 的登录账号或密码,却找不到快速定位的入口。
- 没有足够的权限,尝试执行查询时被程序拒绝。
- 担心在生产环境直接暴露或修改密码会带来安全风险。
- 不清楚不同数据库的配置文件位置,导致浪费大量时间去搜索。
操作前的必备条件
查看或修改数据库使用者名、密码信息通常需要 root 权限 或相应的数据库管理员权限。请务必更要遵循最小权限原则。
从方法一来看,直接读取配置文件
1. MySQL / MariaDB 配置文件
常用方法的观点是。
# 常见位置
/etc/my.cnf
/etc/mysql/my.cnf
/etc/mysql/mysql.conf.d/mysqld.cnf
打开后查找 或 区块中的 user/Password字段:
user = my_user
password = my_password
2. PostgreSQL 配置文件
pg_hba.conf 用于控制客户端认证,实际使用者名保存在程序角色里而加密后的密码存放在 pg_authid 程序表中。从常用方法来看,
/etc/postgresql/<版本号>/main/pg_hba.conf
/var/lib/pgsql/data/pg_hba.conf
可以使用以下命令快速查看文件内容:
# 查看 pg_hba.conf 内容
cat /etc/postgresql/14/main/pg_hba.conf | less
# 或者
less /var/lib/pgsql/data/pg_hba.conf
从方法二来看。使用命令行工具查询程序表
1. MySQL 查询使用者表(*注意:密码已加密,无法直接还原明文*)
# 登录 MySQL
mysql -u root -p
# 查看所有使用者及其主机信息
SELECT User,Host,auntication_string FROM mysql.user;# 对于旧版本:
SELECT User,Host。Password FROM mysql.user;
2. PostgreSQL 查询角色信息
# 切换到 postgres 超级使用者
sudo -i -u postgres
# 使用 psql 交互式终端
psql
# 列出所有角色及其属性
\du+ -- 显示详细信息。包括 rolpassword 字段
SELECT rolname,rolpassword FROM pg_authid;\q -- 退出 psql
至于方法三,利用第三方图形化工具快速定位账号信息
If you prefer a UI approach。following tools can help you locate credentials stored in configuration files or system tables without manual editing:
- MySQL Workbench: 在 “Server → Users and Privileges” 界面可以查看所有使用者及其加密密码摘要。
- phpMyAdmin / phpPgAdmin: 登录后通过 “User accounts” 页面快速浏览账户列表。
- DBeaver、DataGrip 等通用客户端工具: 支持直接连接后执行上述 SQL 查询。怎么说呢,
- PgAdmin 4: 在 “Login/Group Roles” 中查看角色属性。一样只能看到哈希值,
至于方法四,通过程序账号间接获取数据库凭证
A few applications store database credentials in environment variables or dedicated secret files . 常见做法如下:
.env 或类似配置文件搜索示例
# 在项目根目录递归搜索关键字
grep -R -iE 'DB_USER|DB_PASSWORD|user|password' ./
# 示例输出:
DB_USER=app_user
DB_PASSWORD=SuperSecret123!
Kubernetes / Docker Secret 检索示例
# 查看 pod 中挂载的 secret 文件方法 kubectl exec -it my-pod -- cat /etc/secrets/db-cred # Docker Compose 环境变量示例 docker-compose exec db env | grep MYSQL_ROOT_PASSWORD
安全警告与常用方法
- No Plain‑Text Passwords in Production: 永远不要把明文密码写入代码库或共享目录;说起来,使用专门的秘密管理工具。
-
Avoid Direct Modification: 若非必要,请勿手动编辑
/etc/mysql/my.cnf//etc/postgresql/*/pg_hba.conf**;不过,使用官方提供的 ALTER USER / CREATE ROLE 命令来更改密码。 - Password Rotation: 定期更换数据库账户密码。并更新对应应用配置,防止凭证泄漏。
- Audit Logging: 开启审计日志,记录所有账户创建与修改操作。
- Lack of Permissions?: 如果你没有足够权限。请联系程序管理员或 DBA 获取临时授权,而不是尝试提权。
完整步骤汇总
- 确认自己拥有 root 或相应 DB 管理员权限。
先检查配置文件:
-
Mysql/MariaDB: /etc/my.cnf。/etc/mysql/my.cnf,/etc/mysql/mysql.conf.d/mysqld.cnf…
-
再看PQsql。/etc/postgresql/
/main/pg_hba.conf,/var/lib/pgsql/data/pg_hba.conf…
使用 | grep -iE 'user|password'
-
说到Mysql,
# 登录后执行 SELECT User,Host,aunticationstring FROM mysql.user; -
从PQsql来看。
# 切换到 postgres 使用者 sudo -i -u postgres psql -c "\du+" # 查看角色列表及 password hash psql -c "SELECT rolname,rolpassword FROM pgauthid;" # 高级查询,需要 superuser 权限
如需图形化展示。可启动对应管理工具并通过 “Users/Roles” 页面快速定位。
完成以上步骤后请务必将检索到的明文或哈希凭证妥善保存。并及时清理终端历史记录:

