我在本地和制作上使用相同的连接字符串。 当连接字符串是mongodb:// localhost / mydb
时用户和密码是什么? 保持这种方式是否安全?
答案 0 :(得分:123)
默认情况下,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"
答案 1 :(得分:10)
除了@Camilo Silva已经提到的内容之外,如果你想免费访问创建数据库,读取,写入数据库等,但你不想创建一个root角色,你可以改变第三个步骤如下:
y
答案 2 :(得分:2)
对于早于2.6的MongoDB,添加root用户的命令是db.addUser({user:'admin',pwd:'<password>',roles:["root"]})
(例如)
number = window.number|5;
答案 3 :(得分:1)
除了先前提供的答案外,如果您的数据库已经使用访问控制(--auth
开关)启动,则可以采用“本地主机例外”方法来创建第一个用户。为此,您需要对服务器具有本地主机访问权限,然后运行:
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接口并在管理数据库中创建第一个用户。第一个用户必须具有创建其他用户的特权,例如具有userAdmin或userAdminAnyDatabase角色的用户。使用localhost异常的连接只能在管理数据库上创建第一个用户。
这里是文档section的链接。