1. 程式人生 > 實用技巧 >MongoDB 設定使用者名稱密碼和資料庫連線

MongoDB 設定使用者名稱密碼和資料庫連線

第一種方式:通過Robo設定

連線mongo,在admin庫下建立賬號,設定賬號、密碼後,勾選角色。

找到 MongoDB 安裝目錄,開啟mongod.cfg檔案,找到以下這句:

#security:

修改為:

security:
  authorization: enabled

重啟 MongoDB服務

第二種方式:通過命令設定超級管理員

設定 admin

use admin  
db.createUser({
  user: 'admin',  // 使用者名稱
  pwd: '123456',  // 密碼
  roles:[{
    role: 'root',  // 角色
    db: '
admin' // 資料庫 }] })

設定完成,可以輸入show users檢視是否設定成功。

開啟驗證

找到 MongoDB 安裝目錄,開啟mongod.cfg檔案,找到以下這句:

#security:

修改為:

security:
  authorization: enabled

重啟 MongoDB

開啟工作管理員

找到 MongoDB 服務,右鍵重新啟動。

這時,我們可以開啟 powershell 連線資料庫:

輸入 mongo:

顯示連線成功,但是當我們輸入其他指令時,會提示沒有許可權:

登入資料庫

// 方式一
mongo
use admin
db.auth('
admin', '123456') // 方式二 mongo admin -u admin -p 123456

這時候我們就可以正常訪問和操作資料了。

新增資料庫使用者

我們除了可以設定資料庫的超級管理員以外,還可以給每個資料庫設定單獨的管理員。其只有操作單獨資料的一定許可權。

use test  // 跳轉到需要新增使用者的資料庫
db.createUser({
  user: 'fooadmin',  // 使用者名稱
  pwd: '123456',  // 密碼
  roles:[{
    role: 'readWrite',  // 角色
    db: 'test'  // 資料庫名
  }]
})

常用命令

show users  // 檢視當前庫下的使用者

db.dropUser('testadmin')  // 刪除使用者

db.updateUser('admin', {pwd: '654321'})  // 修改使用者密碼

db.auth('admin', '654321')  // 密碼認證

MongoDB 資料庫預設角色

  1. 資料庫使用者角色:read、readWrite
  2. 資料庫管理角色:dbAdmin、dbOwner、userAdmin
  3. 叢集管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager
  4. 備份恢復角色:backup、restore
  5. 所有資料庫角色: readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、
    dbAdminAnyDatabase
  6. 超級使用者角色:root
更多細節參考官方文件

備註:MongoDB連線資料庫

啟動 MongoDB 服務

通過 shell 連線 MongoDB 服務:mongo

使用使用者 admin 使用密碼 123456 連線到本地的 MongoDB 服務上:mongo://admin:123456@localhost/

更多連線例項

連線本地資料庫伺服器,埠是預設的。

mongodb://localhost

使用使用者名稱fred,密碼foobar登入localhost的admin資料庫。

mongodb://fred:foobar@localhost

使用使用者名稱fred,密碼foobar登入localhost的baz資料庫。

mongodb://fred:foobar@localhost/baz

連線 replica pair, 伺服器1為example1.com伺服器2為example2。

mongodb://example1.com:27017,example2.com:27017

連線 replica set 三臺伺服器 (埠 27017, 27018, 和27019):

mongodb://localhost,localhost:27018,localhost:27019

連線 replica set 三臺伺服器, 寫入操作應用在主伺服器 並且分佈查詢到從伺服器。

mongodb://host1,host2,host3/?slaveOk=true

直接連線第一個伺服器,無論是replica set一部分或者主伺服器或者從伺服器。

mongodb://host1,host2,host3/?connect=direct;slaveOk=true

當你的連線伺服器有優先順序,還需要列出所有伺服器,你可以使用上述連線方式。

安全模式連線到localhost:

mongodb://localhost/?safe=true

以安全模式連線到replica set,並且等待至少兩個複製伺服器成功寫入,超時時間設定為2秒。

mongodb://host1,host2,host3/?safe=true;w=2;wtimeoutMS=2000