mongo 登陸 MongoDB的授權登入處理

2021-10-13 04:03:54 字數 3747 閱讀 6447

一、command line 實際操作:

我將mongodb使用者分為兩類:全域性使用者和庫使用者。全域性使用者儲存在admin庫中,對所有資料庫都有訪問許可權;庫使用者儲存在單個資料庫中,只能訪問單個庫。使用者資訊儲存在哪個庫,身份驗證時就得到那個庫中才能驗證。使用者資訊儲存在db.system.users中。

建立使用者流程為:先在非安全模式下啟動資料庫,建立全域性使用者,再停止資料庫,在安全模式下重新啟動,然後用全域性使用者登入並進行管理。

1.建立使用者

①.在非安全模式下啟動資料庫:

$ mongod --dbpath d:\mongodb\db

②.建立全域性使用者:

建立乙個超級使用者:

//開啟新的命令列

$ mongo

mongodb shell version:2.0.6connecting to: localhost/admin>use admin

>db.createuser(

user:"name",pwd: "name123",

roles:

roles:"useradminanydatabase",

db:"admin"}

建立庫使用者:為資料庫test建立乙個使用者

>use test>db.createuser(

user:"oneuser",pwd:"oneuser123",

roles:[

, //該使用者可以讀取admin庫資料

//該使用者可以讀寫test庫資料

2.使用者登入

①.先關閉上面已經開啟的命令列。然後在安全模式下啟動資料庫:

>mongod --auth --dbpath d:\mongodb\db

②.開啟新的命令列,可使用上面建立的使用者:注意,如果是庫使用者,必須要庫下面才能驗證。

>mongo>use test>db.auth("oneuser","oneuser123");1

>//可以對test進行讀寫了

>//也可以對admin進行讀取

1. 建立乙個超級使用者

use admin

db.createuser(

user:"adminusername",pwd: "userpassword",

roles:

role:"useradminanydatabase",

db:"admin"}

超級使用者的role有兩種,useradmin或者useradminanydatabase(比前一種多加了對所有資料庫的訪問)。

db是指定資料庫的名字,admin是管理資料庫。

2. 用新建立的使用者登入

mongo -u adminusername -p userpassword --authenticationdatabase admin

3. 檢視當前使用者的許可權

use mydb

db.runcommand(

usersinfo:"username",

showprivileges:true}

4. 建立一般使用者,也是用createuser

use db01

db.createuser(

user:"oneuser",pwd:"12345",

roles:[,,

5. 建立乙個不受訪問限制的超級使用者

use admin

db.createuser(

user:"superuser",pwd:"pwd",

roles:["root"]

6. 修改密碼

use admin

db.changeuserpassword("username", "***")

7. 檢視使用者資訊

db.runcommand()

8. 修改密碼和使用者資訊

db.runcommand(

updateuser:"username",pwd:"***",

customdata:

注:1. 和使用者管理相關的操作基本都要在admin資料庫下執行,要先use admin;

2. 如果在某個單一的資料庫下,那只能對當前資料庫的許可權進行操作;

3. db.adduser是老版本的操作,現在版本也還能繼續使用,建立出來的user是帶有root role的超級管理員。

三、以下是roles中的許可權說明:

read 指定資料庫的唯讀許可權,擁有以下許可權:

count,datasize,dbhash,dbstats,distinct,filemd5

geonear,geosearch,geowalk,group

mapreduce (inline output only.),text (beta feature.)

readwrite 擁有指定資料庫的讀寫許可權,除了具有read許可權,還擁有以下許可權:

create (and to create collections implicitly.)

findandmodify,mapreduce (output to a collection.)

renamecollection (within the same database.)

read和readwrite主要就是對庫中表的操作許可權

dbadmin 指定資料庫的管理許可權

create,db.createcollection(),dbstats,drop(),dropindexes,ensureindex()

indexstats,profile,reindex,renamecollection (within a single database.),validate

useradmin 指定資料庫的使用者管理許可權

clusteradmin 集群管理許可權(副本集、分片、主從等相關管理)

addshard,closealldatabases,connpoolstats,connpoolsync,_cpuprofilerstart

_cpuprofilerstop,cursorinfo,diaglogging,dropdatabase

enablesharding,flushrouterconfig,fsync,db.fsyncunlock()

getcmdlineopts,getlog,getparameter,getshardmap,getshardversion

hostinfo,db.currentop(),db.killop(),listdatabases,listshards

logrotate,movechunk,moveprimary,netstat,removeshard,unsetsharding

repairdatabase,replsetfreeze,replsetgetstatus,replsetinitiate

replsetmaintenance,replsetreconfig,replsetstepdown,replsetsyncfrom

resync,serverstatus,setparameter,setshardversion,shardcollection

shardingstate,shutdown,splitchunk,splitvector,split,top,touch

readanydatabase 任何資料庫的唯讀許可權(和read相似)

readwriteanydatabase 任何資料庫的讀寫許可權(和readwrite相似)

useradminanydatabase 任何資料庫使用者的管理許可權(和useradmin相似)

dbadminanydatabase 任何資料庫的管理許可權(dbadmin相似)

詳細的可以參看官方文件:

MongoDB 3 2 0 授權登陸

mongodb開啟授權登陸前,需要在資料庫中建立乙個擁有賬號管理的授權許可權的賬號,也就是可以建立各類賬號的賬號。步驟如下 從3.0開始預設不建立admin庫,需要自己建立 1.use admin 2.db.createuser 可以為任意內容 可選 pwd admin 使用者密碼 roles 指定...

登陸mysql s MySQL登陸退出

單例項登陸mysql mysql mysql uroot 適合剛安裝後無密碼 mysql uroot p 標準登陸的方法 mysql uroot p password 密碼明文會洩露密碼,一般用於指令碼中,指令碼許可權root 700 多例項登陸mysql mysql s data 3307 mys...

ubuntu root 使用者登陸登陸辦法

習慣於圖形化操作的我們,不愛面對一堆的命令的操作,拿想要隨意操作所有東東,就想要提示登入的許可權 以root使用者登入就可以。但是,ubuntu預設並沒有以root使用者登入,so,我們需要做些配置,讓系統再啟動的時候直接以root使用者登入。ubuntu 12.04預設是不允許root登入的,在登...