Centos7 tgz安装、删除MongoDB 、创建数据库、自定义用户 创建用户,设置账号,密码,权限、常用MongoDB命令与报错start without the “--fork“

安装环境:

Centos 7 
安装包 4.x MongoDB版本

一、tgz 包安装 MongoDB

官网下载链接:传送门
在这里插入图片描述
在这里插入图片描述

解压命令:

注意是 tgz 包

tar -zxvf  mongodb 的 tgz 包名

解压文件夹改名为 mongodb:

mv mongodb 的 tgz 包名 mongodb

mongodb.conf 配置文件:

#指定数据路径
dbpath=/home/mongodb/data
#指定MongoDB日志文件
logpath=/home/mongodb/mongodb.log
# 使用追加的方式写日志
logappend=true
#端口号
port=27017
#方便外网访问,外网所有ip都可以访问,不要写成固定的linux的ip
bind_ip=0.0.0.0
fork=true # 以守护进程的方式运行MongoDB,创建服务器进程
#auth=true #启用用户验证
#bind_ip=0.0.0.0 #绑定服务IP,若绑定127.0.0.1,则只能本机访问,不指定则默认本地所有IP
#开启登录认证
#
auth = true

二、报错问题 - start without the “–fork“

问题在于没有创建 data 和 log 这两个文件夹

命令:

mkdir {
    
    data, log}

2.1 目录权限分配:

chmod 777 data/
chmod 777 log/

2.2 设置系统变量

#修改/etc/profile,添加环境变量,方便执行MongoDB命令
export MONGODB_HOME=/home/mongodb
PATH=$PATH:$MONGODB_HOME/bin

刷新 /etc/profiel 配置文件

source /etc/profile

已配置文件方式启动 mongodb

2.3 以配置文件方式启动mongodb

启动命令:-f 以守护进程方式启动

mongod -f /home/mongodb/mongodb.conf

三、连接mongo 命令

一个要注意的地方是,直接使用mongo,那么就只会使用默认的ip + 端口(即127.0.0.1: 27017

如果要访问指定的端口命令如下:

mongo
或
mongo --host=127.0.0.1 --port=9567

四、删除mongodb数据库

直接把整个 mongodb/ 的文件夹删除就行了。

五、查看 MongoDB 数据库、创建 Mongodb 数据库

mongodb3.0 没有admin数据库了

本次 MongoDB 的安装测试版本为 4.x 版本

5.1 查看 MongoDB 数据库

show dbs 可以查看当前的 Mongodb 存在的数据库

show dbs

显示结果为空
在这里插入图片描述

也就意味着,以前使用 show dbs 命令,4.x MongoDB 版本现在是没有任何数据库存在,都为空的

5.2 创建 MongoDB 数据库

下面手动创建数据库 admin

use DATABASE_NAME

如果数据库不存在,则创建数据库,否则切换到指定数据库。

在这里插入图片描述

注意: 在 MongoDB 中,集合只有在内容插入后才会创建! 就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。

db 命令查看当前数据库名

db

在这里插入图片描述

六、自定义用户 创建用户,设置账号,密码,权限

如果遇到 MongoDB 的用户访问权限问题,那么请注意如果是使用配置文件启动 MongoDB 的,请注释掉 auth = True,取消登录验证。

在这里插入图片描述

role: 指定用户权限
db:指定数据库

// admin数据库 创建管理员账号
> use admin
switched to db admin
> db.createUser({ user: "admin", pwd: "password", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })
> 

// 创建root账号
> db.createUser({
   
   user: "root",pwd: "123456", roles: [ { role: "root", db: "admin" } ]})

在这里插入图片描述

已存在用户的,会报出如下错误:

在这里插入图片描述

// 进入自己的数据库,创建自己数据库的管理角色
> use test
> db.createUser({
    
    user: "test",pwd: "123456",roles: [ {
    
     role: "dbOwner", db: "test" } ]})
> 

七、用户权限角色说明

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

参考链接

1. mongodb 角色总结


八、常用的 MongoDB 命令

8.1 用户登录、数据库内的表(集合)查看、查看表(集合)内数据项(行数据 / 文档) 、更新用户、删除用户

笔者记录:

比较关系型数据库的命令,如 MySQL 数据库,切换数据库命令时 use 数据库名,这一点和 MongoDB 的命令一样,只不过 MongoDB 不用像 MySQL 那样,需要繁琐的建立数据库表的结构,MongoDB 可以很容易的就自己自动创建数据库。

8.1.1 自动创建或自动切换当前数据库

use test:表示将使用test数据库,即use命令后将在 test 数据库中操作。(use 命令,这一定会是连接 mongodb 成功后的第一条命令,只有 use 命令后,才能使用 db.auth() 命令登录用户

8.1.2 用户登录

db.auth():对test数据库授权,即登录 MongoDB 数据库,否则将不能正常操作,正常登陆返回值为 1,也就是说如果在使用mongo 命令,连接了mongodb 成功够,你应该先 use 某个数据库 然后 db.auth(用户名, 用户密码) ,否则后面没法弄了,因为这是个刚安装好的 mongodb 数据库,没有什么用户。

报错:logical sessions can’t have multiple authenticated users
原因是 mongodb 不允许一次会话认证多个用户。

(有一点要注意:use 某一个数据库后,最好不要使用 db.auth() 输入两个不同用户来登录当前的 shell 会话,否则会报错 logical sessions can't have multiple authenticated users ,也就是说一个会话,直接use 某个数据库,然后 db.auth() 登录有权限访问该数据库的用户,如果因为不小心登录了两个用户,那么直接退出,重新用 mongo 命令连接mongodb 数据库,重复刚才的 use 和 db.auth()命令)

show collections:显示 test 数据库中所有当集合列表。

db.test.find():查看test集合中的文档列表。

以 admin 数据库为例:

(由于当前的4.x Mongodb版本,这里的 admin 数据库是新建的,所有并没有什么文档数据,find() 命令查找出来的是空的。)

在这里插入图片描述

其他常用命令,以 test 用户为例:

更新用户

db.updateUser(test, writeConcern)

同下,大写 U

删除用户

db.dropUser('test')

注意:不是dropuser() 而是 dropUser() 有大写的 U 的

一般来说,use 到指定的数据库,然后在使用 db.dropUser() 命令删除指定的用户

show users

在这里插入图片描述

db.dropUser('test')

在这里插入图片描述

8.2 用户远程登录

shell 终端连接 (mongo ip:端口/数据库名 -u 用户名 -p 用户密码

mongo 10.128.218.14:27017/database -u username -p password

参考链接

1. CentOS7安装MongoDB

2. MongoDB:To see additional information in this output, start without the “–fork“ option

3. 连接MongoDB

4. MongoDB 创建数据库

5. 使用db.auth()登录mongodb

猜你喜欢

转载自blog.csdn.net/qq_42701659/article/details/129854709
今日推荐