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