第一種方式:通過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