Mar*_*ark 1 javascript mongodb
我只是想在 mongo 3.6 中创建一个管理员用户并登录。我跑了:
$mongo
db.createUser(
{
user:"AdminMark",
pwd:"fghtyyy",
roles:[{role:"root",db:"admin"}]
}
)
Run Code Online (Sandbox Code Playgroud)
它说: Successfully added user
然后尝试登录:
mongo -u AdminMark -p --authenticationDatabase admin
Run Code Online (Sandbox Code Playgroud)
我输入密码。但我得到:
2018-03-05T20:40:07.689+0000 E QUERY Error: 18 Authentication failed.
at DB._authOrThrow (src/mongo/shell/db.js:1271:32)
at (auth):6:8
at (auth):7:2 at src/mongo/shell/db.js:1271
exception: login failed
Run Code Online (Sandbox Code Playgroud)
这发生在本地和我的服务器上。这是怎么回事?
我在这里学习教程:https : //tecadmin.net/create-drop-users-in-mongodb/#
我的 mongod.conf 文件的内容是:
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# Where and how to store data.
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1
#processManagement:
#security:
#operationProfiling:
#replication:
#sharding:
## Enterprise-Only Options:
#auditLog:
#snmp:
Run Code Online (Sandbox Code Playgroud)
我也试过这个。没用。
我可以非常简单地添加一个 mongo 3.6 管理员用户,然后登录到 Mongo?
该错误是由在默认数据库 ( test) 中创建用户并使用该admin数据库进行身份验证引起的。
如果连接时不指定数据库名称,mongoshell 将默认为test数据库。
您缺少的是admin在创建用户之前切换到数据库。
这一系列命令应该可以工作:
$ mongo
> use admin
> db.createUser({
user:'root',
pwd:'hunter2',
roles:[{role:'root',db:'admin'}]
})
$ mongo -u root -p --authenticationDatabase admin
Run Code Online (Sandbox Code Playgroud)
同样如@Kevin 之前的回答,您需要启用 auth 以告诉 MongoDB 强制执行身份验证。如果您不启用身份验证,MongoDB 将对您进行身份验证,但不会强制执行授权。这可以通过添加security部分或开始mongod使用--auth参数来使用配置文件来实现。
有关 MongoDB 的安全功能和最佳实践的更多详细信息,请参阅安全检查表。
| 归档时间: |
|
| 查看次数: |
4960 次 |
| 最近记录: |