mysql -u root -p
后运行SELECT user FROM mysql.user;
,PostgreSQL使用psql -U postgres
后运行\du
或SELECT usename FROM pg_user;
。在Linux系统中查看数据库用户的具体方法取决于所使用的数据库类型(如MySQL、PostgreSQL、MongoDB等),以下是常见数据库的详细操作指南,操作前请确保您已安装对应数据库客户端并拥有足够权限。
MySQL/MariaDB 查看用户
-
登录MySQL命令行
使用以下命令登录(替换[用户名]
为实际管理员账号):mysql -u [用户名] -p
输入密码后进入MySQL交互界面。
-
查看所有用户及主机权限
执行SQL查询:SELECT User, Host FROM mysql.user;
输出示例:
+------------------+-----------+ | User | Host | +------------------+-----------+ | root | localhost | | app_user | % | | backup_user | 192.168.1.% | +------------------+-----------+
-
查看详细权限(可选)
SHOW GRANTS FOR '用户名'@'主机';
示例:
SHOW GRANTS FOR 'app_user'@'%';
PostgreSQL 查看用户
-
登录PostgreSQL命令行
切换到postgres
系统用户后登录:sudo -u postgres psql
-
查看所有用户/角色
执行SQL命令:SELECT usename AS user, datname AS database FROM pg_user;
或查看角色(用户)详情:
\du
输出示例:
Role name | Attributes -----------+------------------------------------------------ admin_user | Superuser, Create DB app_user | Create role, Password valid until infinity
MongoDB 查看用户
-
连接Mongo Shell
登录MongoDB命令行:mongo
-
切换到目标数据库
use admin // 查看管理用户需切到admin库
-
查看所有用户
db.getUsers()
输出示例:
{ "users": [ { "_id": "admin.root", "user": "root", "db": "admin", "roles": [{"role": "root", "db": "admin"}] } ] }
SQLite 查看用户
SQLite是无用户管理的轻量级数据库,所有操作通过文件权限控制,直接查看数据库文件所有者即可:
ls -l /路径/数据库.db
输出示例:
-rw-r--r-- 1 www-data www-data 8192 Jan 10 10:00 mydb.db
此处用户为系统用户 www-data
。
关键注意事项
- 权限要求:
- MySQL/PostgreSQL需
SELECT
权限或管理员角色。 - MongoDB需
userAdmin
或root
角色。
- MySQL/PostgreSQL需
- 安全操作:
- 生产环境避免直接使用root账户查询,建议通过审计日志或专用监控工具。
- 敏感操作前备份数据库(如MySQL的
mysql.user
表)。
- 连接问题:
- 若出现
Access denied
错误,检查用户主机限制(如MySQL的Host
字段是否匹配当前IP)。 - PostgreSQL需确认
pg_hba.conf
文件允许本地连接。
- 若出现
- MySQL/MariaDB:通过
mysql.user
系统表查询。 - PostgreSQL:使用
\du
或查询pg_user
视图。 - MongoDB:在Mongo Shell中执行
db.getUsers()
。 - SQLite:无需用户管理,依赖文件系统权限。
引用说明:本文操作基于MySQL 8.0、PostgreSQL 14、MongoDB 6.0官方文档验证,具体语法可能随版本调整,建议参考:
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/26663.html