MongoDB之使用者管理
在MongoDB裡面預設情況下,只要是進行連線都可以不使用使用者名稱和密碼,因為要想讓其起作用,就必須具備以下兩個條件:
● 條件一:伺服器啟動的時候開啟授權認證。
● 條件二:需要配置使用者名稱和密碼。
但是需要明確的是,如果要想配置使用者名稱和密碼,一定是針對一個資料庫的,例如現有要建立的是stone資料庫使用者,那麼就必須切換到stone資料庫上。
範例:執行使用者的建立
任何使用者都必須具備一個自己的操作角色:read、readWrite
> use admin
switched to db admin
> db.createUser({
... "user":"root",
... "pwd":"root",
... "roles":[{"role":"root","db":"admin"}]
... })
Successfully added user: {
"user" : "root",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
> use hr
switched to db hr
> use hr
switched to db hr
> db.createUser({
... "user":"stone",
... "pwd":"stone",
... "roles":[{"role":"readWrite","db":"hr"}]
... })
Successfully added user: {
"user" : "stone",
"roles" : [
{
"role" : "readWrite",
"db" : "hr"
}
]
}
那麼現在就表示成功的建立了stone使用者。那麼如果要想讓次使用者名稱起作用,則必須以授權的方式開啟MongoDB服務。修改MongoDB的引數檔案。
範例:修改引數檔案,增加授權啟動
[root@D2-LZY245 ~]# vim /usr/local/mongodb/mongodb.conf
dbpath=/usr/local/mongodb/db
logpath=/usr/local/mongodb/log/mongodb.log
logappend=true
auth=true
port=27017
fork=true
重啟資料庫:
> use admin
switched to db admin
> db.shutdownServer();
[root@D2-LZY245 ~]# mongod -f /usr/local/mongodb/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 25987
child process started successfully, parent exiting
[root@D2-LZY245 ~]# mongo
MongoDB shell version v3.4.7
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.7
> use stone
switched to db stone
> db.emp.find();
Error: error: {
"ok" : 0,
"errmsg" : "not authorized on stone to execute command { find: \"emp\", filter: {} }",
"code" : 13,
"codeName" : "Unauthorized"
}
此時增加了一個驗證的啟動模式,發現依然可以在不輸入使用者名稱和密碼的前提下進行登入,並且也可以直接進行資料庫的切換操作。但是在使用資料庫集合的時候出現了錯誤提示。
範例:登入資料庫的時候使用使用者名稱和密碼
[root@D2-LZY245 ~]# mongo -u "stone" -p "stone" --authenticationDatabase "hr"
MongoDB shell version v3.4.7
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.7
或者:
[root@D2-LZY245 ~]# mongo
MongoDB shell version v3.4.7
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.7
> use hr
switched to db hr
> db.auth("stone","stone")
1
此時就表示成功的實現了使用者的登入操作。
範例:修改密碼
[root@D2-LZY245 ~]# mongo -u root -p 'root' --authenticationDatabase 'admin'
> db.changeUserPassword("stone","stone")
範例:檢視使用者及角色
> use admin
switched to db admin
> db.system.users.find();
{ "_id" : "test.stone", "user" : "stone", "db" : "test", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "boSLJ2acqh403AW0MZO7yA==", "storedKey" : "Y7zaryoqOiedeKsVs61SrAMAK8c=", "serverKey" : "+wa0fO2hwNrLRIuVmtJMvR1AJv0=" } }, "roles" : [ { "role" : "readWrite", "db" : "hr" } ] }
{ "_id" : "admin.root", "user" : "root", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "NmiMDfzuCnkO1CRKrVUV9A==", "storedKey" : "rD6NaqsfON8h0YMNv6idPKUpac0=", "serverKey" : "9MXDynhFSNmHEkMIMfxnSKdQPio=" } }, "roles" : [ { "role" : "root", "db" : "admin" } ] }
{ "_id" : "hr.stone", "user" : "stone", "db" : "hr", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "69NLL2oWTg0OehrBwytbsw==", "storedKey" : "LRmPZjHZorxhfWA+RS6SgzLbev4=", "serverKey" : "59xkCl7qKK+HrKrlK5QMdGx94U8=" } }, "roles" : [ { "role" : "readWrite", "db" : "hr" } ] }
● 條件一:伺服器啟動的時候開啟授權認證。
● 條件二:需要配置使用者名稱和密碼。
但是需要明確的是,如果要想配置使用者名稱和密碼,一定是針對一個資料庫的,例如現有要建立的是stone資料庫使用者,那麼就必須切換到stone資料庫上。
範例:執行使用者的建立
任何使用者都必須具備一個自己的操作角色:read、readWrite
> use admin
switched to db admin
> db.createUser({
... "user":"root",
... "pwd":"root",
... "roles":[{"role":"root","db":"admin"}]
... })
Successfully added user: {
"user" : "root",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
> use hr
switched to db hr
> use hr
switched to db hr
> db.createUser({
... "user":"stone",
... "pwd":"stone",
... "roles":[{"role":"readWrite","db":"hr"}]
... })
Successfully added user: {
"user" : "stone",
"roles" : [
{
"role" : "readWrite",
"db" : "hr"
}
]
}
那麼現在就表示成功的建立了stone使用者。那麼如果要想讓次使用者名稱起作用,則必須以授權的方式開啟MongoDB服務。修改MongoDB的引數檔案。
範例:修改引數檔案,增加授權啟動
[root@D2-LZY245 ~]# vim /usr/local/mongodb/mongodb.conf
dbpath=/usr/local/mongodb/db
logpath=/usr/local/mongodb/log/mongodb.log
logappend=true
auth=true
port=27017
fork=true
重啟資料庫:
> use admin
switched to db admin
> db.shutdownServer();
[root@D2-LZY245 ~]# mongod -f /usr/local/mongodb/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 25987
child process started successfully, parent exiting
[root@D2-LZY245 ~]# mongo
MongoDB shell version v3.4.7
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.7
> use stone
switched to db stone
> db.emp.find();
Error: error: {
"ok" : 0,
"errmsg" : "not authorized on stone to execute command { find: \"emp\", filter: {} }",
"code" : 13,
"codeName" : "Unauthorized"
}
此時增加了一個驗證的啟動模式,發現依然可以在不輸入使用者名稱和密碼的前提下進行登入,並且也可以直接進行資料庫的切換操作。但是在使用資料庫集合的時候出現了錯誤提示。
範例:登入資料庫的時候使用使用者名稱和密碼
[root@D2-LZY245 ~]# mongo -u "stone" -p "stone" --authenticationDatabase "hr"
MongoDB shell version v3.4.7
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.7
或者:
[root@D2-LZY245 ~]# mongo
MongoDB shell version v3.4.7
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.7
> use hr
switched to db hr
> db.auth("stone","stone")
1
此時就表示成功的實現了使用者的登入操作。
範例:修改密碼
[root@D2-LZY245 ~]# mongo -u root -p 'root' --authenticationDatabase 'admin'
> db.changeUserPassword("stone","stone")
範例:檢視使用者及角色
> use admin
switched to db admin
> db.system.users.find();
{ "_id" : "test.stone", "user" : "stone", "db" : "test", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "boSLJ2acqh403AW0MZO7yA==", "storedKey" : "Y7zaryoqOiedeKsVs61SrAMAK8c=", "serverKey" : "+wa0fO2hwNrLRIuVmtJMvR1AJv0=" } }, "roles" : [ { "role" : "readWrite", "db" : "hr" } ] }
{ "_id" : "admin.root", "user" : "root", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "NmiMDfzuCnkO1CRKrVUV9A==", "storedKey" : "rD6NaqsfON8h0YMNv6idPKUpac0=", "serverKey" : "9MXDynhFSNmHEkMIMfxnSKdQPio=" } }, "roles" : [ { "role" : "root", "db" : "admin" } ] }
{ "_id" : "hr.stone", "user" : "stone", "db" : "hr", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "69NLL2oWTg0OehrBwytbsw==", "storedKey" : "LRmPZjHZorxhfWA+RS6SgzLbev4=", "serverKey" : "59xkCl7qKK+HrKrlK5QMdGx94U8=" } }, "roles" : [ { "role" : "readWrite", "db" : "hr" } ] }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28536251/viewspace-2144109/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MongoDB 6.0.3 使用者管理MongoDB
- MongoDB使用者管理,Version: 2.0.2MongoDB
- MongoDB 使用者與許可權管理MongoDB
- MongoDB管理使用者相關操作總結MongoDB
- 當使用者管理系統遇上python和mongodb後……PythonMongoDB
- Mongodb管理命令MongoDB
- Mongodb 管理操作MongoDB
- MongoDB 分片管理MongoDB
- mongodb基本管理MongoDB
- MongoDB 資料庫安全之使用者密碼修改MongoDB資料庫密碼
- 【Mongodb】 Mongodb sharding 管理之二MongoDB
- 【Mongodb】Mongodb sharding 管理之一MongoDB
- mongodb使用者許可權管理最全攻略:使用者的建立、檢視、刪除與修改,mongodb入坑之旅MongoDB
- MongoDB 副本集管理MongoDB
- MongoDB基本管理命令MongoDB
- 分散式文件儲存資料庫之MongoDB索引管理分散式資料庫MongoDB索引
- MongoDB之聚合MongoDB
- MongoDB使用者許可權管理,設定密碼並連線MongoDB密碼
- MongoDB:使用者認證MongoDB
- MongoDB 3.0 使用者建立MongoDB
- (四)Linux之使用者管理(使用者和使用者組)Linux
- mongodb管理工具MongoDB
- 詳解MongoDB管理命令MongoDB
- mongodb之shard分片MongoDB
- MongoDB之副本集MongoDB
- MongoDB之監控MongoDB
- MongoDB之GridFSMongoDB
- MongoDB之固定集合MongoDB
- MongoDB之遊標MongoDB
- MongoDB之基本操作MongoDB
- mongodb使用者與角色使用MongoDB
- mongodb的使用者認證MongoDB
- 小丸子學MongoDB系列之——安裝MongoDBMongoDB
- MongoDB 資料庫管理和開發:Navicat for MongoDB macMongoDB資料庫Mac
- MongoDB 副本集原理及管理MongoDB
- mongodb管理工具rockmongoMongoDB
- MongoDB管理與開發精要MongoDB
- MongoDB 3.0.8 許可權管理MongoDB