最近準(zhǔn)備使用MongoDB乖坠,就官網(wǎng)下載了一個(gè)MongoDB3的安裝包下載律胀,但是在配置安全模式啟動(dòng)并使用數(shù)據(jù)庫(kù)認(rèn)證的時(shí)候遇到一些問題,這里總結(jié)一下MongoDB關(guān)于創(chuàng)建登錄賬戶以及賬戶授權(quán)相關(guān)的技術(shù)
1继阻、在CentOS7上安裝MongoDB數(shù)據(jù)庫(kù)办龄,并設(shè)置開機(jī)啟動(dòng)
- 從官網(wǎng)下載mongodb最新版
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.4.2.tgz
- 執(zhí)行以下指令,解壓mongodb壓縮包并修改相應(yīng)的配置文件
#創(chuàng)建mongodb安裝目錄
mkdir /usr/mongodb
#將下載的mongodb壓縮包拷貝到安裝目錄
cp /home/mongodb-linux-x86_64-rhel70-3.4.2.tgz /usr/mongodb/
#解壓壓縮包并修改目錄名
cd /usr/mongodb
tar -zxvf mongodb-linux-x86_64-rhel70-3.4.2.tgz
mv mongodb-linux-x86_64-rhel70-3.4.2 mongodb-3.4.2
#創(chuàng)建mongodb日志目錄和數(shù)據(jù)目錄
mkdir -p /var/mongodb/logs
mkdir -p /var/mongodb/data
#編輯mongodb啟動(dòng)配置文件
cd /usr/mongodb/mongodb-3.4.2/
mkdir conf
cd conf
vi mongodb.conf
#輸入以下內(nèi)容保存
dbpath=/var/mongodb/data #數(shù)據(jù)文件存放目錄
logpath=/var/mongodb/logs/mongo.log #日志文件存放目錄
port=27017 #端口
fork=true #以守護(hù)程序的方式啟動(dòng)颈渊,即在后臺(tái)運(yùn)行
auth=false #是否需要認(rèn)證
nohttpinterface=true
注意:這里配置的登錄認(rèn)證為auth=false遂黍,配置賬號(hào)密碼的過程中要以非認(rèn)證的方式啟動(dòng)
- 配置mongodb開機(jī)啟動(dòng)
#編輯mongodb啟動(dòng)腳本設(shè)置開機(jī)啟動(dòng)
cd /etc/rc.d/init.d
vi mongod
#輸入以下內(nèi)容保存
#!/bin/bash
#
#chkconfig: 2345 80 90
#description: mongodb
start() {
/usr/yskj/mongodb/mongodb-3.4.2/bin/mongod --config /usr/yskj/mongodb/mongodb-3.4.2/conf/mongodb.conf
}
stop() {
/usr/yskj/mongodb/mongodb-3.4.2/bin/mongod --config /usr/yskj/mongodb/mongodb-3.4.2/conf/mongodb.conf --shutdown
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo
$"Usage: $0 {start|stop|restart}"
exit 1
esac
#然后執(zhí)行以下指令
chmod +x /etc/rc.d/init.d/mongod
chkconfig --add mongod
chkconfig --level 345 mongod on
service mongod start
2、配置MongoDB的認(rèn)證賬戶
需求描述:給mongodb數(shù)據(jù)庫(kù):test俊嗽,配置賬戶:test雾家,密碼:123456
#進(jìn)入/usr/mongodb/mongodb-3.4.2/bin目錄
cd /usr/mongodb/mongodb-3.4.2/bin
#執(zhí)行以下命令,進(jìn)入mongodb命令行模式
./mongo
#創(chuàng)建數(shù)據(jù)庫(kù)test賬戶
use test
db.createUser({user:"test", pwd:"123456",customData: {profile:"source test user:test" },roles:[{role:"readWrite", db:"test"}]});
# 然后退出修改/usr/mongodb/mongodb-3.4.2/conf/mongodb.conf配置文件绍豁,重新啟動(dòng)mongodb
vi /usr/mongodb/mongodb-3.4.2/conf/mongodb.conf
auth=true
service mongod restart
#測(cè)試登錄
/usr/mongodb/mongodb-3.4.2/bin/mongo -u test -p 123456 --authenticationDatabase test
3芯咧、db.createUser()參數(shù)描述:
語(yǔ)法:
db.createUser(user, writeConcern)
user這個(gè)文檔創(chuàng)建關(guān)于用戶的身份認(rèn)證和訪問信息;
writeConcern這個(gè)文檔描述保證MongoDB提供寫操作的成功報(bào)告。user文檔敬飒,定義了用戶的以下形式:
{ user: "<name>",
pwd: "<cleartext password>",
customData: { <any information> },
roles: [
{ role: "<role>", db: "<database>" } | "<role>",
...
]
}user文檔字段介紹:
user字段邪铲,為新用戶的名字;
pwd字段无拗,用戶的密碼带到;
cusomData字段,為任意內(nèi)容英染,例如可以為用戶全名介紹揽惹;
roles字段,指定用戶的角色四康,可以用一個(gè)空數(shù)組給新用戶設(shè)定空角色搪搏;
在roles字段,可以指定內(nèi)置角色和用戶定義的角色。-
Built-In Roles
- 數(shù)據(jù)庫(kù)用戶角色:read闪金、readWrite;
- 數(shù)據(jù)庫(kù)管理角色:dbAdmin慕嚷、dbOwner、userAdmin毕泌;
- 集群管理角色:clusterAdmin喝检、clusterManager、clusterMonitor撼泛、hostManager挠说;
- 備份恢復(fù)角色:backup、restore愿题;
- 所有數(shù)據(jù)庫(kù)角色:readAnyDatabase损俭、readWriteAnyDatabase、userAdminAnyDatabase潘酗、dbAdminAnyDatabase
- 超級(jí)用戶角色:root
// 這里還有幾個(gè)角色間接或直接提供了系統(tǒng)超級(jí)用戶的訪問(dbOwner 杆兵、userAdmin、userAdminAnyDatabase) - 內(nèi)部角色:__system
PS:關(guān)于每個(gè)角色所擁有的操作權(quán)限可以點(diǎn)擊上面的內(nèi)置角色鏈接查看詳情仔夺。
writeConcern文檔
w選項(xiàng):允許的值分別是 1琐脏、0、大于1的值缸兔、"majority"日裙、<tag set>;
j選項(xiàng):確保mongod實(shí)例寫數(shù)據(jù)到磁盤上的journal(日志)惰蜜,這可以確保mongd以外關(guān)閉不會(huì)丟失數(shù)據(jù)昂拂。設(shè)置true啟用。
wtimeout:指定一個(gè)時(shí)間限制,以毫秒為單位抛猖。wtimeout只適用于w值大于1格侯。