docker安装mongo及开启用户认证
1、下载镜像docker pull mongo:3.6.62、运行2.1、数据库授权默认情况下,mongo数据库没有添加认证约束,为了增强数据库的安全性,我们需要对数据库添加授权认证1、在运行mongo容器命令中添加--auth参数命令说明:–name:自定义别名-p 27017:27017 :将容器的27017 端口映射到主机的27017 端口-v /hom...
·
1、下载镜像
docker pull mongo:3.6.6
2、运行
2.1、数据库授权
默认情况下,mongo数据库没有添加认证约束,为了增强数据库的安全性,我们需要对数据库添加授权认证
1、在运行mongo容器命令中添加--auth
参数
命令说明:
- –name:自定义别名
- -p 27017:27017 :将容器的27017 端口映射到主机的27017 端口
- -v /etc/localtime:/etc/localtime:ro:挂载系统时区
- -v /home/mongo/db:/data/db :将主机中 /home/mongo/db 挂载到容器的 /data/db,作为mongo数据存储目录
- –antu:开启密码授权访问
docker run --name mongo-master -p 27017:27017 -v /etc/localtime:/etc/localtime:ro -v /home/mongo/db:/data/db -d mongo:3.6.6 --auth
2.2、创建用户管理员
2.2.1、首先进入mongo容器
docker exec -it mongo-master bash
2.2.2、创建用户管理员(此语法适用于mongo v3.x)
# 进入mongo数据库
mongo
# 首先切换到admin数据库下
use admin;
# 创建一个用户admin, 密码是Hello123
# 此用户即为管理员
# user: 用户名
# pwd: 密码明文
# role: 用户角色 db: 该用户将创建到哪个数据库中
db.createUser({
user: 'admin',
pwd: 'Hello123',
roles: [{role: 'userAdminAnyDatabase', db: 'admin'}]
});
# 测试下是否正确
db.auth("admin", "Hello123");
1 # 返回1表示正确
# 退出
exit;
role角色参数参考:
- Read:允许用户读取指定数据库
- readWrite:允许用户读写指定数据库
- dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
- userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
- clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限
- readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
- readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
- userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
- dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限
- root:只在admin数据库中可用。超级账号,超级权限
2.3、创建访问指定数据库的用户
管理员已经创建成功后,我们需要重新连接mongo数据库,用管理员进行登录,并为目标数据库创建目标用户
2.3.1、退出容器,重新进入容器
docker exec -it mongo-master mongo admin
2.3.2、授权登陆admin
db.auth("admin", "Hello123");
2.3.3、创建访问指定数据库的用户
假设我们为 test 库创建一个用户,用户名为 test,密码为 test
use test;
db.createUser({ user: 'test', pwd:'test', roles: [ {role:"readWrite",db:"student"}]});
db.auth("test","test");
创建成功并exit
退出,test 用户可以对(也只能对) student 库进行操作
注:
- admin的作用是管理用户,MongoDB下的每个数据库,用户都被它管理,除此外,它基本没什么更多权限做其他事情
- MongoDB没有通常意义的超级用户的概念,test库的授权用户只能被admin创建,而admin只能登陆admin数据库
操作记录:
[root@server ~]# docker pull mongo:3.6.6
3.6.6: Pulling from library/mongo
2caa28db99eb: Pull complete
f47091165808: Pull complete
1ee453af0da6: Pull complete
33c5b5832a66: Pull complete
27b2ac6ef5db: Pull complete
05dbddd53552: Pull complete
d417ae2661cf: Pull complete
5a42b4806d9d: Pull complete
3d03045cfed1: Pull complete
95c2d5a2400c: Pull complete
Digest: sha256:bc5d490da249a792c1aec0808640c74d236e30aea02f41b018d1b4c4685c429f
Status: Downloaded newer image for mongo:3.6.6
[root@server ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ryaning/tomcat 7.0.90-jre7-alpine-catalina a7824e8cc0d0 3 days ago 147MB
ryaning/tomcat 8.0.53-jre8-alpine-catalina 43f03e135be6 3 days ago 107MB
zookeeper 3.4 cfed220ec48b 5 days ago 148MB
mongo 3.6.6 5324878b8244 5 days ago 368MB
mysql 5.7.22 66bc0f66b7af 2 weeks ago 372MB
ilanyu/golang-reverseproxy latest a2714f84f679 3 months ago 7.33MB
[root@server ~]# docker run --name mongo-master -p 27017:27017 -v /etc/localtime:/etc/localtime:ro -v /home/mongo/db:/data/db -d mongo:3.6.6 --auth
a598c22d79e166efc7765a36ee16bf647df6663ef7e55d80571e663571eab896
[root@server ~]# docker exec -it mongo-master bash
root@a598c22d79e1:/# mongo;
MongoDB shell version v3.6.6
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.6
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
> use admin;
switched to db admin
> db.createUser({
... user: 'admin',
... pwd: 'Hello123',
... roles: [{role: 'userAdminAnyDatabase', db: 'admin'}]
... });
Successfully added user: {
"user" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
> db.auth("admin", "Hello123");
1
> exit;
root@a598c22d79e1:/# exit
exit
[root@server ~]# docker exec -it mongo-master mongo admin
MongoDB shell version v3.6.6
connecting to: mongodb://127.0.0.1:27017/admin
MongoDB server version: 3.6.6
> db.auth("admin", "Hello123");
1
> use test;
switched to db test
> db.createUser({ user: 'test', pwd:'test', roles: [ {role:"readWrite",db:"student"}]});
Successfully added user: {
"user" : "test",
"roles" : [
{
"role" : "readWrite",
"db" : "student"
}
]
}
> db.auth("test","test");
1
> exit
bye
[root@server ~]#
更多推荐
已为社区贡献1条内容
所有评论(0)