MongDB安装安装
官网:https://www.mongodb.com/
中文官网:https://www.mongodb.org.cn/
操作系统环境:CentOS7.6
MongDB版本:MongDB-4.4.1
MongDB安装目录:/mongdb
1、安装编译安装所需依赖包
yum -y groupinstall "Development tools"
yum -y install openssl openssl-devel
2、关闭大页内存
mkdir /etc/tuned/virtual-guest-no-thp
vim /etc/tuned/virtual-guest-no-thp/tuned.conf
[main]
include=virtual-guest
[vm]
transparent_hugepages=never
官方大页内存文档:https://docs.mongodb.com/manual/tutorial/transparent-huge-pages/
3、查看大页内存是否已经关闭
cat /sys/kernel/mm/transparent_hugepage/enabled
4、设置内核参数,关闭NUMA
echo 0 >/proc/sys/vm/zone_reclaim_mode
sysctl -w vm.zone_reclaim_mode=0
5、解压安装包(该安装包,是解压后直接能用)
tar -vxf mongodb-linux-x86_64-rhel70-4.4.1.tgz
6、将压缩包放到指定目录
mv mongodb-linux-x86_64-rhel70-4.4.1 /mongodb
7、创建mongodb用户
useradd mongodb
8、配置mongodb环境变量.bash_profile文件
MongoDB_Home=/mongodb
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$MongoDB_Home:/bin
export PATH
9、将mongodb用户授予权限
chown -R mongodb:mongodb /mongodb/
10、使用mongodb用户创建数据库配置文件目录、数据文件目录、日志文件目录
mkdir -p /mongodb/conf
mkdir -p /mongodb/data/mongodb1
mkdir -p /mongodb/log/mongodb1
touch /mongodb/log/mongodb1/mongodb1.log
11、修改/etc/security/limits.conf
mongodb hard nofile 65535
mongodb soft nofile 65535
mongodb soft nproc 65535
mongodb hard nproc 65535
12、查看limits是否已经更改完成(使用mongodb用户)
13、创建MongDB配置文件,定义启动所需相关参数
官方配置文档参考:https://docs.mongodb.com/manual/administration/configuration/
以下是我的配置文档
processManagement:
fork: true
net:
bindIp: 0.0.0.0
port: 27017
security:
authorization: enabled
storage:
dbPath: /mongodb/data/mongodb1
systemLog:
destination: file
path: "/mongodb/log/mongodb1/mongodb1.log"
logAppend: true
storage:
journal:
enabled: true
配置文件说明
fork: true 表示使用后台进程
bindIp: 0.0.0.0 表示所有IP地址都能访问,这个可以配置多个地址段使用英文逗号隔开
dbPath: 表示数据存储的路径
14、使用mongodb用户启动mongodb
mongod -f /mongodb/conf/mongodb1.conf
解决方法,删除/tmp目录下的套接字文件。
15、关闭mongodb
mongod -f /mongodb/conf/mongodb1.conf –shutdown
16、若要让别的服务器能够访问还得打开mongodb的防火墙
firewall-cmd --zone=public --add-port=27017/tcp --permanent
firewall-cmd --reload
17、使用mongo客户端,创建userAdminAnyDatabase权限用户(该权限为账号管理员角色)
mongo --host 127.0.0.1 -port 27017
use admin db.createUser(
{
user:"admin",
pwd:"admin",
roles:[{role:"userAdminAnyDatabase",db:"admin"}]
}
)
以下数据库权限角色说明
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
18、auth验证,查看数据库信息
db.auth("admin","admin")
19、授予admin用户test库权限
db.grantRolesToUser("admin",[{role:"readWrite",db:"test"}])
20、创建一个test测试库,并创建collection
use test
21、创建collection,并插入数据,查询结果
db.createCollection(“user”)
db.user.insert({“name”:”mongodb”})
db.user.find();
22、授予admin用户mongodb数据库超级管理员权限
db.grantRolesToUser("admin",[{role:"root",db:"admin"}]);
23、拥有超级管理员的用户可以在mongo客户端关闭数据库
db.shutdownServer();