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 # 以创建子进程的方式运行

  1. 本质上是daemon mode,守护进程,没有控制终端而无法与前台交互。
  2. 写法注意 processManagement.fork 写在 processManagement下
  3. 目前我看来没用,用了没法交互,官方也没默认没推荐

其它工具

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编辑  收藏  举报

导航