我在本地和生产环境中使用相同的连接字符串。 当连接字符串为 mongodb://localhost/mydb时
mongodb://localhost/mydb
用户名和密码是什么? 这样保存安全吗?
默认情况下,mongodb 没有启用访问控制,因此没有默认用户或密码。
若要启用访问控制,请使用命令行选项 --auth或 security.authority 配置文件设置。
--auth
您可以使用以下过程或者在 MongoDB 文档中引用 启用 Auth。
无访问控制启动 MongoDB。
mongod --port 27017 --dbpath /data/db1
连接到实例。
mongosh --port 27017
创建用户管理员。
use admin db.createUser( { user: "myUserAdmin", pwd: passwordPrompt(), // or cleartext password roles: [ { role: "userAdminAnyDatabase", db: "admin" }, { role: "readWriteAnyDatabase", db: "admin" } ] } )
使用访问控制重新启动 MongoDB 实例。
mongod --auth --port 27017 --dbpath /data/db1
作为用户管理员进行身份验证。
mongosh --port 27017 --authenticationDatabase "admin"\ -u "myUserAdmin" -p
对于早于2.6的 MongoDB,添加 root 用户的命令是 addUser(例如)
addUser
db.addUser({user:'admin',pwd:'<password>',roles:["root"]})
除了@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" } ] )
除了之前提供的答案之外,还有一种选择是,如果您的 db 已经通过访问控制(--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 接口并在管理数据库中创建第一个用户。第一个用户必须具有创建其他用户的权限,例如具有 userAdmin 或 userAdminAnyDatabase 角色的用户。使用 localhost 异常的连接只能在管理数据库上创建第一个用户。
这是文档的 部分链接。
在你的实例中使用 mongo
mongo use admin db.createUser({user:"Username", pwd:"Password", roles:[{role:"root", db:"admin"}]})
mongod --bind_ip_all --auth
修改.conf 文件后使用此命令:
network interfaces net: port: 27017 bindIp: 127.0.0.1,mongodb_server_ip