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 資料庫預設角色
- 資料庫使用者角色:read、readWrite
- 資料庫管理角色:dbAdmin、dbOwner、userAdmin
- 叢集管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager
- 備份恢復角色:backup、restore
- 所有資料庫角色: readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、
dbAdminAnyDatabase - 超級使用者角色: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