MongoDB 用戶相關(guān)操作
在我們第一次啟動(dòng)MongoDB的時(shí)候,僅僅是制定了data數(shù)據(jù)目錄和log日志目錄,并沒有指定--auth選項(xiàng),也就是并不需要認(rèn)證。
[root@VM-0-14-centos mongo_27017]# mongo MongoDB shell version v4.0.6 connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb Implicit session: session { "id" : UUID("61c35b47-f43b-48fc-a43e-066f56987e9a") } MongoDB server version: 4.0.6 > db test > show dbs; admin 0.000GB config 0.000GB local 0.000GB > use admin switched to db admin > show users; > db.system.user.find()
我們第一次登錄MongoDB的服務(wù),輸入db,發(fā)現(xiàn)當(dāng)前數(shù)據(jù)庫是test,但是show dbs卻看不到test數(shù)據(jù)庫,其實(shí)這個(gè)是MongoDB的一個(gè)特點(diǎn),test是一個(gè)虛的數(shù)據(jù)庫,想要看到test中的內(nèi)容,你只需要給test數(shù)據(jù)庫中插入一個(gè)文檔即可。
接著,我們可以看到,當(dāng)我們輸入show users的時(shí)候,沒有看到任何賬號信息。接下來我們準(zhǔn)備開啟--auth參數(shù)來重啟MongoDB服務(wù),在重啟之前,我們需要保證已經(jīng)分配了新的賬號,下面我們開始分配賬號:
> db.createUser({ user: "root", pwd: "123456", roles: [ { role: "root", db: "admin"} ]}) Successfully added user: { "user" : "root", "roles" : [ { "role" : "root", "db" : "admin" } ] }
這里,我們可以看到,我們分配了一個(gè)賬號:
user:root # 用戶名
pwd:123456 # 密碼
roles:root # 角色
db:admin # 數(shù)據(jù)庫
角色root有必要做一下解釋:
Read: 允許用戶讀取指定數(shù)據(jù)庫, readWrite:允許用戶讀寫指定數(shù)據(jù)庫 dbAdmin: 允許用戶在指定數(shù)據(jù)庫中執(zhí)行管理函數(shù),如索引創(chuàng)建、刪除,查看統(tǒng)計(jì)或訪問system.profile userAdmin:允許用戶向system.users集合寫入,可以在指定數(shù)據(jù)庫里創(chuàng)建、刪除和管理用戶 clusterAdmin: 只在admin數(shù)據(jù)庫中可用,賦予用戶所有分片和復(fù)制集相關(guān)函數(shù)的管理權(quán)限。 readAnyDatabase: 只在admin數(shù)據(jù)庫中可用,賦予用戶所有數(shù)據(jù)庫的讀權(quán)限 readWriteAnyDatabase: 只在admin數(shù)據(jù)庫中可用,賦予用戶所有數(shù)據(jù)庫的讀寫權(quán)限 userAdminAnyDatabase: 只在admin數(shù)據(jù)庫中可用,賦予用戶所有數(shù)據(jù)庫的userAdmin權(quán)限 dbAdminAnyDatabase: 只在admin數(shù)據(jù)庫中可用,賦予用戶所有數(shù)據(jù)庫的dbAdmin權(quán)限。 root: 只在admin數(shù)據(jù)庫中可用。超級賬號,超級權(quán)限
更詳細(xì)的內(nèi)容,請參看官方文檔:
https://docs.mongodb.com/manual/reference/built-in-roles/#dbAdmin
好了,創(chuàng)建好用戶之后,我們重啟MongoDB服務(wù),在配置文件中打開--auth參數(shù),或者直接在命令行里面指定auth參數(shù),重新登陸:
[root@VM-0-14-centos mongo_27017]# mongo MongoDB shell version v4.0.6 connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb Implicit session: session { "id" : UUID("5f2b0fa6-a1e3-4aaf-b43f-3525e19c33d2") } MongoDB server version: 4.0.6 > > use admin switched to db admin > show users 2020-10-28T23:42:06.127+0800 E QUERY [js] Error: command usersInfo requires authentication : _getErrorWithCode@src/mongo/shell/utils.js:25:13 DB.prototype.getUsers@src/mongo/shell/db.js:1763:1 shellHelper.show@src/mongo/shell/utils.js:859:9 shellHelper@src/mongo/shell/utils.js:766:15 @(shellhelp2):1:1 > db.auth("root","123456") 1 > show users { "_id" : "admin.root", "user" : "root", "db" : "admin", "roles" : [ { "role" : "root", "db" : "admin" } ], "mechanisms" : [ "SCRAM-SHA-1", "SCRAM-SHA-256" ] }
可以看到,當(dāng)我們第一次使用show users的命令查看用戶的時(shí)候,系統(tǒng)拒絕了我們,顯示:
Error: command usersInfo requires authentication
然后我們進(jìn)行權(quán)限校驗(yàn):
use admin
db.auth("root","123456")
這下可以了。
不知道大家有沒有留意到一個(gè)細(xì)節(jié),我們登陸的時(shí)候,使用mongo命令登陸的,然后進(jìn)行用戶認(rèn)證,有沒有一種方法可以直接在登陸的時(shí)候就進(jìn)行用戶認(rèn)證呢?答案是有的。
登陸方法一:
mongo
use admin
db.auth("user":"password")
登陸方法二:
mongo -u "user" -p "password"
如下:
[root@VM-0-14-centos mongo_27017]# mongo -u "root" -p "123456" MongoDB shell version v4.0.6 connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb Implicit session: session { "id" : UUID("ef872d7a-77d9-43c2-bf3d-e04867379c0a") } MongoDB server version: 4.0.6 > use admin switched to db admin > show users { "_id" : "admin.root", "user" : "root", "db" : "admin", "roles" : [ { "role" : "root", "db" : "admin" } ], "mechanisms" : [ "SCRAM-SHA-1", "SCRAM-SHA-256" ] } >
到這里,我們已經(jīng)學(xué)會(huì)了第一次登陸MongoDB之后,如何進(jìn)行初始用戶配置、如何開啟MongoDB的認(rèn)證模式(--auth參數(shù))、以及在登錄的時(shí)候如何進(jìn)行用戶認(rèn)證,用戶這塊兒還有很多其他內(nèi)容,下一節(jié)我們展開說。
以上就是MongoDB 用戶相關(guān)操作的詳細(xì)內(nèi)容,更多關(guān)于MongoDB 用戶操作的資料請關(guān)注腳本之家其它相關(guān)文章!
- MongoDB 簡單入門教程(安裝、基本概念、創(chuàng)建用戶)
- MongoDB數(shù)據(jù)庫用戶角色和權(quán)限管理詳解
- MongoDB 用戶管理
- MongoDB在系統(tǒng)數(shù)據(jù)庫local中無法創(chuàng)建用戶的解決辦法
- mongodb基礎(chǔ)之用戶權(quán)限管理實(shí)例教程
- Mac下安裝配置mongodb并創(chuàng)建用戶的方法
- Mongodb 3.2.9開啟用戶權(quán)限認(rèn)證問題的步驟詳解
- MongoDB快速入門筆記(七)MongoDB的用戶管理操作
- MongoDB系列教程(四):設(shè)置用戶訪問權(quán)限
- Windows下MongoDB配置用戶權(quán)限實(shí)例
- mongodb 添加用戶及權(quán)限設(shè)置詳解
- MongoDB為用戶設(shè)置訪問權(quán)限
相關(guān)文章
MongoDB在Windows系統(tǒng)和Linux系統(tǒng)中實(shí)現(xiàn)自動(dòng)定時(shí)備份的操作步驟
要在Windows系統(tǒng)中實(shí)現(xiàn)自動(dòng)定時(shí)備份MongoDB數(shù)據(jù)庫,可以使用Windows任務(wù)計(jì)劃程序和MongoDB自帶的mongodump工具,這篇文章主要介紹了MongoDB在Windows系統(tǒng)和Linux系統(tǒng)中實(shí)現(xiàn)自動(dòng)定時(shí)備份的操作步驟,需要的朋友可以參考下2023-12-12mongodb增量/全量備份腳本的實(shí)現(xiàn)詳解
這篇文章主要給大家介紹了關(guān)于mongodb增量/全量備份腳本的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-09-09Pycharm連接MongoDB數(shù)據(jù)庫安裝教程詳解
這篇文章主要介紹了Pycharm連接MongoDB數(shù)據(jù)庫安裝教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11mongodb3.4集群搭建實(shí)戰(zhàn)之高可用的分片+副本集
這篇文章主要給大家介紹了關(guān)于mongodb3.4集群搭建實(shí)戰(zhàn)之高可用的分片+副本集的相關(guān)資料,文中通過示例代碼將實(shí)現(xiàn)的步驟一步步的介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-08-08SpringBoot?整合mongoDB并自定義連接池的示例代碼
這篇文章主要介紹了SpringBoot?整合mongoDB并自定義連接池?,整合mongoDB的目的就是想用它給我們提供的mongoTemplate,它可以很容易的操作mongoDB數(shù)據(jù)庫,對整合過程及實(shí)例代碼感興趣的朋友跟隨小編一起看看吧2022-02-02MongoDB快速入門筆記(四)之MongoDB查詢文檔操作實(shí)例代碼
MongoDB 是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫。接下來通過本文給大家介紹MongoDB快速入門筆記(四)之MongoDB查詢文檔操作實(shí)例代碼,感興趣的朋友一起學(xué)習(xí)吧2016-06-06Spring Boot中使用MongoDB數(shù)據(jù)庫的方法
MongoDB是一個(gè)介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。他支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bjson格式,因此可以存儲(chǔ)比較復(fù)雜的數(shù)據(jù)類型。Mongo最大的特點(diǎn)是他支持的查詢語言非常強(qiáng)大2018-02-02MongoDB模糊查詢正則regex(類似like?和?not?like)
在類關(guān)系型數(shù)據(jù)庫中,like和not?like是常用的模糊查詢操作符,它允許我們在匹配字段的時(shí)候使用通配符,在MongoDB中,也有類似的操作符,MongoDB?可以使用?$regex?操作符來設(shè)置匹配字符串的正則表達(dá)式,MongoDB?使用?PCRE(Perl?兼容的正則表達(dá)式)作為正則表達(dá)式語言2024-02-02