centos7 安装MongoDB数据库的采坑经历 + 超级用户创建

目标:

今天想在自己买的服务器【centos7】上面配置一个mongodb数据库

其实,这个文章老早就写了一点,然后一忙给忘了,决定今天把这个文章补全。

安装步骤:

1、安装依赖包:

sudo yum install libcurl openssl

2、下载MongoDB源码压缩包

下载地址:

在这里插入图片描述

在这里插入图片描述

我这里选择rpm安装方式:

# 下载1
wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.4/x86_64/RPMS/mongodb-org-server-4.4.0-1.el7.x86_64.rpm
# 或者
wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.4/x86_64/RPMS/mongodb-org-shell-4.4.6-1.el7.x86_64.rpm
# 安装:
rpm -ivh mongodb-org-server-4.4.0-1.el7.x86_64.rpm

注意点:

linux有server、shell。其实server的rpm,直接使用rpm安装之后,说明服务端已经安装成功。
shell代表是客户端,可以连接服务端。
根据需要安装。

# 服务端-server
https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.4/x86_64/RPMS/mongodb-org-server-4.4.6-1.el7.x86_64.rpm
# 客户端-shell
https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.4/x86_64/RPMS/mongodb-org-shell-4.4.6-1.el7.x86_64.rpm

3、设置权限:

默认情况下 MongoDB 启动后会初始化以下两个目录:

数据存储目录:/var/lib/mongodb
日志文件目录:/var/log/mongodb
我们在启动前可以先创建这两个目录并设置当前用户有读写权限:

sudo mkdir -p /var/lib/mongo
sudo mkdir -p /var/log/mongodb
sudo chown `whoami` /var/lib/mongo     # 设置权限
sudo chown `whoami` /var/log/mongodb   # 设置权限

启用身份验证配置

# 查看配置文件
cat /etc/mongod.conf
security:
  authorization: enabled

我的完整配置文件:

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# Where and how to store data.
storage:
  dbPath: /var/lib/mongo
  journal:
    enabled: true
#  engine:
#  wiredTiger:

# how the process runs
processManagement:
  fork: true  # fork and run in background
  pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile
  timeZoneInfo: /usr/share/zoneinfo

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
  #bindIp: 127.0.0.1  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.


#security:

security:
  authorization: enabled

#operationProfiling:

#replication:

#sharding:

## Enterprise-Only Options

#auditLog:

#snmp:

4、接下来启动 Mongodb 服务:

# 开启服务
mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --fork

# 设置远程所有ip可以连接【必须配合服务器的安全组端口号设置来搞】
mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --bind_ip_all --fork

# 设定权限
mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --fork --auth

# 关闭
mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --shutdown

# 配合权限+远程访问
mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --bind_ip_all --fork

# 线上:
mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --bind_ip_all --fork --auth

5、连接:

终端输入mongo

在这里插入图片描述
在这里插入图片描述

使用有权限的连接:

mongo --port 27017 -u "root" --authenticationDatabase "admin" -p

在这里插入图片描述

6、创建超级用户和普通用户:

集合配合:

# 上面命令启动服务有参数执行、
--bind_ip_all --fork

还有:authorization和bindIp一起使用,才能正常远程使用密码访问。

创建超级用户:

>use admin
>db.auth("xiong", "123456")

# 超级用户
db.createUser(
  {
    user: "root",
    pwd: "****************",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
  }
)

创建指定权限的用户

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

超级用户创建过程:

1、先修改配置并将mongo启动的去掉--auth参数:
修改配置:
#修改配置文件
vi /etc/mongod.conf

# 然后加个参数:保存退出
auth = false
之前的启动先关闭:
# 查看进程id
ps -ef |grep mongo
# 然后kill
# 比如我的之前是:
mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --bind_ip_all --fork --auth
重启启动【不带–auth参数】
mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --bind_ip_all --fork
2、进入mongo,新建一个角色
# 直接进入
mongo
# 查看是否已经权限,如果显示数据库,就代表可以了
show dbs
# 进入admin
use admin
# 新建一个角色sysadmin
db.createRole({role:'sysadmin',roles:[],
    privileges:[
        {resource:{anyResource:true}, actions:['anyAction']}
    ]
})
3、然后新建一个用户:

然后,新建一个用户,使用这个角色,注意,这个角色的db是admin,操作如下:

# 用户和密码改为自己想弄的
db.createUser({
    user:'your_user_name',
    pwd:'your_password',
    roles:[
        {role:'sysadmin',db:'admin'}
    ]
})

如果提示已经含有这个用户,需要先删除。然后在创建即可

# db.dropUser(“用户名”)
# 比如我的是root
db.dropUser(“root”)
4、重新修改配置并启动带上–auth参数。
修改配置:
#修改配置文件
vi /etc/mongod.conf

# 然后加个参数:保存退出
auth = true
之前的启动先关闭:
# 查看进程id
ps -ef |grep mongo
# 然后kill
# 比如我的之前是:
mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --bind_ip_all --fork --auth
重启启动【不带–auth参数】
# 最后带上--auth参数
mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.log --bind_ip_all --fork --auth
5、使用刚刚的用户连接

使用有权限的连接:

mongo --port 27017 -u "root" --authenticationDatabase "admin" -p

输入密码,然后show dbs,进入一个db,use dbname,

# 显示所有db
show dbs
# 切换到需要删除的db
use dbname
# 删除【这个时候就能删除了,不会再报错误了。】
db.dropDatabase()

参考文章:

https://juejin.im/post/6844903828811153421
https://www.cnblogs.com/liulun/p/11067681.html
https://blog.csdn.net/qq_40369944/article/details/10549153
https://www.runoob.com/mongodb/mongodb-linux-install.html
https://www.cnblogs.com/liulun/p/11067681.html