安裝 mongodb
sudo apt-get install mongodb -y
mongodb 服務管理
# 啟動 mongodb 服務
service mongodb start
# 關閉 mongodb 服務
service mongodb stop
# 重啟 mongodb 服務
service mongodb restart
配置
vi /etc/mongodb.conf # 設置綁定地址 bind_ip = 0.0.0.0
設置數據庫賬號
1、進入 MongoDB 命令行
# mongo MongoDB shell version v3.6.8 connecting to: mongodb://127.0.0.1:27017 Implicit session: session { "id" : UUID("d596a2ee-9263-441c-8926-f40e4fd91cd9") } MongoDB server version: 3.6.8 Welcome to the MongoDB shell. For interactive help, type "help". For more comprehensive documentation, see http://docs.mongodb.org/ Questions? Try the support group http://groups.google.com/group/mongodb-user Server has startup warnings: 2021-08-26T10:57:28.939+0000 I CONTROL [initandlisten] 2021-08-26T10:57:28.939+0000 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database. 2021-08-26T10:57:28.939+0000 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted. 2021-08-26T10:57:28.939+0000 I CONTROL [initandlisten] >
2、創建 admin 用戶
> use admin switched to db admin > db.createUser({user: "admin_wcl",pwd: "xyz123456",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]}) Successfully added user: { "user" : "admin_wcl", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] }
> exit
bye
3、重啟 MongoDB
# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 4116 3304 pts/0 Ss+ 10:56 0:00 /bin/bash root 9 0.0 0.0 2616 1636 pts/1 Ss 10:56 0:00 /bin/sh mongodb 56 0.2 3.8 979732 76880 ? SLl 10:57 0:03 /usr/bin/mongod --config /etc/mongodb.conf root 175 0.0 0.1 5904 2856 pts/1 R+ 11:20 0:00 ps aux # # kill -9 56 # # ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 4116 3304 pts/0 Ss+ 10:56 0:00 /bin/bash root 9 0.0 0.0 2616 1636 pts/1 Ss 10:56 0:00 /bin/sh root 176 0.0 0.1 5904 2980 pts/1 R+ 11:20 0:00 ps aux # # service mongodb start * Starting database mongodb [ OK ] #
4、使用剛創建的賬號登錄
# mongo --port 27017 -u "admin_wcl" -p "xyz123456" --authenticationDatabase "admin" MongoDB shell version v3.6.8 connecting to: mongodb://127.0.0.1:27017/ Implicit session: session { "id" : UUID("cf802538-a71b-48a6-b0c7-65e8a985de75") } MongoDB server version: 3.6.8 Server has startup warnings: 2021-08-26T11:21:14.317+0000 I CONTROL [initandlisten] 2021-08-26T11:21:14.317+0000 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database. 2021-08-26T11:21:14.317+0000 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted. 2021-08-26T11:21:14.317+0000 I CONTROL [initandlisten] >
數據庫權限角色
默認mongoDB 並沒有用戶限制,任何人都可以連接數據庫
默認有 admin 、 config 、local、 test 四個數據庫,show dbs 命令開始會顯示前三個數據庫,因為test 沒有數據。
當前數據庫的角色(每個數據庫都有的角色)
角色 | 能夠執行的操作 |
---|---|
read | 能讀取所有非系統集合和system.js集合的數據 |
readWrite | 能讀取所有非系統集合和system.js集合的數據 或 寫入 |
dbAdmin | 提供執行管理任務的能力,例如與架構相關的任務、索引和收集統計信息。但沒有用戶和角色管理權限。 |
userAdmin | 提供在當前數據庫上創建和修改角色和用戶的功能。由於userAdmin角色允許用戶向任何用戶(包括他們自己)授予任何權限,因此該角色還間接地向超級用戶提供對數據庫、集群及admin數據庫(如果有scoped)的訪問。 |
dbOwner | 可以執行任何操作,readWrite、dbAdmin和userAdmin 權限的總和 |
群集管理角色 (admin數據庫的角色)
admin數據庫包括所有以下角色,用於管理整個系統,而不僅僅是單個數據庫。這些角色包括但不限於副本集和分片集群管理功能。
角色 | 能夠執行的操作 |
---|---|
clusterManager | 提供群集上的管理和監視操作。具有此角色的用戶可以訪問 config 數據庫和 local 數據庫,它們分別用於分片和復制。 |
clusterMonitor | 提供對監控工具(如MongoDB Cloud Manager和Ops Manager監控代理)的只讀訪問。 |
hostManager | 提供監視和管理服務器的功能。 |
clusterAdmin | 提供最大的群集管理訪問。此角色結合了clusterManager、clusterMonitor和hostManager角色授予的權限。還提供dropDatabase操作。 |
備份和恢復角色(admin數據庫的角色)
admin數據庫包括所有以下角色
角色 | 能夠執行的操作 |
---|---|
backup | 提供備份數據所需的最低權限。此角色提供足夠的權限來使用MongoDB Cloud Manage、Ops Manager 備份代理或使用mongodump備份整個mongod實例。 |
restore | 提供從備份中還原數據所需的權限(如果數據不包括system.profile數據) 並在運行mongorestore時,可不使用--oplogReplay選項。 |
所有數據庫的角色(admin數據庫的角色)
以下角色在admin 數據庫上可用,並提供適用於除local 和config之外的所有數據庫的權限:
角色 | 能夠執行的操作 |
---|---|
readAnyDatabase | 提供與在除 local 和 config之外的所有數據庫上 read 相同的只讀權限。該角色還提供對整個集群的listDatabases操作。 |
readWriteAnyDatabase | 提供與在除 local 和 config之外的所有數據庫上 readWrite 相同的讀寫權限。該角色還提供對整個集群的listDatabases操作。 |
dbAdminAnyDatabase | 提供與在除 local 和 config之外的所有數據庫上 dbAdmin 相同的權限。該角色還提供對整個集群的listDatabases操作。 |
userAdminAnyDatabase | 提供與在除 local 和 config之外的所有數據庫上 userAdmin 相同權限。 |
超級用戶角色
以下角色可以為任何用戶分配任何數據庫上的任何權限,這意味着具有這些角色之一的用戶可以為自己分配任何數據庫上的任何權限:
admin 數據庫的 dbOwner 角色
admin 數據庫的 userAdmin 角色
userAdminAnyDatabase 角色
root 角色:超級權限
創建普通用戶
> use foobar; > db.createUser({ user:"foobarUser",pwd:"foo",roles:[{role:"readWrite",db:”foobar”}],});
創建用戶管理員
> use admin; > db.createUser({ user:"Useradmin",pwd:"Userpwd",roles:["userAdminAnyDatabase"],});
創建數據庫管理員
> use admin; > db.createUser({ user:"DbUser",pwd:"DbPwd“,roles:["readWriteAnyDatabase", "dbAdminAnyDatabase"]});
查詢某個數據庫下的用戶
> db.system.users.find();
刪除指定用戶
> db.dropUser(“用戶名”);
管理
官方管理工具 Compass:https://www.mongodb.com/products/compass