MongoDB的安装
MongoDB的安装我们通常会使用命令行的方式来安装,你需要注意的就是保持网络畅通~:
- 导入公钥
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
2.创建源列表文件MongoDB
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb.list
- 更新源
sudo apt update
- 安装MongoDB Server
sudo apt install mongodb-org
- 对mongoDB Server的管理
sudo systemctl enable mongod # 加入mongod服务
sudo systemctl start mongod # 开启mongod服务
sudo systemctl stop mongod # 停止mongod服务
至此,mongodb安装完成!!!
Mongodb配置文件
在ubuntu下安装完成后,mongodb的配置文件存放在 /etc/mongodb.conf
用vim编辑器打开配置文件,我们可以清楚的看见各项配置。
权限设置
默认情况下,mongodb的监听端口为27017,无认证,这样很不安全,很容易被勒索的。所以,我们需要设置用户名密码和数据库的访问权限。
打开登录认证,需要修改mongodb服务文件。
vi /lib/systemd/system/mongod.service
在ExecStart=/usr/bin/mongod –auth –config /etc/mongod.conf这一行后面加上 --auth。
重新加载服务:
systemctl daemon-reload
重启mongod服务。
MongoDB的用户分为两种,一种是admin用户,另一种是特定数据库用户。admin用户拥有最高的权限,而特定数据库用户则只能访问特定的数据库。当MongoDB的admin库里没有任何用户的时候,也就是说整个MongoDB没有一个MongoDB用户的时候,即便–auth权限需求打开了,用户还是可以通过localhost界面进入MongoDB进行用户设置,否则的话整个MongoDB就完全没法访问了。而当这个用户创建完成之后,之后的用户登录和操作就需要授权了,不是直接登录就能使用的了。
MongoDB有一个比较奇怪的设置是,即便是一个admin用户,授权也必须在admin数据库下进行,而不能在其他数据库下进行。而授权之后admin用户就可以在任何数据库下进行任何操作了。当然数据库级别的用户在他自己的数据库下授权之后是不能到其他数据库进行操作的。
启动mongod服务,在sehll中输入命令:
mongo # 进入mongo shell
show dbs # 显示所有数据库
use admin # 进入admin数据库
db.createUser(
{
user: "admin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
) # 创建一个用户,身份是超级管理员
这时我们创建好了超级管理员,现在退出shell,重新进入mongo shell,输入命令:
db.auth("admin","abc123")
若返回为1,则认证成功!现在,我们超级管理员也创建好了,可以为其他数据库创建用户了。
为数据库创建用户
输入命令:
use test # 切换至test数据库
db.createUser(
{
user: "myTester",
pwd: "xyz123",
roles: [ { role: "readWrite", db: "test" }
}
) # 创建用户,用户myTester对数据库test的权限为读写
MongoDB基本的角色:
1.数据库用户角色:read、readWrite;
2.数据库管理角色:dbAdmin、dbOwner、userAdmin;
3.集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4.备份恢复角色:backup、restore;
5.所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6.超级用户角色:root
还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
其中MongoDB默认是没有开启用户认证的,也就是说游客也拥有超级管理员的权限。userAdminAnyDatabase:有分配角色和用户的权限,但没有查写的权限
网友评论