一、什么是認證
如何開啟認證
1).auth=true(在配置文件里增加)
2).keyFile(建議添加到配置文件里)
#如果設置了auth=true,但第一次沒有創建用戶就啟動實例怎么辦
# 在配置文件里增加如下
echo "setParameter=enableLocalhostAuthBypass=1" >> /usr/local/mongoDB/conf/28001.conf
#然后用本地ip連接
mongo localhost:28001
auth與keyFile的區別
auth 單點
keyFile 集群之間驗證
開戶keyFile默認開戶auth
1-1.如何配置keyfile
keyFile的注意事項:
1.內容 base64編碼集[a-z A-Z +/]
2.長度 1000bytes
3.權限至少 chmod 600 keyFile (
配置:
1).在配置文件去除auth=true;
2).增加keyFile=/usr/local/mongoDB/.keyFile,在28001.conf等三個文件都這么配置
changwen@ubuntu:~$ touch .keyFile
changwen@ubuntu:~$chmod 600 .keyFile
changwen@ubuntu:~$ openssl rand -base64 102
bFWO/1wdII04a6lNCFy9I5mfQ161K9HO/eMLcrQhUVhZrztXBSG2OkJxotXqvAhq
jEB6JSA/3Hq6m7X7a+K66pSQcCRXVgZ9+exl2piDdgkOFdB9q9PTXK+uCnvFXlfM
cJL+fA74
changwen@ubuntu:~$ openssl rand -base64 102 > .keyFile
# 后面就啟動和連接服務器
二、用戶
2-1.如何創建/刪除一個用戶
1).創建語法:createUser(2.6之前為addUser)
2).db.createUser(
{user:"<name>",
pwd:"<cleartext password>",
roles:[{role:"<role>",db:"<database>"}]})
# 創建第一個用戶一定要有創建其他用戶的能力
db.createUser(
{user:'adminTest',
pwd:"'123455',
roles:[{role:'root',db:'admin'}]})
# 再次連接時,在哪創建的用戶就需要登陸到哪個庫的認證
db.auth('adminTest','12345')
#然后就可以操作數據庫了
2).如何刪除一個用戶
db.dropUser(<user_name>) :刪除某個用戶,接受字體串參數
db.dropAllUsers() :刪除當前庫的所有用戶,使用小心
3).如何修改用戶密碼
需要具備changePassword或changeOwnPassword
db.changeUserPassword(<user_name>,<new_password>)
db.updateUser(<user_name>,{update_object})
三、權限
角色:對某一資源的權限的‘集合‘
mongoDB有兩種角色,一種是自帶的角色(built-in roles),還有一種是自定義角色。
3).角色類型:內建類型
讀寫:read,readWrite,
管理員:dbAdmin,dbOwner,userAdmin、clusterAdmin,clusterManager,clusterMonitor,hostManager
備份: backup、restore
全局: readAnyDatabas, readWriteAnyDatabase, userAdminAnyDatabase, dbAdminAnyDatabase
超級用戶:root
自定義角色
db.createRole({
role:<role_name>,
privileges:[{resource:{db:<db_name>,collection:<coll_name>},actions:[<action_name>]}],
roles:[{role:<role_name>,db:<db_name>}]})
# 將用戶的權限都打印出來
db.runCommand({userInfo:'admin',showPrivileges:1})
#自定義角色
db.createRole({
role:'testRole',
privileges:[{resource:{db:'changwen',collection:''},
actions:['find','insert','remove']}],
roles:[{role:'read',db:'test'}]})
#創建用戶
db.createUser(
{user:'roleTest',
pwd:"'123',
roles:[{role:'testRole',db:'admin'}]})
三、權限伸縮
1).如何增加權限
db.grantRolesToUser(
<user_name>,
[{role:<role_name>,db:<db_name>}])
注意,本方法接受2個參數,而不是兩個對象
而且如何權限重復不會覆蓋,新的會增加
db.grantRolesToUser('roleTest,[{role:'readWrite',db:'test'}])
2).如何收縮權限
db.revokeRolesToUser(
<user_name>,
[{role:<role_name>,db:<db_name>}])
---------------------
本文來自 liucw_cn 的CSDN 博客 ,全文地址請點擊:https://blog.csdn.net/ochangwen/article/details/52388911?utm_source=copy