remote access mongodb in docker

想着买的云主机闲着,就装个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端口。 ***

原文地址:https://www.cnblogs.com/bear129/p/13570874.html