以下无权限的命令请使用sudo,或在root下操作
一、安装mongodb
1. 创建yum源文件:
vim /etc/yum.repos.d/mongodb-org-3.2.repo
2. 写入源地址:
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
3. 执行安装命令:
sudo yum install -y mongodb-org
二、配置并启动mongod ( 本配置开启用户权限认证,拒绝裸奔)
1. 创建配置文件:/etc/mongodb/mongod.conf xxxx为端口号
# log save file
systemLog:
destination: file
logAppend: true #allow append log
path: /var/mongodb/log/mongo_xxxx.log
# db save path
storage:
dbPath: /var/mongodb/data/
journal:
enabled: true
# how the process runs
processManagement:
fork: true # fork and run in background
pidFilePath: /var/mongodb/run/mongo_xxxx.pid # location of pidfile
# network interfaces
net:
port: xxxx
bindIp: 0.0.0.0 # Listen to local interface only, comment to listen on all interfaces.
#open auth very important, if you don't need auth,comment out below
security:
authorization: enabled
2. 启动mongod服务
建仓service
- 创建 /etc/init.d/mymongod
- 添加可执行权限 chmod +x /etc/init.d/mymongod
- 写入bash:
#!/bin/bash
# source function library
. /etc/rc.d/init.d/functions
#define commond
CMD=/usr/bin/mongod
#define my mongo.conf
CONF_FILE=/etc/mongodb/mongod.conf
start()
{
#&:run backgroud, also can use --fock 某些版本fock不可用,使用&
$CMD -f $CONF_FILE --rest &
echo "MongoDB is running background..."
}
stop()
{
pkill mongod
echo "MongoDB is stopped."
}
case "$1" in
start)
start
;;
stop)
stop
;;
*)
echo $"Usage: $0 {start|stop}"
esac
- 启动服务:
service mymongod start
若要停止服务可用:
service mymongod stop
三、连接mongodb,并创建用户
1.连接mongodb
mongo --host 127.0.0.1 --port 123123
2. 创建超级管理员 (创建超级管理员前 停止mongod.conf中的鉴权 security: authorization: disabled)
use admin;
db.createUser({"user":"root","pwd":"passwd","roles":[{role:"root",db:"admin"},{role:"__system",db:"admin"},{role:"dbAdminAnyDatabase",db:"admin"}]});
3. 打开mongod.conf鉴权,重新启动mongod服务
4. 使用超级用户连接db
- ctrl+c 断开当前连接
- 连接db admin
mongo -u root -p root --host 127.0.0.1 --port xxxx admin
4.创建普通用户,此处给于较大权限,创建普通用户要use到普通用户所在的数据库
use userdb1
db.createUser({"user":"user1","pwd":"passwd","roles":[{role:"dbAdmin",db:"userdb1"},{role:"userAdmin",db:"userdb1"},{role:"readWrite",db:"userdb1"}]})
Built-In Roles(内置角色)说明:
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
PS:关于每个角色所拥有的操作权限可以点击上面的内置角色链接查看详情
参考官方文档说明
4.使用普通用户连接db
mongo -u user1 -p passwd --host 127.0.0.1 --port xxxx userdb1