#简化版
docker run --name mongo1 -p 21117:27017 -d mongo --noprealloc --smallfiles
#自定义mongo数据路径
docker run --name mongo_rs1 -v ~/test/mongo_sr1:/mongodb -p 37117:27017 -d mongo mongod --logpath /mongodb/mongo.log --logappend --dbpath /mongodb
#开启mongo双主配置
docker run --name mongo_rs2 -v ~/test/mongo_sr2:/mongodb -p 37118:27017 -d mongo mongod --logpath /mongodb/mongo.log --logappend --dbpath /mongodb --master --slave --port=27017 --autoresync --source=192.168.118.73:37117
#常规,用mongo默认数据路径,并挂载出来
docker run --name mongodb_alpha -d --dns=192.168.1.26 -p 37017:27017 -v /home/devsa_dev/mongo_data/configdb:/data/configdb -v /home/devsa_dev/mongo_data/db:/data/db mongo
而按照上述几种方式启动的Mongo容器,默认是不带密码访问的,也就是说,只有别人知道你的ip和映射出来的端口,便可操做你的mongo数据库mysql
在运行时,增长--auth参数,用简化版来做为示例web
docker run --name mongo1 -p 21117:27017 -d mongo --noprealloc --smallfiles --auth
mongodb密码和传统数据如mysql等有些区别:sql
mongodb设置管理用户和密码:mongodb
show dbs
在mongodb新版本里并无admin数据库,可是并不妨碍第2步操做。
#进入admin数据库
use admin
#建立管理员帐户 db.createUser({ user: "useradmin", pwd: "adminpassword", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] }) mongodb中的用户是基于身份role的,该管理员帐户的 role是 userAdminAnyDatabase。 ‘userAdmin’表明用户管理身份,’AnyDatabase’ 表明能够管理任何数据库。 #验证第3步用户添加是否成功 db.auth("useradmin", "adminpassword") 若是返回1,则表示成功。
进入mongodb,用第3步的 管理员帐户登陆,用该帐户建立其余数据库管理员帐号docker
use admin
db.auth("useradmin", "adminpassword")
新建你须要管理的mongodb 数据的帐号密码数据库
use yourdatabase db.createUser({ user: "youruser", pwd: "yourpassword", roles: [{ role: "dbOwner", db: "yourdatabase" }] })
注:dbOwner 表明数据库全部者角色,拥有最高该数据库最高权限。bash
新建数据库读写帐户app
use yourdatabase db.createUser({ user: "youruser2", pwd: "yourpassword2", roles: [{ role: "readWrite", db: "yourdatabase" }] })
注:该用户用于该数据的读写,只拥有读写权限。函数
第一种 (相似 MySql)工具
客户端链接时,指定用户名,密码,db名称
mongo --port 27017 -u "adminUser" -p "adminPass" --authenticationDatabase "admin"
第二种
客户端链接后,再进行验证
mongo --port 27017
use admin
db.auth("adminUser", "adminPass")
// 输出 1 表示验证成功
mongo admin -u username -p passwd
生产中经常使用 URI 形式对数据库进行链接
mongodb://your.db.ip.address:27017/foo
添加用户名密码验证
mongodb://simpleUser:simplePass@your.db.ip.address:27017/foo
实例:
#形式一
connect(host='mongodb://root:mongo@172.20.10.144:37017/ppmoney_website_minder')
#形式二
connect(host='mongodb://root:mongo@172.20.10.144:37017/db?authSource=ppmoney_website_minder')
啥?你还不会,那我接下来,给你们演示一下吧
一、新建容器,并开启--auth
docker run --name mongo1 -p 21117:27017 -d mongo --noprealloc --smallfiles --auth
二、进入容器,操做
#进入容器 docker exec -it mongo1 bash #进入Mongo mongo #切库,新增用户 use admin; db.createUser({ user: "root", pwd: "mongo", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })
三、认证验证
方式一,在mongo中可用db.auth()认证
db.auth('root','mongo')
方式二:退出mongo后,从新进入
能够先直接mongo进入,而后show dbs,发现报错
认证进入:mongo admin -u root -p mongo
方式三:Robo客户端工具链接
若是不认证,直接链接测试,提示失败
认证后,从新测试链接:
四、再来新建一个其它数据库的用户
#新建库 use ppmoney_website_minder #新建用户 db.createUser( ... { ... user: "root", ... pwd: "mongo", ... roles: [ { role: "readWrite", db: "ppmoney_website_minder" }, ] ... } ... ) #认证 db.auth('root','mongo') #插入数据 db.runoob.insert({"name":"ppmoney_website_minder"})
用Mongo客户端链接验证:
到此,就给你们演示了一下,如何对mong开启用户认证~