mur*_*lai 356 authentication mongodb
我想为我的MongoDB实例设置用户名和密码验证,以便任何远程访问都会要求输入用户名和密码.我尝试了MongoDB网站上的教程并做了以下事情:
use admin
db.addUser('theadmin', '12345');
db.auth('theadmin','12345');
Run Code Online (Sandbox Code Playgroud)
在那之后,我退出并再次运行mongo.而且我不需要密码来访问它.即使我远程连接到数据库,也不会提示我输入用户名和密码.
更新这是我最终使用的解决方案
1) At the mongo command line, set the administrator:
use admin;
db.addUser('admin','123456');
2) Shutdown the server and exit
db.shutdownServer();
exit
3) Restart mongod with --auth
$ sudo ./mongodb/bin/mongod --auth --dbpath /mnt/db/
4) Run mongo again in 2 ways:
i) run mongo first then login:
$ ./mongodb/bin/mongo localhost:27017
use admin
db.auth('admin','123456');
ii) run & login to mongo in command line.
$ ./mongodb/bin/mongo localhost:27017/admin -u admin -p 123456
Run Code Online (Sandbox Code Playgroud)
用户名和密码将以相同的方式用于mongodump和mongoexport.
Ale*_*scu 108
您需要在设置用户后从mongod该--auth选项开始.
来自MongoDB网站:
使用
--auth启用安全性的选项运行数据库(mongod进程).您必须在启动服务器之前将用户添加到admin db--auth,或者从localhost接口添加第一个用户.
Kar*_*son 67
哇这里有很多复杂/混乱的答案.
这是v3.4的一部分.
1)启动没有访问控制的MongoDB.
mongod --dbpath /data/db
Run Code Online (Sandbox Code Playgroud)
2)连接到实例.
mongo
Run Code Online (Sandbox Code Playgroud)
3)创建用户.
use some_db
db.createUser(
{
user: "myNormalUser",
pwd: "xyz123",
roles: [ { role: "readWrite", db: "some_db" },
{ role: "read", db: "some_other_db" } ]
}
)
Run Code Online (Sandbox Code Playgroud)
4)停止MongoDB实例并使用访问控制再次启动它.
mongod --auth --dbpath /data/db
Run Code Online (Sandbox Code Playgroud)
5)以用户身份连接并进行身份验证.
use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})
Run Code Online (Sandbox Code Playgroud)
这很简单.我将愚蠢的下面的https://docs.mongodb.com/manual/tutorial/enable-authentication/
如果您想了解更多关于角色的实际内容,请访问:https://docs.mongodb.com/manual/reference/built-in-roles/
1)启动没有访问控制的MongoDB.
mongod --dbpath /data/db
Run Code Online (Sandbox Code Playgroud)
2)连接到实例.
mongo
Run Code Online (Sandbox Code Playgroud)
3)创建用户管理员.以下内容在admin身份验证数据库中创建用户管理员.用户是dbOwner在some_db数据库和不通过admin数据库,这是很重要的记忆.
use admin
db.createUser(
{
user: "myDbOwner",
pwd: "abc123",
roles: [ { role: "dbOwner", db: "some_db" } ]
}
)
Run Code Online (Sandbox Code Playgroud)
或者,如果您要创建一个管理员,管理员通过任何数据库:
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
Run Code Online (Sandbox Code Playgroud)
4)停止MongoDB实例并使用访问控制再次启动它.
mongod --auth --dbpath /data/db
Run Code Online (Sandbox Code Playgroud)
5)以admin身份验证数据库的用户管理员身份进行身份验证,而不是some_db身份验证数据库.用户管理员是在admin身份验证数据库中创建的,用户在身份验证数据库中不存在some_db.
use admin
db.auth("myDbOwner", "abc123")
Run Code Online (Sandbox Code Playgroud)
您现在已dbOwner通过some_db数据库身份验证.所以,现在如果您希望直接读取/写入/执行some_db数据库,您可以更改它.
use some_db
//...do stuff like db.foo.insert({x:1})
// remember that the user administrator had dbOwner rights so the user may write/read, if you create a user with userAdmin they will not be able to read/write for example.
Run Code Online (Sandbox Code Playgroud)
更多关于角色:https://docs.mongodb.com/manual/reference/built-in-roles/
如果您希望使其他用户不是用户管理员而且只是普通用户,请继续阅读下面的内容.
6)创建普通用户.此用户将在some_db下面的身份验证数据库中创建.
use some_db
db.createUser(
{
user: "myNormalUser",
pwd: "xyz123",
roles: [ { role: "readWrite", db: "some_db" },
{ role: "read", db: "some_other_db" } ]
}
)
Run Code Online (Sandbox Code Playgroud)
7)退出mongo shell,重新连接,以用户身份进行身份验证.
use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})
Run Code Online (Sandbox Code Playgroud)
Shn*_*nkc 60
首先,取消注释#auth=truemongod配置文件中的行(默认路径/etc/mongo.conf).这将启用mongodb的身份验证.
然后,重启mongodb: sudo service mongod restart
小智 45
这个答案适用于Mongo 3.2.1 参考
1号航站楼:
$ mongod --auth
Run Code Online (Sandbox Code Playgroud)
2号航站楼:
db.createUser({user:"admin_name", pwd:"1234",roles:["readWrite","dbAdmin"]})
Run Code Online (Sandbox Code Playgroud)
如果你想添加没有角色(可选):
db.createUser({user:"admin_name", pwd:"1234", roles:[]})
Run Code Online (Sandbox Code Playgroud)
检查是否经过身份验证:
db.auth("admin_name", "1234")
Run Code Online (Sandbox Code Playgroud)
它应该给你:
1
Run Code Online (Sandbox Code Playgroud)
否则:
Error: Authentication failed.
0
Run Code Online (Sandbox Code Playgroud)
小智 26
这是一个添加用户的JavaScript代码.
开始mongod使用--auth = true
从mongo shell访问管理数据库并传递javascript文件.
mongo admin"Filename.js"
"Filename.js"
// Adding admin user
db.addUser("admin_username", " admin_password");
// Authenticate admin user
db.auth("admin_username ", " admin_password ");
// use database code from java script
db = db.getSiblingDB("newDatabase");
// Adding newDatabase database user
db.addUser("database_username ", " database_ password ");
Run Code Online (Sandbox Code Playgroud)现在用户添加完成,我们可以验证从mongo shell访问数据库
ali*_*ara 12
https://docs.mongodb.com/manual/reference/configuration-options/#security.authorization
编辑mongo设置文件;
sudo nano /etc/mongod.conf
Run Code Online (Sandbox Code Playgroud)
添加行:
security.authorization : enabled
Run Code Online (Sandbox Code Playgroud)
重启服务
sudo service mongod restart
Run Code Online (Sandbox Code Playgroud)
问候
deu*_*ine 11
你可以改变/etc/mongod.conf。
前
#security:
后
security:
authorization: "enabled"
Run Code Online (Sandbox Code Playgroud)
然后 sudo service mongod restart
Jin*_*min 10
这是我在 Ubuntu 18.04 上所做的:
$ sudo apt install mongodb
$ mongo
> show dbs
> use admin
> db.createUser({ user: "root", pwd: "rootpw", roles: [ "root" ] }) // root user can do anything
> use lefa
> db.lefa.save( {name:"test"} )
> db.lefa.find()
> show dbs
> db.createUser({ user: "lefa", pwd: "lefapw", roles: [ { role: "dbOwner", db: "lefa" } ] }) // admin of a db
> exit
$ sudo vim /etc/mongodb.conf
auth = true
$ sudo systemctl restart mongodb
$ mongo -u "root" -p "rootpw" --authenticationDatabase "admin"
> use admin
> exit
$ mongo -u "lefa" -p "lefapw" --authenticationDatabase "lefa"
> use lefa
> exit
Run Code Online (Sandbox Code Playgroud)
小智 9
首先使用终端在终端上运行mongoDB
mongod
Run Code Online (Sandbox Code Playgroud)
现在运行mongo shell使用以下命令
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
Run Code Online (Sandbox Code Playgroud)
使用访问控制重新启动MongoDB实例.
mongod --auth
Run Code Online (Sandbox Code Playgroud)
现在使用命令行验证自己
mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"
Run Code Online (Sandbox Code Playgroud)
我是从中读到的
https://docs.mongodb.com/manual/tutorial/enable-authentication/
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
Run Code Online (Sandbox Code Playgroud)
> db.auth('myUserAdmin','abc123')
< { ok: 1 }
Run Code Online (Sandbox Code Playgroud)
如果失败你会得到
> db.auth('myUserAdmin','amongus')
MongoServerError: Authentication failed.
Run Code Online (Sandbox Code Playgroud)
nano /etc/mongod.conf
Run Code Online (Sandbox Code Playgroud)
改变:
#security:
Run Code Online (Sandbox Code Playgroud)
到:
security:
authorization: enabled
Run Code Online (Sandbox Code Playgroud)
sudo service mongod restart
Run Code Online (Sandbox Code Playgroud)
这对我有用。
使用特定数据库的密码创建用户以保护数据库访问:
use dbName
db.createUser(
{
user: "dbUser",
pwd: "dbPassword",
roles: [ "readWrite", "dbAdmin" ]
}
)
Run Code Online (Sandbox Code Playgroud)
小智 5
use admin
db.createUser(
{
user: "admin",
pwd: "admin123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)
Run Code Online (Sandbox Code Playgroud)
mongod --auth在 linux 的情况下,您可以编辑/etc/mongod.conf文件以添加security.authorization : enabled然后重新启动 mongd 服务mongo -u "admin" -p "admin123" --authenticationDatabase "admin"。就是这样您可以查看这篇文章以了解更多详细信息并学习使用 mongoose 连接到它。
| 归档时间: |
|
| 查看次数: |
390678 次 |
| 最近记录: |