我对 MySQL 比较熟悉,但在我的新工作场所,我必须照顾 MongoDB 数据库(在 Ubuntu 18.04.6 上运行的 MongoDB 4.2.18 和 Mongosh 1.1.9 —— 是的,它很旧;升级是一个问题另一天)。我对 MongoDB 一无所知。不幸的是,创建它的人没有留下任何文档。现在,我需要照顾它。
我拥有的是用户名和密码。这样,我就可以像这样登录:
mongosh --port 27017 --authenticationDatabase "admin" -u "XXX" -p
我可以通过执行 来列出所有数据库show databases
。但是,我无法执行命令show users
:
admin> show users
MongoServerError: not authorized on admin to execute command { usersInfo: 1, lsid: { id: UUID("b2c4e061-1b54-4b27-bdf2-bef330b38b4d") }, $db: "admin" }
然后我尝试获取用户列表。我认为这是执行此操作的命令:
admin> show collections
system.users
system.version
admin> db.system.users.find().pretty ()
MongoServerError: not authorized on admin to execute command { find: "system.users", filter: {}, lsid: { id: UUID("1801ce09-5c09-44eb-9b04-86eb35817eaa") }, $db: "admin" }
总而言之,这感觉就像我的帐户不是管理员帐户。这是正确的吗?
如果是这样,是否可以创建一个具有完全管理员权限的新帐户?我可以sudo
访问主机。如果是这样,我该怎么做?
谢谢你!
将您的配置文件(通常
/etc/mongod.conf
)编辑为此作为预防措施,为了防止未经授权的连接,您还可以设置
然后重新启动
mongod
服务。现在,您可以连接并且您拥有数据库的所有权限。更改用户的密码和/或凭据
XXX
或创建新的管理员用户。您可以检查现有的凭据usersInfo命令。恢复配置更改并
mongod
重新启动。是的,它是管理员帐户...您只需更改为用户信息所在的管理数据库即可。因此,输入“use admin”+ Enter。您可以随时检查您所在的数据库,只需输入“db”+ Enter。
与你的 mongodump 问题。参数 --db= 和/或 --authenticationDatabase= 将解决您的问题(取决于您的问题)。使用 mongodump --help
要问如何查看您的角色是否是管理员,请使用 db.getUser("admin")。检查这里!