首页 > 数据库 >Linux安装mongodb

Linux安装mongodb

时间:2024-07-16 17:56:25浏览次数:17  
标签:admin mongodb db local usr Linux root 安装

1.安装包下载

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.27.tgz

2.安装和启动

2.1 解压

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

2.2 将解压后的目录移动到 /usr/local 目录下,并改名为 mongodb

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

2.3 进入 mongodb 目录,并创建文件夹 data,在 data 文件夹下再创建 db 文件夹(用于存放数据库数据)和 log文件夹(存放 mongo 日志)。然后为其设置可读写权限。

# 进入目录
cd /usr/local/mongodb
# 创建三个文件夹
mkdir -p data/db data/log
# 设置可读写权限
chmod -R 666 data

2.4 在 mongodb 目录下新建配置文件 mongodb.conf(可选,但建议配置),打开文件输入以下内容。

# 数据库数据存放目录
dbpath=/usr/local/mongodb/data/db
# 日志文件存放目录
logpath=/usr/local/mongodb/data/log/mongodb.log
# 日志追加方式
logappend=true
# 端口
port=27017
# 是否认证
auth=true
# 以守护进程方式在后台运行
fork=true
# 远程连接要指定ip,否则无法连接;0.0.0.0代表不限制ip访问
bind_ip=0.0.0.0

2.5 配置环境变量,使用 vi /etc/profile 命令打开系统文件,并在末尾加入以下内容后保存,最后使用 source /etc/profile 命令重启系统配置。

export MONGODB_HOME=/usr/local/mongodb
export PATH=$PATH:$MONGODB_HOME/bin

2.6 完成以上步骤即可启动 Mongo 服务。

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

2.7 验证,使用安装目录下 bin 目录的 mongo 客户端命令连接和访问 MongoDB,默认会链接到 test 数据库。

[root@root mongodb]# mongo
MongoDB shell version v4.0.27
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("3351492c-dd1d-4b5b-922f-959609257d47") }
MongoDB server version: 4.0.27
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
        http://docs.mongodb.org/
Questions? Try the support group
        http://groups.google.com/group/mongodb-user
> db
test
>

2.8 开放端口

# 开放27017端口
[root@root mongodb]# firewall-cmd --zone=public --add-port=27017/tcp --permanent
success
# 让配置生效
[root@root mongodb]# firewall-cmd --reload
success
# 查看开放的端口,验证是否成功
[root@root mongodb]# firewall-cmd --zone=public --list-ports
22022/tcp 3306/tcp 27017/tcp 6379/tcp

2.9 检测服务状态

# 查看 mongodb 进程状态
[root@root mongodb]# ps aux | grep mongo
root      3019  0.4  0.3 1099448 53284 ?       Sl   18:10   0:01 mongod -f /usr/local/mongodb/mongodb.conf
root      3224  0.0  0.0 112648   956 pts/0    S+   18:15   0:00 grep --color=auto mongo
# 检查端口是否启动
[root@root mongodb]# netstat -lanp | grep 27017
tcp        0      0 0.0.0.0:27017           0.0.0.0:*               LISTEN      3019/mongod
unix  2      [ ACC ]     STREAM     LISTENING     479438354 3019/mongod          /tmp/mongodb-27017.sock

如果 netstat 命令没有找到,先进行安装。

yum install -y net-tools

2.10 停止服务

# 通过进程ID杀死
kill -9 PID

# 通过mongod命令关闭mongodb服务
[root@root mongodb]# mongod -f /usr/local/mongodb/mongodb.conf  --shutdown
killing process with pid: 1566
[root@chenpi mongodb]# 

2.11 开机自启动

使用 vi /lib/systemd/system/mongodb.service 命令新建开机启动配置文件,输入以下内容保存。

[Unit]
    Description=mongodb
    After=network.target remote-fs.target nss-lookup.target
[Service]
    Type=forking
    ExecStart=/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb.conf
    ExecReload=/bin/kill -s HUP $MAINPID
    ExecStop=/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb.conf --shutdown
    PrivateTmp=true
[Install]
    WantedBy=multi-user.target

然后依次执行以下4个命令,使之生效。

# 启动 mongodb
[root@root mongodb]# systemctl start mongodb.service
# 查看服务状态
[root@root mongodb]# systemctl status mongodb.service
● mongodb.service - mongodb
   Loaded: loaded (/usr/lib/systemd/system/mongodb.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2023-07-17 18:24:47 CST; 10s ago
  Process: 3259 ExecStart=/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb.conf (code=exited, status=0/SUCCESS)
 Main PID: 3261 (mongod)
   CGroup: /system.slice/mongodb.service
           └─3261 /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb.conf

Jul 17 18:24:45 root systemd[1]: Starting mongodb...
Jul 17 18:24:45 root mongod[3259]: about to fork child process, waiting until server is ready for connections.
Jul 17 18:24:45 root mongod[3259]: forked process: 3261
Jul 17 18:24:47 root mongod[3259]: child process started successfully, parent exiting
Jul 17 18:24:47 root systemd[1]: Started mongodb.
# 查看服务状态
[root@root mongodb]# systemctl enable mongodb.service
Created symlink from /etc/systemd/system/multi-user.target.wants/mongodb.service to /usr/lib/systemd/system/mongodb.service.
# 修改 mongodb.service文件时,重新加载文件
[root@root mongodb]# systemctl daemon-reload

2.12 启动重启停止服务

systemctl start mongodb.service
systemctl restart mongodb.service
systemctl stop mongodb.service

3.用户名密码

启动 MongoDB 服务默认是没有账号密码的,即连接上即可进行各种操作。

但是我们在启动配置文件中,指定了 auth=true,即开启了认证,所以链接后需要认证才能执行操作。默认情况下,MongoDB 是没有管理员账户的,所以我们需要在 admin 数据库中使用 db.createUser() 命令添加管理员帐号或其他角色。

3.1 内置角色

  • 数据库用户角色:read、readWrite
  • 数据库管理角色:dbAdmin、dbOwner、userAdmin
  • 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager
  • 备份恢复角色:backup、restore
  • 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  • 超级用户角色:root
  • 内部角色:__system

3.2 创建管理员账号

切换到 admin 数据库,使用以下命令创建管理账号,拥有操作所有数据库权限。

[root@root mongodb]# mongo
MongoDB shell version v4.0.27
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("ac438d7e-d1cb-4b1c-b94e-44c5b508748e") }
MongoDB server version: 4.0.27
> use admin
switched to db admin
> db.createUser({user:"admin",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
Successfully added user: {
        "user" : "admin",
        "roles" : [
                {
                        "role" : "userAdminAnyDatabase",
                        "db" : "admin"
                }
        ]
}
> Successfully added user: {
...         "user" : "admin",
...         "roles" : [
...                 {
...                         "role" : "userAdminAnyDatabase",
...                         "db" : "admin"
...                 }
...         ]
... }
2023-07-17T18:32:16.757+0800 E QUERY    [js] SyntaxError: missing ; before statement @(shell):1:13

3.3 验证

使用 mongo 命令连接上之后,如果不进行 db.auth("用户名","密码") 进行用户验证的话,是执行不了任务命令的,只有通过认证才可以。注意,每一个用户都需要在创建这个用户的认证库下进行认证。

> use admin
switched to db admin
> db.auth("admin", "123456")
1
> show tables
system.users
system.version

3.4 演示对单个数据库创建用户和密码

平常开发中,一般新项目会创建新的数据库,而且创建一个新的数据库用户仅对此数据库进行读写。

以下演示创建 liulunan用户,密码为123456,并设置对 nobody 数据库读写的权限。注意,创建新用户前,先使用 admin 用户登录,因为我们刚才为 admin 用户设置了 userAdminAnyDatabase 权限。

> use admin
switched to db admin
> db.auth("admin", "123456")
1
> use nobody
switched to db nobody
> db.createUser({user:'liulunan',pwd:'123456',roles:[{role:'readWrite',db:'nobody'}]})
Successfully added user: {
        "user" : "liulunan",
        "roles" : [
                {
                        "role" : "readWrite",
                        "db" : "nobody"
                }
        ]
}

标签:admin,mongodb,db,local,usr,Linux,root,安装
From: https://blog.csdn.net/liulunan_lln/article/details/140472235

相关文章

  • MariaDb安装及登录
    一、安装​ 及客户端sudoaptinstallmariadb-servermariadb-client-y二、链接、测试mysql-uroot-pshowdatabases;三、设置安全策略sudomysql_secure_installation四、配置、开启其他客户端访问​ 1、配置其他访问:修改配置文件sudovi/etc/mysql/mariadb.c......
  • bundletool工具使用(Android aab包安装)
    ......
  • Linux的top命令参数详解
    简介top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准......
  • Linux 配置gitlab步骤
    最近在玩gitlab,记录一下配置gitlab的过程一、安装gitlab相关的依赖环境   (1) yuminstall-ycurlpolicycoreutilsopenssh-serveropenssh-clientspostfixpolicycoreutils-pythoncronie           (2) 启动Postfix        systemct......
  • Linux中的一些基础命令用法
    1.文件的时间的概念创建时间修改时间访问时间使用stat命令获取文件的时间信息[root@tdr~]#stat/opt/d.txt 文件:"/opt/d.txt" 大小:0       块:0     IO块:4096 普通空文件设备:fd00h/64768d   Inode:33868148  硬链接:1权限:(06......
  • Linux基础
    前言:基于b站千锋dagou老师的视频 所简单归纳的 一些简单的基础的Linux命令(基于Centos7)本文目录结构一.Linux系统下的一些常见目录二.目录、文件管理命令三.文件阅读命令四.查询命令五.文件权限操作命令六.用户权限操作命令六.进程管理命令七.基础语法结构 ......
  • Linux-awk
    awk3.4.2功能过滤 取行取列统计计算数组函数3.4.3格式awk条件动作(找谁干啥)awk[options]'commands'filenamesawk[options]-fawk-script-filefilenames3.4.4awk处理数据的方式:1、进行逐行扫描文件,从第一行到最后一行2、寻找匹配的特定模式的行,......
  • MongoDB综合实战篇(超容易)
    一、题目引入在MongoDB的gk集合里插入以下数据:用语句完成如下功能:(1)查询张三同学的成绩信息(2)查询李四同学的语文成绩(3)查询没有选化学的同学(4)统计语文成绩的平均分(5)查询英语成绩最高的同学(6)求每个同学语数英三门课的总成绩二、解题方案1.表格信息插入db.gk.insert({......
  • 2024最新版Python安装详细教程!一键安装,永久使用
    打开上面的Python官网地址,如下图所示,鼠标放入网页Downloads栏目,选择里面的windows操作系统。三、进入windows对应的页面,选择python版本(1)选择python的稳定发布版本StableReleases点击进入windows操作系统对应的页面,显示python安装版本,这些python安装版本适合windows操......
  • Docker安装kafka
    Docker安装kafka安装之前,先创建一个网络,模式为桥接的方式dockernetworkcreatekafkaBridge--driverbridge只要能保证,zk和kafka能后相互访问就好了,方式随意。注意:使用同网络好于不同网络。虽然理论上Kafka和ZooKeeper可以跨广域网部署,但高延迟的网络连接可能会影响......