一、使用Docker安装MongoDB
1、参考文档
Docker 安装 MongoDB Docker 命令大全
2、Docker 安装 MongoDB
-
取最新版的 MongoDB 镜像。 # 这里我们拉取官方的最新版本的镜像:
docker pull mongo:latest
-
查看本地镜像 # 使用以下命令来查看是否已安装了 mongo:
docker images
-
创建和启动容器。 # 创建和启动容器
docker run --name mongodb -p 27017:27017 -v /data/configdb:/data/configdb/ -v /data/db/:/data/db/ -d mongo --auth
-
安装成功。 # 可以通过 docker ps 命令查看容器的运行信息:
docker ps
3、创建管理员admin用户和密码
-
以 admin用户身份进入mongo。 docker exec -it mongodb mongo admin
-
创建一个 admin管理员账号。 db.createUser({ user: 'admin', pwd: '011023', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });
db.auth('admin', '123456') # 尝试使用上面创建的用户信息进行连接。
exit # 创建成功后可退出
4、Docker删除操作
-
删除docker容器。 docker ps -a # 查看容器
docker rm [CONTAINER ID] # 删除docker容器
-
删除docker镜像。 docker images # 查看镜像
docker rmi [CONTAINER ID] # 用于删除docker镜像
- 删除前需要停止容器docker stop [CONTAINER ID];
- 需要注意删除镜像和容器的命令不一样;
- 若要删除删除镜像,则需要先删除容器
二、CentOS7上使用MongoDB
1、参考文档
MongoDB 教程 mongodb用户权限管理最全攻略:用户的创建、查看、删除与修改,mongodb入坑之旅
2、创建新的数据库和普通用户
-
进入MongoDB容器。 docker exec -it mongodb /bin/bash
-
使用创建的用户进行连接(类似mysql)。 mongo admin -u admin -p
# 接着输入密码
-
新建数据库。 use [DATABASE_NAME] # 如果数据库不存在,则创建数据库,否则切换到指定数据库。
use test # 这里用第二点中的testdb数据库做测试
db # 查看此时数据库
-
创建用户和密码。 db.createUser({ user: 'zhangsan', pwd: '123456', roles: [ { role: "readWrite", db: "test" } ] })
db.auth("zhangsan","123456") # 验证是否创建成功
exit
show users 或 db.system.users.find() # 查看创建的用户 db.dropUser(‘user_name’) # 删除用户
-
查询数据库。 mongo test -u zhangsan -p 123456 # 用zhangsan连接test数据库
show dbs #查询所有的数据库
# 此时显示不了testdb数据库,如果需要显示,需要向新建的数据库插入一些数据
-
向数据库插入数据后查询。 db.test.insert({"name":"zhangsan"}) # 插入一条数据
show dbs # 查看到test数据库
3、插入文档并查询
-
插入一个文档。 db.col.insert({title: 'MongoDB 测试',
description: 'MongoDB 是一个 Nosql 数据库',
by: 'zhangsan'
})
# 以上实例中 col 是我们的集合名
# 在 MongoDB 中,你不需要创建集合。当你插入一些文档时,MongoDB 会自动创建集合。
# 如果该集合不在该数据库中,MongoDB 会自动创建该集合并插入文档。
-
查询集合。 db.getCollectionNames ()
-
查询文档。 db.[集合名字].find() # 查询文档
db.[集合名字].find().pretty() # pretty() 方法以格式化的方式来显示所有文档。
三、Navicat for MongoDB连接
1、服务器端操作
-
修改配置文件。 docker exec -it mongodb /bin/bash
cd /etc
ls
vim mongod.conf.orig # 将bindIp注释后改为0.0.0.0
-
查看端口是否开放。 netstat -ano|grep 27017
-
防火墙端口放行。
firewall-cmd --zone=public --add-port=27017/tcp --permanent
firewall-cmd --reload
2、Winodos端操作(Navicat 15)
-
新建连接。 -
编辑链接。 -
测试链接。 -
查看数据库,可以查看到插入的集合。
四、出现的问题
uncaught exception: Error: Failed to acquire database information from privileges:xxx
-
分析原因:用用户‘admin’登录之后又用用户‘zhangsan’登录,导致冲突。 -
解决方法:先exit退出,只用一个用户登录,即可进行操作。
|