MongoDB的默认用户名和密码是啥?
Posted
技术标签:
【中文标题】MongoDB的默认用户名和密码是啥?【英文标题】:MongoDB what are the default user and password?MongoDB的默认用户名和密码是什么? 【发布时间】:2016-12-19 16:06:59 【问题描述】:我在本地和生产中使用相同的连接字符串。
当连接字符串为mongodb://localhost/mydb
时
用户名和密码是什么? 保持这种方式安全吗?
【问题讨论】:
【参考方案1】:默认情况下 mongodb 没有启用访问控制,因此没有默认用户或密码。
要启用访问控制,请使用命令行选项--auth
或security.authorization 配置文件设置。
您可以使用以下过程或参考 MongoDB 文档中的Enabling Auth。
程序
在没有访问控制的情况下启动 MongoDB。
mongod --port 27017 --dbpath /data/db1
连接到实例。
mongo --port 27017
创建用户管理员。
use admin
db.createUser(
user: "myUserAdmin",
pwd: "abc123",
roles: [ role: "userAdminAnyDatabase", db: "admin" ]
)
使用访问控制重新启动 MongoDB 实例。
mongod --auth --port 27017 --dbpath /data/db1
以用户管理员身份进行身份验证。
mongo --port 27017 -u "myUserAdmin" -p "abc123" \
--authenticationDatabase "admin"
【讨论】:
如果用户是用角色 userAdminAnyDatabase 创建的,那么将无法创建任何数据库。因此角色部分应该是:角色:[角色:“root”,db:“admin”] 请链接original post from MongoDB Manual 如果你想找到 dbpath 使用:grep dbPath /etc/mongod.conf @georgeos 我试过了,没问题,可以毫无问题地创建数据库。正如 natcho 提到的,与 MongoDB 手册中提出的方法相同。 如果需要删除用户并使用@georgeos 提到的不同角色再次创建使用db.dropUser("myUserAdmin")
【参考方案2】:
除了@Camilo Silva 已经提到的,如果您想免费访问创建数据库、读取、写入数据库等,但您不想创建 root 角色,您可以将第三步更改为以下:
use admin
db.createUser(
user: "myUserAdmin",
pwd: "abc123",
roles: [ role: "userAdminAnyDatabase", db: "admin" ,
role: "dbAdminAnyDatabase", db: "admin" ,
role: "readWriteAnyDatabase", db: "admin" ]
)
如果您已经创建了用户,您可以按如下方式更新用户:
首次登录:
mongo --port 27017 -u "myUserAdmin" -p "abc123" \
--authenticationDatabase "admin"
添加权限:
use admin
db.grantRolesToUser(
"myUserAdmin",
[ role: "userAdminAnyDatabase", db: "admin" ,
role: "dbAdminAnyDatabase", db: "admin" ,
role: "readWriteAnyDatabase", db: "admin" ]
)
【讨论】:
创建副本集,管理集群,需要添加角色“clusterAdmin”【参考方案3】:对于 2.6 之前的 MongoDB,添加 root 用户的命令是addUser
(例如)
db.addUser(user:'admin',pwd:'<password>',roles:["root"])
【讨论】:
在 2.6 版之前,您拥有db.addUser
。从 2.6 开始,在当前版本 3.4.x 中,您可以使用 db.CreateUser
创建用户。
db.createUser
;) (docs.mongodb.com/manual/reference/method/db.createUser)【参考方案4】:
除了之前提供的答案之外,如果您的数据库已经使用访问控制(--auth
开关)启动,一个选项是按照“本地主机异常”方法创建第一个用户。为此,您需要拥有对服务器的 localhost 访问权限,然后运行:
mongo
use admin
db.createUser(
user: "user_name",
pwd: "user_pass",
roles: [
role: "userAdminAnyDatabase", db: "admin" ,
role: "readWriteAnyDatabase", db: "admin" ,
role: "dbAdminAnyDatabase", db: "admin"
]
)
如 MongoDB 文档中所述:
localhost 异常允许您启用访问控制,然后在系统中创建第一个用户。对于 localhost 例外,启用访问控制后,连接到 localhost 界面并在 admin 数据库中创建第一个用户。第一个用户必须具有创建其他用户的权限,例如具有 userAdmin 或 userAdminAnyDatabase 角色的用户。使用 localhost 异常的连接只能在 admin 数据库上创建第一个用户。
这是文档中section 的链接。
【讨论】:
【参考方案5】:在您的实例中转到 mongo
mongo
use admin
db.createUser(user:"Username", pwd:"Password", roles:[role:"root", db:"admin"])
【讨论】:
正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。以上是关于MongoDB的默认用户名和密码是啥?的主要内容,如果未能解决你的问题,请参考以下文章