我从MongoDB开始,我想用户/传递访问dbs.我做的第一件事是创建和管理用户并使用auth activate启动mongodb,这是我创建的用户:
db.getUser("admin")
{
"_id" : "admin.admin",
"user" : "admin",
"db" : "admin",
"roles" : [
{
"role" : "dbAdminAnyDatabase",
"db" : "admin"
},
{
"role" : "clusterAdmin",
"db" : "admin"
}
] }
}
Run Code Online (Sandbox Code Playgroud)
之后,我尝试使用以下命令创建用户:
use newdb
db.createUser(
{
user: "newuser",
pwd: "12345678",
roles: [ { role: "readWrite", db: "newdb" } ]
}
)
Run Code Online (Sandbox Code Playgroud)
但我得到了这个错误:
错误:无法添加用户:未在newdb上授权执行命令{createUser:"newuser",pwd:"xxx",roles:[{role:"readWrite",db:"newdb"}],digestPassword:false, writeConcern:{w:"most",wtimeout:30000.0}}在src/mongo/shell/db.js:1004
我用谷歌搜索了它,但只有两个结果,一个在中文,另一个没有相关,所以我有点迷路.任何的想法 ?看起来我的管理员用户没有权限,我使用以下命令访问mongodb:
$mongo --port 27017 -u adminUser -p adminPass --authenticationDatabase admin
Run Code Online (Sandbox Code Playgroud)
提前致谢.
Kan*_*mar 16
停止正在运行的mongod实例
mongod --config /usr/local/etc/mongod.conf --auth
然后开始没有--auth喜欢
mongod --config /usr/local/etc/mongod.conf
然后更新您的角色像
db.updateUser("admin",{roles:["userAdminAnyDatabase","userAdmin","readWrite","dbAdmin","clusterAdmin","readWriteAnyDatabase","dbAdminAnyDatabase"]});
现在再次启动mongod --auth并尝试.
我们的想法是你必须使用上面提到的所有ROLES在"admin"数据库下创建用户.
但是这个用户不是其他数据库的一部分.所以一旦你创建了admin用户,
然后以该管理员用户身份登录,
SERVER:mongod --config /usr/local/etc/mongod.conf --auth
客户:./ mongodb/bin/mongo localhost:27017/admin -u adminUser -p 123456
use APPLICATION_DB
Run Code Online (Sandbox Code Playgroud)
再次为此APPLICATION_DB创建一个新用户(比如说APP_USER).对于此应用程序用户,您只需要"dbOwner"角色.
db.createUser({user:"test", pwd:"test", roles:['dbOwner']})
Run Code Online (Sandbox Code Playgroud)
现在您的应用程序必须使用此APP_USER和APP_DB.
Bal*_*ala 14
我解决了同样的问题,只是退出并以管理员身份登录
mongo -u admin
Run Code Online (Sandbox Code Playgroud)
输入您的管理员用户密码
登录后,像往常一样创建一个用户
use newdb
db.createUser(
{
user: "newuser",
pwd: "12345678",
roles: [ { role: "readWrite", db: "newdb" } ]
}
)
Run Code Online (Sandbox Code Playgroud)
就我而言:
1.停止mongodb:
$ service mongod stop
Run Code Online (Sandbox Code Playgroud)
2.编辑/etc/mongod.conf:
security:
authorization: "disabled"
Run Code Online (Sandbox Code Playgroud)
3.然后我再次启动服务:
$ service mongod start
Run Code Online (Sandbox Code Playgroud)
4.添加用户:
$ mongo mongodb://localhost:27017
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
Run Code Online (Sandbox Code Playgroud)
5.在步骤 2 中添加 /etc/mongod.conf 中的注释行
6.重启mongod
service mongod restart
Run Code Online (Sandbox Code Playgroud)
小智 5
下面的命令说,您已经创建了管理员用户和密码。
db.getUser("admin")
{
"_id" : "admin.admin",
"user" : "admin",
"db" : "admin",
"roles" : [
{
"role" : "dbAdminAnyDatabase",
"db" : "admin"
},
{
"role" : "clusterAdmin",
"db" : "admin"
}
] }
}
Run Code Online (Sandbox Code Playgroud)
一旦创建了管理员用户和密码,Mongo将不允许您像以前一样使用管理员身份进行任何模式更新。
使用新创建的管理员用户和密码来创建新用户或进行任何更新。它应该工作。
小智 5
您应该退出当前的 mongod 进程并在没有参数的情况下重新启动它--auth。
在终端类型上: mongod
mongod 进程启动后,您可以打开新的终端选项卡来运行 mongo shell 命令:
mongo --shell
use new_your_database
db.createUser(
{
user: "mongo_admin",
pwd: "mongo_admin",
roles: [ "readWrite", "dbAdmin" ]
}
)
Run Code Online (Sandbox Code Playgroud)
它应该成功完成......