Rootop 服务器运维与web架构

mongodb二进制版本命令行参数启动加身份认证

下载地址:https://www.mongodb.com/download-center/community
这里下载的版本:https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.6.tgz

这里解压到 /home/software/mongodb 目录。
然后创建2个目录用于存放日志和数据。

[root@db-mongo ~]# mkdir /home/software/mongodb/log
[root@db-mongo ~]# mkdir /home/software/mongodb/data

# 先用不带身份认证参数启动(–auth)

[root@db-mongo ~]# /home/software/mongodb/bin/mongod --logpath /home/software/mongodb/log/log.log --dbpath /home/software/mongodb/data --maxConns 65535 --bind_ip_all --port 27017 --fork

# 命令行关闭服务,需要指定db数据目录

[root@db-mongo ~]# /home/software/mongodb/bin/mongod --shutdown --dbpath /home/software/mongodb/data/

# mongo控制台关闭

[root@db-mongo ~]# /home/software/mongodb/bin/mongo
> db.shutdownServer()

或者用kill 15 发送停止信号。

# 查看库

[root@db-mongo ~]# /home/software/mongodb/bin/mongo
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB

# 切换库,如果库不存在,则会创建。

> use test
switched to db test

但此时数据库为空,show dbs看不到。

# 为admin库设置用户名密码,角色为超级管理员

> use admin
switched to db admin
> db.createUser({user:'root',pwd:'111111',roles:['root']})  #只有admin数据库才有root角色

Successfully added user: { "user" : "root", "roles" : [ "root" ] }

# 修改为带认证参数启动mongodb

[root@db-mongo ~]# /home/software/mongodb/bin/mongod --logpath /home/software/mongodb/log/log.log --dbpath /home/software/mongodb/data --maxConns 65535 --bind_ip_all --port 27017 --fork --auth
[root@db-mongo ~]# /home/software/mongodb/bin/mongo
> show dbs
> 

发现看不到前面3个库了,因为需要认证后才能看。

# 控制台认证admin库的账号密码

> use admin
switched to db admin
> db.auth("root","111111")
1
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB

# 新建一个库,并设置密码,注意密码中不要带@艾特符号,mongodb是一个库一个账号。

> use rootop
> db.createUser({
user:"aaa",
pwd:"aaa###bbb",
roles:[
{"role":"readWrite","db":"rootop"},
{"role":"dbAdmin","db":"rootop"}
]})

# 插入数据

> db.rootop.insert({"user":"aaa"})
WriteResult({ "nInserted" : 1 })

# 启动关闭脚本保存为 mon.sh

#!/bin/bash
need_pass="--auth"
if [ "$2" == "false" ];then
	need_pass=""
fi

case $1 in
 start)
	/home/software/mongodb/bin/mongod --logpath /home/software/mongodb/log/log.log --dbpath /home/software/mongodb/data --maxConns 65535 --bind_ip_all --port 27017 --journal --fork $need_pass --wiredTigerCacheSizeGB=1
	;;
 stop)
	/home/software/mongodb/bin/mongod --shutdown --dbpath /home/software/mongodb/data/
	;;
	*)
	echo sh mon.sh start [false]/stop
	;;
esac

在测试环境发现mongo内存占用挺大,限制下内存。
# 限制内存参数,加到启动参数里。
比如限制为1G

--wiredTigerCacheSizeGB=1

# mongodb官方客户端
https://www.mongodb.com/download-center/compass

# 导出指定库,注意用库所对应的账密

[root@db-mongo ~]# /home/software/mongodb/bin/mongodump -h 127.0.0.1 --port 27017 -u root -p 123456 -d xxx -o /root/backup/xxx # -o 保存备份的目录

# 导入指定库,注意用库所对应的账密

[root@db-mongo ~]# /home/software/mongodb/bin/mongorestore -h 127.0.0.1 --port 27017 -u root -p 123456 -d xxx --drop /root/backup/xxx

# 备份脚本,注意备份哪个库,就用哪个库的账号

#!/bin/bash
mongodump=/home/software/mongodb/bin/mongodump 
host=127.0.0.1
port=27017
user=root
pass=123456
db=xxx
path=/home/mongobak
dir_name=$(date +%Y-%m-%d-%H-%M-%S)
$mongodump -h $host --port $port -u $user -p $pass -d $db -o $path/$db-$dir_name

原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/4924.html

作者:Venus

专注于 服务器运维与web架构 E-mail:venus#rootop.org

评论已关闭。