linux 安装配置MongoDB 5.0
概览
系统 | mongoDB | 安装方式 |
---|---|---|
ubuntu 20 | mongoDB 5.0.6 | apt |
需记忆的信息
相关路径
data | log | 配置文件 |
---|---|---|
/var/lib/mongodb | /var/log/mongodb | /etc/mongod.conf |
常用命令
sudo systemctl start mongod
sudo systemctl stop mongod
sudo systemctl restart mongod
sudo systemctl status mongod
# 开启启动
sudo systemctl disable mongod
sudo systemctl enable mongod
安装
流程
flowchart LR
安装 --> 创建用户 --> 配置文件里开启authorization --> 重启mongod
安装过程
sudo apt-get install gnupg
wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
sudo apt-get install gnupg
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
sudo apt-get update
sudo apt-get install -y mongodb-org
锁定更新
echo "mongodb-org hold" | sudo dpkg --set-selections
echo "mongodb-org-database hold" | sudo dpkg --set-selections
echo "mongodb-org-server hold" | sudo dpkg --set-selections
echo "mongodb-org-shell hold" | sudo dpkg --set-selections
echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
echo "mongodb-org-tools hold" | sudo dpkg --set-selections
用户验证和权限管理
说明:
1. mongodb 分布式数据库,用户验证(本文称为client auth)和集群成员间的验证(本文称为internal auth) internal auth 使用keyfiles kms之类的验证,先不管它
2. 用户是和库绑定的,或者说用户验证的粒度是库级别,而不是整个实例级别
3. 不同的库下面可以有相同的用户名
4. 一般创建一个root账户,再创建一些普通用户做日常操作
5. 一般来说应用使用的用户只需要readWrite角色即可
mongosh进入后
// 创建root账户
use admin
db.createUser({user: "root",pwd: "root",roles: [ { role: "root", db: "admin" } ]})
// 创建日常用的普通账户
use test
/* 具体创建信息自行修改 */
db.createUser(
{
user: "xyz",
pwd: "xyz123",
roles: [ { role: "readWrite", db: "test" },
{ role: "read", db: "reporting" } ]
}
)
如上,xyz用户只能登录test/reporting数据库,权限为分布读写/读
接下来,只需开启authorization,就可以登入了
sudo vim /etc/mongod.conf
# 修改后重启
sudo systemctl restart mongod
#登录 localhost主机下的admin数据库
mongosh localhost/admin -u root -p
用户角色
Built-In Roles(内置角色):
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)
7. 内部角色:__system
用户有关操作示例
use admin
//查看当前库内已有用户
show users
//查看当前库内可用的roles,默认只有built-in roles
show roles
//创建用户,roles可以使用当前库内的角色,或者其他库内的角色
db.createUser({user: "root",pwd: "root",roles: [ { role: "root", db: "admin" } ]})
//如何修改密码
db.changeUserPassword('root','rootNew');
//已有用户新增和解除built-in roles
db.grantRolesToUser('<username>', [{ role: '<built-in role>', db: 'admin' }])
db.revokeRolesFromUser( "<username>", [{ role: '<built-in role>', db: 'admin' }])
//删除用户命令如下,虽然所有库的用户信息全存在admin的system.users中,删用户时还是要use <库名>才能删除
use db_name
db.dropUser("<username>")
exit
//退出
由于用户验证是库级别的,切换db时有时需要验证
db.auth('root','password')
配置文件
需要修改的地方
net:
bindIp: 0.0.0.0 #或者某个IP
#启用 用户验证
security:
authorization: enabled # 网络上的auth: true 不行,坑死了
配置文件的官方说明
写法和网上找的老版mongoDB有区别,注意是 **YAML 格式 **
网络上讲的 fork=true # 以创建子进程的方式运行
,
- 本质上是daemon mode,守护进程,没有控制终端而无法与前台交互。
- 写法注意
processManagement.fork
写在 processManagement下 - 目前我看来没用,用了没法交互,官方也没默认没推荐
其它工具
mongosh
旧的是 mongo (deprecated)
注意 这是 javascript的交互式终端,甚至可以执行命令
1+1
# (不指定其它信息 自动进入test数据库)
mongosh
mongosh的连接方式
mongosh mongodb://username:password@hostname/dbname
#或者
mongosh hostname/dbname -u username -p password
# 带参数 安装模式
mongodb://localhost/?safe=true
安全模式连接
safe=true|false
true: 在执行更新操作之后,驱动都会发送getLastError命令来确保更新成功。(还要参考 wtimeoutMS).
false: 在每次更新之后,驱动不会发送getLastError来确保更新成功。
mongosh 的 Editor Mode
shell中编辑大段的代码不方便,因此可以使用mongosh的编辑器模式;
config.set( "editor", "vim" )
config.set( "editor", "nano" )
config.set("editor","code --wait") // code特殊必须加 --wait
// 启动编辑模式
edit
// 编辑变量 直接编辑[ ]
let albums=[];
edit albums // 或者直接 edit let albums=[]
config.set('editor',null) // 取消编辑器设置
MongoDB for VSCode 插件
可视化管理 compass
wget https://downloads.mongodb.com/compass/mongodb-compass_1.30.1_amd64.deb
sudo dpkg -i mongodb-compass_1.30.1_amd64.deb
启动compass
mongodb-compass
卸载MongoDB
sudo service mongod stop
sudo apt-get purge mongodb-org*
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb
posted on 2022-03-09 17:20 ShawSpring 阅读(778) 评论(0) 编辑 收藏 举报