安装 mongodb

cd /opt
wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2_amd64.deb
dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb
apt-get install -y gnupg
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-6.0.list
apt-get update

# 安装最新
apt-get install -y mongodb-org

# 指定安装 6.0
apt-get install -y mongodb-org=6.0.4 mongodb-org-database=6.0.4 mongodb-org-server=6.0.4 mongodb-org-shell=6.0.4 mongodb-org-mongos=6.0.4 mongodb-org-tools=6.0.4

 

安装最新和指定安装 6.0 二选一

 

mongodb 服务管理

# 启动 mongodb 服务
sudo systemctl start mongod

# 查看 mongodb 服务是否正常启动
sudo systemctl status mongod

# 让 mongodb 随系统一起启动
sudo systemctl enable mongod

# 关闭 mongodb 服务
sudo systemctl stop mongod

# 重启 mongodb 服务
sudo systemctl restart mongod

 

配置

vi /etc/mongod.conf

# 设置绑定地址
bind_ip = 0.0.0.0

 

查看版本

1、输入 mongo 进入 MongoDB 控制台

2、使用 db.version() 命令查询 MongoDB 的版本

 

设置数据库账号

1、进入 MongoDB 命令行

# mongo
MongoDB shell version v3.6.8
connecting to: mongodb://127.0.0.1:27017
Implicit session: session { "id" : UUID("d596a2ee-9263-441c-8926-f40e4fd91cd9") }
MongoDB server version: 3.6.8
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
Server has startup warnings:
2021-08-26T10:57:28.939+0000 I CONTROL  [initandlisten]
2021-08-26T10:57:28.939+0000 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2021-08-26T10:57:28.939+0000 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2021-08-26T10:57:28.939+0000 I CONTROL  [initandlisten]
>

 

2、创建 admin 用户

> use admin
switched to db admin
> db.createUser({user: "admin_wcl",pwd: "xyz123456",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]})
Successfully added user: {
        "user" : "admin_wcl",
        "roles" : [
                {
                        "role" : "userAdminAnyDatabase",
                        "db" : "admin"
                }
        ]
}

> exit
bye

 

3、重启 MongoDB

# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1   4116  3304 pts/0    Ss+  10:56   0:00 /bin/bash
root         9  0.0  0.0   2616  1636 pts/1    Ss   10:56   0:00 /bin/sh
mongodb     56  0.2  3.8 979732 76880 ?        SLl  10:57   0:03 /usr/bin/mongod --config /etc/mongodb.conf
root       175  0.0  0.1   5904  2856 pts/1    R+   11:20   0:00 ps aux
#
# kill -9 56
#
# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1   4116  3304 pts/0    Ss+  10:56   0:00 /bin/bash
root         9  0.0  0.0   2616  1636 pts/1    Ss   10:56   0:00 /bin/sh
root       176  0.0  0.1   5904  2980 pts/1    R+   11:20   0:00 ps aux
#
# service mongodb start
 * Starting database mongodb                                         [ OK ]
#

 

4、使用刚创建的账号登录

# mongo --port 27017 -u "admin_wcl" -p "xyz123456" --authenticationDatabase "admin"
MongoDB shell version v3.6.8
connecting to: mongodb://127.0.0.1:27017/
Implicit session: session { "id" : UUID("cf802538-a71b-48a6-b0c7-65e8a985de75") }
MongoDB server version: 3.6.8
Server has startup warnings:
2021-08-26T11:21:14.317+0000 I CONTROL  [initandlisten]
2021-08-26T11:21:14.317+0000 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2021-08-26T11:21:14.317+0000 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2021-08-26T11:21:14.317+0000 I CONTROL  [initandlisten]
>

 

数据库权限角色 

 

默认mongoDB 并没有用户限制,任何人都可以连接数据库

默认有 admin 、 config 、local、 test 四个数据库,show dbs 命令开始会显示前三个数据库,因为test 没有数据。

当前数据库的角色(每个数据库都有的角色)

角色能够执行的操作
read 能读取所有非系统集合和system.js集合的数据
readWrite 能读取所有非系统集合和system.js集合的数据 或 写入
dbAdmin 提供执行管理任务的能力,例如与架构相关的任务、索引和收集统计信息。但没有用户和角色管理权限。
userAdmin 提供在当前数据库上创建和修改角色和用户的功能。由于userAdmin角色允许用户向任何用户(包括他们自己)授予任何权限,因此该角色还间接地向超级用户提供对数据库、集群及admin数据库(如果有scoped)的访问。
dbOwner 可以执行任何操作,readWrite、dbAdmin和userAdmin 权限的总和

群集管理角色 (admin数据库的角色)

admin数据库包括所有以下角色,用于管理整个系统,而不仅仅是单个数据库。这些角色包括但不限于副本集和分片集群管理功能。

角色能够执行的操作
clusterManager 提供群集上的管理和监视操作。具有此角色的用户可以访问 config 数据库和 local 数据库,它们分别用于分片和复制。
clusterMonitor 提供对监控工具(如MongoDB Cloud Manager和Ops Manager监控代理)的只读访问。
hostManager 提供监视和管理服务器的功能。
clusterAdmin 提供最大的群集管理访问。此角色结合了clusterManager、clusterMonitor和hostManager角色授予的权限。还提供dropDatabase操作。

备份和恢复角色(admin数据库的角色)

admin数据库包括所有以下角色

角色能够执行的操作
backup 提供备份数据所需的最低权限。此角色提供足够的权限来使用MongoDB Cloud Manage、Ops Manager 备份代理或使用mongodump备份整个mongod实例。
restore 提供从备份中还原数据所需的权限(如果数据不包括system.profile数据) 并在运行mongorestore时,可不使用--oplogReplay选项。

所有数据库的角色(admin数据库的角色)

以下角色在admin 数据库上可用,并提供适用于除local 和config之外的所有数据库的权限:

角色能够执行的操作
readAnyDatabase 提供与在除 local 和 config之外的所有数据库上 read 相同的只读权限。该角色还提供对整个集群的listDatabases操作。
readWriteAnyDatabase 提供与在除 local 和 config之外的所有数据库上 readWrite 相同的读写权限。该角色还提供对整个集群的listDatabases操作。
dbAdminAnyDatabase 提供与在除 local 和 config之外的所有数据库上 dbAdmin 相同的权限。该角色还提供对整个集群的listDatabases操作。
userAdminAnyDatabase 提供与在除 local 和 config之外的所有数据库上 userAdmin 相同权限。

超级用户角色

以下角色可以为任何用户分配任何数据库上的任何权限,这意味着具有这些角色之一的用户可以为自己分配任何数据库上的任何权限:
admin 数据库的 dbOwner 角色
admin 数据库的 userAdmin 角色
userAdminAnyDatabase 角色
root 角色:超级权限

 

创建普通用户

> use foobar;
> db.createUser({ user:"foobarUser",pwd:"foo",roles:[{role:"readWrite",db:”foobar”}],});

 

创建用户管理员

> use admin;
> db.createUser({ user:"Useradmin",pwd:"Userpwd",roles:["userAdminAnyDatabase"],});

 

创建数据库管理员

> use admin;
> db.createUser({ user:"DbUser",pwd:"DbPwd“,roles:["readWriteAnyDatabase", "dbAdminAnyDatabase"]});

 

查询某个数据库下的用户

> db.system.users.find();

 

删除指定用户

> db.dropUser(“用户名”);

 

 

管理

官方管理工具 Compass:https://www.mongodb.com/products/compass