想着买的云主机闲着,就装个mongo练练手吧。
云主机 ip: 111.229.x.x
客户端用的是nosqlboost for mongodb,笔记本上。
1. 拉mongodb image
# docker pull mongo
2. 启动
# docker run -d -p 27017:27017 -v /data/mongodb:/data/db mongo
这样是不用验证用户名和密码。
3. 建用户
进入容器: docker exec -it xx bash xx 可通过 docker ps命令查看,可以是 容器id 或 容器名称
# mongo
> use admin
以下几种不同的建用户方式,mongo有认证数据库一说,就是 "认证数据库" 和用户能使用的数据库可以是同一个,也可以不是。
建管理员, 认证数据库是admin
> db.createUser({user:'tomcat123',pwd:'123456',roles:[{role:'userAdminAnyDatabase',db:'admin'}]})
建用户 demo123, 认证数据库是admin, demo123用户可以使用的数据库是demo.
> db.createUser({user:'demo123',pwd:'123456',roles:[{role:'readWrite',db:'demo'}]})
建用户 demo1234, 认证数据库是admin, demo1234用户可以使用的数据库是demo2.
> db.createUser({user:'demo1234',pwd:'123456,roles:[{role:'dbOwner',db:'demo2'}]}) 这个和demo123的role不一样。
> use history 切换数据库
建用户 index123, 认证数据库是history, index123用户可以使用的数据库是history.
> db.createUser({user:'index123',pwd:'123456',roles:[{role:'dbOwner',db:'history'}]})
4. 弄点测试数据
> use demo
> db.test.save({name:'tom'})
> use history
> db.test.save({name:'cat'})
然后退出mongo和容器: 退出mongo > exit, 退出容器: # exit
5. 关闭并删除刚建的容器
因为容器使用的host的数据目录,所以删除容器后,数据还在,再启动一个容器时把这个目录 -v 加上就行了。
# docker stop xx && docker rm xx xx是容器名, 也可以是 id, 通过docker ps查看一下。
6. 重新启动一个容器
复制第二步命令,后面再加上一个 --auth, 表示mongo这回要验证用户名和密码了。
# docker run -d -p 27017:27017 -v /data/mongodb:/data/db mongo --auth
7. 连接
使用nosqlBooster for mongodb的对应版本(我原来有个两前下载的nosqlBooster, 结果怎么都连不上,最后下载了一个最新的版本就好用了)
因为每个用户认证数据库不一样,所以图里填的Auth DB也是不一样,所以在建用户时要规划好认证数据库。
*** 最后说一下,网上有文章说远程连接要改 容器中 /etc/mongod.conf.orig, 我这里没改,也可连接到云上的docker里的mongodb,不过云主机要开27017端口。 ***