MongoDB:Linux下的安装与配置

简介

翻历史笔记的时候找到的,21年整理的,趁着本次系统性梳理笔记,搬到CSDN上。

解压

下好MongoDB的压缩包,比如我下的是mongodb-linux-x86_64-3.4.2.tgz找好路径,我是都放在/software目录下。

然后进入上面的目录,解压:

 tar -zxvf  -C .

然后我们就有了一个/software/mongodb-xxx文件夹,之后的配置都是在这个文件夹下进行

创建配置文件

MongoDB有些麻烦,我看网上说的,它需要手动创建几个配置文件,包括数据库文件夹、日志文件夹等,如果不创建,第一次运行会报错,因为MongoDB不会自动创建这些文件夹。

首先创建数据库文件夹,用来放数据库信息的。

cd /software/mongodb-xxx
mkdir data/

然后创建日志文件夹:

cd /software/mongodb-xxx
mkdir logs/

最后创建主配置文件夹与主配置文件:

cd /software/mongodb-xxx
mkdir etc/
cd etc/
vi mongodb.conf

然后填充主配置文件,在这个文件里为MongoDB提供各种配置文件:

dbpath=/software/mongodb-xxx/data
logpath=/software/mongodb-xxx/logs/mongodb.log
port=27017
fork=truejournal=false
storageEngine=mmapv1

参数定义后续再说。

27017应该是MongoDB的默认监听端口。

第一次启动

MongoDB安装好第一次启动,是不需要密码的,这时候也没有任何用户,我们可以使用以下命令启动MongoDB:

./mongod -f /software/mongodb-xxx/mongodb.conf

启动后,我们需要进入MongoDB后台,添加管理用户,(MongoDB里没有无敌用户root这一角色,只有一个能管理用户的用户角色,叫userAdminAnyDatabase)。

首先进入MongoDB shell(进入安装文件夹的bin目录下):

mongo

然后在内置的MongoDB交互界面中,输入以下命令,创建用户:

use admin
db.createUser( {user: "wadmin",pwd: "123456",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]});

成功后,会看到,

在这里插入图片描述

代表着用户创建完成。以上是我从参考文献1中的盗图,因为安装过程中我没有截图

用户创建完成后,你可以使用show users或者**db.system.users.find()**来查看已有用户。

添加完管理用户后,你需要关闭MongoDB,基于用户名和密码重新启动MongoDB,注意应该是在交互界面中使用**db.shutdownServer()**关闭,不要使用kill直接杀掉MongoDB进程。(如果这样做了,请去data/db目录下删除mongo.lock文件)

然后修改配置文件,在里面添加:

auth=true

重新启动MongoDB:

./mongod -f /software/mongodb-xxx/mongodb.conf

进入Mongo shell:

./mongo

重新登录admin数据库,并进行用户身份验证:

use admin
db.auth("wadmin", "123456")

返回1则表示认证成功。

添加环境变量

把mongod路径添加到系统路径,把mongo做一个软链接

问题

有个小问题,执行db.shutdownServer()来关闭MongoDB服务的时候,会提示报错:
在这里插入图片描述

解决方法是为当前用户添加权限:

db.updateUser(
 "wadmin",
        {
           roles : [
                     {"role" : "userAdminAnyDatabase","db" : "admin"},
                     {"role" : "dbOwner","db" : "admin"},                     {"role" : "clusterAdmin", "db": "admin"}
                   ]
        }
 )

然后再shutdownServer(),出现上面提示就正常了。

或者使用killall MongoD来关闭也可以。

然后重新启动。

客户端与服务器端的版本问题

正常来讲,MongoDB是向下兼容的,也就是说支持客户端版本高于服务器端版本,但是反之如果客户端版本低的话,可能会出问题。

密码不能包含特殊字符

否则有可能会报"SASL authentication step: Authentication failed"

参考文献:

  1. mongodb-golang 权限验证报错:SASL authentication step: Authentication failed

监控MongoDB运行状态

想验证MongoDB是否启动,可以输入命令:

lsof -i :27017

检测端口是否已经在使用中。

常用命令

show databases;		# 展示当前已有数据库
use db_name;	# 切换到指定数据库
show users;		# 显示当前数据库下所有账户
db.system.users.find().pretty();		# 显示当前数据库下所有账户(详细信息,含认证方式等)
db.dropUser("用户名");		# 删除指定用户
quit();		# 退出数据库后台,即Mongo shell
exit;		# 功能同上
db;			# 显示当前使用的数据库

其他

验证机制

MongoDB在登录的时候有几套密码验证机制:

  • MONGODB-CR:这个从4.0版本开始就已经废除了(也有说3.6开始就被弃用的);
  • MONGODB-X509:用于TLS/SSL证书身份验证
  • SCRAM-SHA-256:使用SHA-256 哈希函数加密,并且需要将featureCompatibilityVersion设置为4才可以使用;
  • SCRAM-SHA-1:使用SHA-1 哈希函数加密,3.0版本后默认加密方式

需要注意,只有在数据库启动时才能指定该参数

mongod --setParameter authenticationMechanisms=PLAIN,SCRAM-SHA-256 --auth

如何查看你的当前启动的MongoDB是什么验证方式呢?

use admin
db.system.version.findOne({"_id":"authSchema"})

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OYpA5H01-1686126037876)(%E5%AE%89%E8%A3%85%E4%B8%8E%E9%85%8D%E7%BD%AE.assets/image-20210721095413794.png)]

  • 值为3表示:MONGODB-CR
  • 值为5表示:SCRAM-SHA-1

示例

mongoexport -h 127.0.0.1:27017 -u xxx -p xxx --db volcano --collection content --out temp.csv --authenticationDatabase=volcano --type=csv -f "_id,sourceId,coverImage.0.code"

如果需要导出csv文件的话,一定要指定–type=csv,否则仍默认导出json;

参考文献

  1. Linux下MongoDB安装和配置详解
  2. MongoDB用户及数据库管理命令
  3. 菜鸟教程-MongoDB
  4. MongoDB官网下载地址
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值