一、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登入的,在登...