MongoDB Docker 安装和使用

docker 安装 mongodb

1.拉取mongodb镜像

1
docker pull mongo

2.创建文件夹

1
2
3
mkdir -p /home/mongo/conf/
mkdir -p /home/mongo/data/
mkdir -p /home/mongo/logs/

3.新增mongod.conf文件

1
cd /home/mongo/conf && vi mongod.conf

mongod.conf文件内容:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# 数据库文件存储位置
dbpath = /data/db
# log文件存储位置
logpath = /data/log/mongod.log
# 使用追加的方式写日志
logappend = true
# 是否以守护进程方式运行
# fork = true
# 全部ip可以访问
bind_ip = 0.0.0.0
# 端口号
port = 27017
# 是否启用认证
auth = true
# 设置oplog的大小(MB)
oplogSize=2048

4.新增mongod.log文件

1
2
3
4
cd /home/mongo/logs/ && vi mongod.log

##log文件不需要内容##
chmod  777 mongod.log 

5.docker容器构建以及启动mongodb

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
cd /
docker run -it \
	--name mongodb \
	--restart=always \
    --privileged \
    -p 27017:27017 \
    -v /home/mongo/data:/data/db \
    -v /home/mongo/conf:/data/configdb \
    -v /home/mongo/logs:/data/log/  \
    -d mongo:latest \
    -f /data/configdb/mongod.conf

6.进入容器创建管理员

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
##进入容器##
docker exec -it mongodb /bin/bash

##进入mongodb shell##
mongosh

##切换到admin库##
> use admin

##创建账号/密码##
db.createUser({ user: 'admin', pwd: 'admin', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });

7.使用 Mongodb-compass工具连接 URL 如下所示

1
mongodb://admin:*****@127.0.0.1:27017/

创建账号和数据库

1.使用管理员账号密码登录,然后创建新的数据库,再给新库创建用户

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
mongosh -u admin -p admin

use poetry-app

# 创建账号, 授予读写权限
db.createUser(
{
    user:"poetry",
    pwd:"123456",
    roles:[{role:"readWrite",db:"poetry-app"}]
    }
);

2.用新账号连接使用

1
mongosh -u poetry -p 123456 --authenticationDatabase poetry-app

账号管理

例子1:在lijiamandb数据库中,创建用户lijiaman,对该库具有读写权限。

1
2
3
4
5
6
7
8
9
use lijiamandb

db.createUser(
{
    user:"lijiaman",
    pwd:passwordPrompt(),
    roles:[{role:"readWrite",db:"lijiamandb"}]
    }
)

例子2:在reportdb数据库中,创建用户report,对reportdb数据库具有读写权限,对lijiamandb具有读的权限。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
use reportdb

db.createUser(
    {
        user:"report",
        pwd:passwordPrompt(),
        roles:[
            {role:"readWrite",db:"reportdb"},
            {role:"read",db:"lijiamandb"}
        ]
    }
)

删除用户

1
db.dropUser("user_name")

修改密码,例如,把lijiamandb数据库中的user1用户的密码改为123456。

1
2
use lijiamandb
db.changeUserPassword("user1", "123456")

查看所有用户

1
2
use admin
db.system.users.find().pretty()
0%