麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > MongoDB > 正文

mongodb 添加用戶及權限設置詳解

2020-03-14 13:26:09
字體:
來源:轉載
供稿:網友

我知道的關系型數據庫都是有權限控制的,什么用戶能訪問什么庫,什么表,什么用戶可以插入,更新,而有的用戶只有讀取權限。

例如:mysql安裝配置好后,有一個自帶的mysql數據庫,里面有一張user表,用來存放用戶,以及用戶權限,而mongodb這個最像關系型的數據庫,有沒有這樣的表呢。

一,掌握權限,理解下面4條基本上就差不多

1,mongodb是沒有默認管理員賬號,所以要先添加管理員賬號,在開啟權限認證。

2,切換到admin數據庫,添加的賬號才是管理員賬號。

3,用戶只能在用戶所在數據庫登錄,包括管理員賬號。

4,管理員可以管理所有數據庫,但是不能直接管理其他數據庫,要先在admin數據庫認證后才可以。這一點比較怪

二,添加管理員賬號

 

 
  1. [root@localhost zhangy]# mongo 
  2. MongoDB shell version: 2.4.6 
  3. connecting to: tank 
  4. > use admin //切換到admin數據庫 
  5. switched to db admin 
  6. > show collections; 
  7. system.indexes 
  8. system.users //用戶表 
  9. > db.system.users.find(); //用戶表沒有數據 
  10. > db.addUser('tank','test'); //添加一個管理員賬號 
  11. "user" : "tank"
  12. "readOnly" : false
  13. "pwd" : "988432606980d0695e4f668f6bbc643a"
  14. "_id" : ObjectId("529e5d543b6a4608ac833429"

三,開啟動用戶權限認證

 

 
  1. [root@localhost zhangy]# vim /etc/mongodb.conf //將auth=true前面的注釋拿掉 
  2. [root@localhost zhangy]# /etc/init.d/mongod restart //重啟生效 

四,用戶只能在用戶所在數據庫登錄,管理員需要通過admin認證后才能管理其他數據庫

 

 
  1. [root@localhost zhangy]# mongo 
  2. MongoDB shell version: 2.4.6 
  3. connecting to: tank 
  4. > show dbs; //顯示所有數據庫失敗,因為還沒有認證 
  5. Wed Dec 4 06:39:50.925 listDatabases failed:{ "ok" : 0, "errmsg" : "unauthorized" } at src/mongo/shell/mongo.js:46 
  6. > db.auth('tank','test'); //認證失敗,因為這個用戶不屬于tank這個數據庫 
  7. Error: 18 { code: 18, ok: 0.0, errmsg: "auth fails" } 
  8. > use admin //切換到admin數據庫 
  9. switched to db admin 
  10. > db.auth('tank','test'); //在admin數據庫認證成功 
  11. > use tank; //切換到tank數據庫 
  12. switched to db tank 
  13. > show collections; //不會在提示沒有權限了 
  14. contact 
  15. system.indexes 
  16. users 

五,添加普通用啟

 

 
  1. > use tank; 
  2. switched to db tank 
  3. > db.addUser('tank1','test'); //為tank數據庫添加了一個可讀寫用戶tank1 
  4. "_id" : ObjectId("529e5f8474b4c660718a70f3"), 
  5. "user" : "tank1"
  6. "readOnly" : false
  7. "pwd" : "35dd47abff098f5b4f0b567db8edeac5" 
  8. > db.addUser('tank2','test',true); //為tank數據庫添加了一個只讀用戶tank2 
  9. "user" : "tank2"
  10. "readOnly" : true
  11. "pwd" : "1792916c544d247538ded52e6df7b887"
  12. "_id" : ObjectId("529e67553992b24438d5e315"
  13. > exit //退出 
  14. bye 
  15. [root@localhost zhangy]# mongo 
  16. MongoDB shell version: 2.4.6 
  17. connecting to: tank 
  18. > db.auth('tank1','test'); //剛添加的用戶可以登錄。 

六,php客戶端連接

1, 推薦方法一

 

 
  1. $mongo = new Mongo();  
  2.  
  3. $db = $mongo->selectDB('tank'); //切換到tank數據庫  
  4.  
  5. $db->authenticate("tank3""test"); //認證 
  6.  
  7. $users= $db->selectCollection("users"); //選取users表 
  8.  
  9. $cursor = $users->find(); //讀取數據 
  10.  
  11. foreach ($cursor as $id => $value) { 
  12. echo "$id: "; print_r($value); echo "<br>"

這種方式比較好理解,根命令行下的操作過程差不多。

2,推薦方法二

 

 
  1. $mongo = new Mongo("mongodb://tank3:[email protected]:27017/tank"); //認證用戶,這里的數據庫,只啟認證作用 
  2.  
  3. $db = $mongo->selectDB('tank'); //選取數據庫 
  4.  
  5. $users= $db->selectCollection("users"); 
  6.  
  7. $cursor = $users->find(); 
  8.  
  9. foreach ($cursor as $id => $value) { 
  10. echo "$id: "; print_r($value); echo "<br>"

上面二種方法的不同在于,一個先選數據庫在認證,一個先認證在選數據庫。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 蜜桃网在线观看 | 久久影院国产精品 | 日韩精品久久久久久久电影99爱 | gogo全球大胆高清人露出91 | 国产羞羞视频免费在线观看 | 国产免费视频在线 | 国产精品伦视频看免费三 | 精品久久久一二三区播放播放播放视频 | 欧美一a一片一级一片 | 黄色的视频免费看 | 欧美一级片免费在线观看 | 毛片视频网址 | 羞羞羞羞视频 | 99国产精品国产免费观看 | 毛片在线免费视频 | 成人午夜免费av | 亚洲成人在线视频网 | 国产精品99精品 | 亚洲精品欧美在线 | 国产精品资源手机在线播放 | 欧洲黄色一级视频 | 久久国产在线观看 | 亚洲国产网站 | 9191久久久久视频 | 久综合色 | 欧美四级在线观看 | 国产精品啪一品二区三区粉嫩 | 日本在线观看一区二区 | 久久国产中文字幕 | 91短视频版高清在线观看www | 黄色影院在线观看视频 | 久草在线资源福利站 | av不卡免费在线 | 少妇一级淫片免费放播放 | 春光影院理论片 | 少妇色诱麻豆色哟哟 | 国产成人精品视频在线 | 免费黄色小网站 | 亚洲精品在线观看网站 | 国产亚洲精品综合一区91 | 久久成人国产精品 |