Linux 离线安装MongoDB 4.x

Linux 离线安装MongoDB 4.4.4

0.前言

版本:Centos7+MongoDB 4.4.4

官网:https://www.mongodb.com/

本篇文章安装配置为单个机器单个实例

如若安装单个机器多个实例多台机器集群,本篇文章仅限参考。

1. 下载

点击这里自定义版本下载,或者直接点击这里下载

version:4.4.4

Platform:RedHat / CentOS 7.0

Package:tgz

2. 安装配置

上传到linux中

解压后移动文件存储位置并改名

tar -zxvf mongodb-linux-x86_64-rhel70-4.4.4.tgz

mv mongodb-linux-x86_64-rhel70-4.4.4 /usr/local/mongodb

添加配置文件

cd /usr/local/mongodb/

vi mongodb.conf

以下为配置文件mongodb.conf中的内容

#数据文件存放目录
dbpath = /usr/local/mongodb/data/db
#日志文件存放目录
logpath = /usr/local/mongodb/logs/mongodb.log
#默认端口27017
port = 27017
#以守护程序的方式启用,即在后台运行
fork = true
#允许远程连接,127.0.0.1只允许本地连接
bind_ip=0.0.0.0
#是否需要认证,如果启用,则需要创建mongodb账号密码,使用账号密码才可以远程访问
#auth = true

然后创建mongodb.conf配置文件中配置的数据文件目录和日志文件

mkdir -p /usr/local/mongodb/data/db
mkdir -p /usr/local/mongodb/logs
touch /usr/local/mongodb/logs/mongodb.log

3. 配置环境变量

vi /etc/profile 

然后添加以下内容

扫描二维码关注公众号,回复: 13036914 查看本文章
export PATH=$PATH:/usr/local/mongodb/bin

使刚刚的修改立即生效

source /etc/profile

4. 启动mongo服务

mongod -f /usr/local/mongodb/mongodb.conf

启动成功如下

[root@iZbp185opgs9ov4aretwdxZ ~]# mongod -f /usr/local/mongodb/mongodb.conf 
about to fork child process, waiting until server is ready for connections.
forked process: 11622
child process started successfully, parent exiting

5. 连接mongo客户端

#未开启认证
mongo
#开启认证使用账号密码连接
mongo -u admin -p admin

连接成功如下

[root@iZbp185opgs9ov4aretwdxZ ~]# mongo
MongoDB shell version v4.4.4
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session {
    
     "id" : UUID("14909903-578d-4023-83cd-dec9703c904e") }
MongoDB server version: 4.4.4
---
The server generated these startup warnings when booting: 
        2021-03-04T15:00:41.842+08:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem
        2021-03-04T15:00:42.732+08:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
        2021-03-04T15:00:42.732+08:00: You are running this process as the root user, which is not recommended
        2021-03-04T15:00:42.732+08:00: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never'
        2021-03-04T15:00:42.732+08:00: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. We suggest setting it to 'never'
---
---
        Enable MongoDB's free cloud-based monitoring service, which will then receive and display
        metrics about your deployment (disk utilization, CPU, operation statistics, etc).

        The monitoring data will be available on a MongoDB website with a unique URL accessible to you
        and anyone you share the URL with. MongoDB may use this information to make product
        improvements and to suggest MongoDB products and deployment options to you.

        To enable free monitoring, run the following command: db.enableFreeMonitoring()
        To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---
> 

也可以通过ps -ef | grep mongo查看进程是否启动,显示两条即为启动

6. 关闭mongo服务

mongod --dbpath /usr/local/mongodb/data/db --logpath /usr/local/mongodb/logs/mongodb.log --shutdown

rs:PRIMARY> use admin
rs:PRIMARY> db.shutdownServer()
#退出后即关闭

7. 创建用户【建议】

# 切换到admin数据库
use admin
# 使用db.createUser() 创建一个管理员用户admin,角色为root,指定具体数据库
db.createUser({
    
    user:'admin',pwd:'admin',roles:[{
    
    role:'root',db:'admin'}]})
# db.auth()认证一下获取权限,认证通过后可以操作数据库,成功则会输出1
db.auth("admin","admin")


# use 命令也可以是创建数据库,当指定数据库不存在时即为创建,切换到一个新的数据库xtest
use xtest
# 创建用户xtest dbOwner权限
db.createUser({
    
    user:'xtest',pwd:'xtest',roles:['dbOwner']})

# 查看有哪儿些用户
show users
# 删除用户
db.dropUser("user_name")

必须要创建一个管理员账号,创建完账号后,需要在配置文件mongodb.conf中开启auth认证,然后重启mongo服务

重启后需要通过刚刚创建的管理员账号密码登录连接客户端,否则show dbs命令无法查看到任何数据库,因为没有权限

客户端连接格式为:mongo -u 账号 --authenticationDatabase 数据库名 -p 密码

--authenticationDatabase 数据库名 选填

mongo -u admin --authenticationDatabase admin -p admin
mongo -u admin -p admin

role角色:

read    	允许用户读取指定数据库
readWrite    	允许用户读写指定数据库
dbAdmin    	允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
dbOwner		数据库拥有者,包含readWrite、dbAdmin、userAdmin
userAdmin    	允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin    	只能切换在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase    	只能切换在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase    	只能切换在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase    	只能切换在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase    	只能切换在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root    	只能切换在admin数据库中可用。超级账号,超级权限

8. 添加副本集和keyfile文件【可选】

(1)生成存储身份验证信息的keyfile文件

同时开启了auth认证和副本集需要keyfile文件,不配置的话启动时会报错:BadValue: security.keyFile is required when authorization is enabled with replica sets

cd /usr/local/mongodb/data/db
openssl rand -base64 741 > mongodb.key
#修改权限,不修改之后启动时会报错
chmod 400 mongodb.key

(2)mongodb仅使用一个节点在MongoDB中启用副本集

修改配置文件添加副本集信息和keyfile位置信息

cd /usr/local/mongodb/

vi mongodb.conf

以下为配置文件mongodb.conf中的内容

#数据文件存放目录
dbpath = /usr/local/mongodb/data/db
#日志文件存放目录
logpath = /usr/local/mongodb/logs/mongodb.log
#默认端口27017
port = 27017
#以守护程序的方式启用,即在后台运行
fork = true
#允许远程连接,127.0.0.1只允许本地连接
bind_ip=0.0.0.0
#是否需要认证,如果启用,则需要创建mongodb账号密码,使用账号密码才可以远程访问
auth = true
#副本集名称
replSet=rs
#存储身份信息的秘钥文件
keyFile=/usr/local/mongodb/data/db/mongodb.key

(3)重启mongo服务

mongod --dbpath /usr/local/mongodb/data/db --logpath /usr/local/mongodb/logs/mongodb.log --shutdown

mongod -f /usr/local/mongodb/mongodb.conf

(4)使用以下命令初始化副本集 rs.initiate()

登录到MongoDB shell并运行命令rs.initiate()

> rs.initiate()
{
    
    
	"info2" : "no configuration specified. Using a default configuration for the set",
	"me" : "iZbp185opgs9ov4aretwdxZ:27017",
	"ok" : 1,
	"$clusterTime" : {
    
    
		"clusterTime" : Timestamp(1615022835, 1),
		"signature" : {
    
    
			"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
			"keyId" : NumberLong(0)
		}
	},
	"operationTime" : Timestamp(1615022835, 1)
}
rs:SECONDARY> 

查看副本集信息

rs.status()

至此完成。

9. 可视化工具

点击NoSQLBooster for MongoDB下载工具,该工具部分功能试用30天免费。

如何连接:

使用该工具连接MongoDB时

如果MongoDB设置无需密码认证,则直接Connections->Create->Basic->输入Server中ip和端口即可->点击Test Connecting->如果出现绿色ok则成功,红色字体报错则失败(失败原因为可能为ip或端口有错误)->连接成功后点击Save & Connect->完成

如果MongoDB设置需密码认证,也就是配置文件设置了auth = true,则Connections->Create->Basic->输入Server中ip和端口->点击Authentication->Mode选择Basic(Username/Password),Auth DB添加数据库名,User Name添加账号名,Password填写密码->点击Test Connecting->如果出现绿色ok则成功,红色字体报错则失败->连接成功后点击Save & Connect->完成

失败原因为可能为ip端口有错误,可能为数据库账号密码错误,都检查无误后如果仍无法连接,应检查配置文件中是否配置auth = true,然后关闭mongo服务后重新启动,启动后在黑窗口通过账号密码连接mongo客户端,重新创建账号密码,在工具中使用新创建的账号密码连接即可)

如果阿里云服务器无法连接,则有可能是云盾拦截,配置白名单:点击这里

或更换手机热点试一下

猜你喜欢

转载自blog.csdn.net/qq_43853055/article/details/114379405