linux安装配置MongoDB5.0
概览
系统mongoDB安装⽅式
ubuntu 20mongoDB 5.0.6apt
需记忆的信息
data log配置⽂件
/var/lib/mongodb/var/log/mongodb/f
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 - /static/pgp/server-5.0.asc | sudo apt-key add -
sudo apt-get install gnupg
echo "deb [ arch=amd64,arm64 ] /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
// 创建⽇常⽤的普通账户
use test
/* 具体创建信息⾃⾏修改 */
{
user: "xyz",
pwd: "xyz123",
roles: [ { role: "readWrite", db: "test" },
{ role: "read", db: "reporting" } ]
}
)
如上,xyz⽤户只能登录test/reporting数据库,权限为分布读写/读
接下来,只需开启authorization,就可以登⼊了
sudo vim /f
# 修改后重启
linux安装数据库
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.changeUserPassword('root','rootNew');
//已有⽤户新增和解除built-in roles
/
/删除⽤户命令如下,虽然所有库的⽤户信息全存在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. ⽬前我看来没⽤,⽤了没法交互,官⽅也没默认没推荐
旧的是 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 的
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 插件
可视化管理
wget db/compass/mongodb-compass_1.30.1_amd64.deb
sudo dpkg -i mongodb-compass_1.30.1_amd64.deb
启动compass
mongodb-compass
卸载
sudo service mongod stop
sudo apt-get purge mongodb-org*
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。