1、docker mongo
1.1、docker pull mongo
1.2、docker run --name mongo -p 27017:27017 -d mongo --auth
1.3、进入bash:docker exec -it mongo bin/bash
1.4、mongo目录:/usr/bin/ 程序名:./mongo
2、创建帐户
mongo --port 27017
use admin
db.createUser(
{
user: "root",
pwd: "123456",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
管理员创建成功,现在拥有了用户管理员
用户名:root
密码:123456
数据库:admin
3、配置springboot
data:
mongodb:
# uri: mongodb://foo:123456@192.168.56.101:27017/foo
uri: mongodb://192.168.56.101:27017/admin
username: root
password: 123456
由于网络配置因人而异,需要根据自己实际环境进行配置,不作冗述。大致可以从以下方面禁止。
在外网机器命令行中运行
telnet your.machine.open.ip 27017
新建MongoDB服务:
mongod --port 27017 --dbpath /data/db1
开启mongodb客户端shell:
mongo --port 27017
use admin
db.createUser(
{
user: "adminUser",
pwd: "adminPass",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
管理员创建成功,现在拥有了用户管理员
用户名:adminUser
密码:adminPass
然后,断开 mongodb 连接, 关闭数据库
启动带访问控制的 Mongodb
mongod --auth --port 27017 --dbpath /data/db1
现在有两种方式进行用户身份的验证
mongo --port 27017 -u "adminUser" -p "adminPass" --authenticationDatabase "admin"
mongo --port 27017
use admin
db.auth("adminUser", "adminPass")
// 输出 1 表示验证成功
过程类似创建管理员账户,只是 role 有所不同
use foo
db.createUser(
{
user: "simpleUser",
pwd: "simplePass",
roles: [ { role: "readWrite", db: "foo" },
{ role: "read", db: "bar" } ]
}
)
现在我们有了一个普通用户
用户名:simpleUser
密码:simplePass
权限:读写数据库 foo, 只读数据库 bar。
注意
use foo
表示用户在 foo 库中创建,就一定要 foo 库验证身份,即用户的信息跟随随数据库。比如上述 simpleUser 虽然有 bar 库的读取权限,但是一定要先在 foo 库进行身份验证,直接访问会提示验证失败。
use foo
db.auth("simpleUser", "simplePass")
use bar
show collections
原文:https://www.cnblogs.com/weizhxa/p/12063367.html