成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

教你如何利用MySQL學習MongoDB之授權和權限

數據庫 其他數據庫 MySQL MongoDB
在上文中,我們了解了教你如何利用MySQL學習MongoDB之SQL語法,本文中我們繼續我們的學習之旅,學習兩者的授權和權限。

在上文中,我們了解了教你如何利用MySQL學習MongoDB之SQL語法,本文中我們繼續我們的學習之旅,學習兩者的授權和權限。

數據庫的安全性是每一個DBA重點關注的部分,在數據庫建立之后,數據的安全就顯得尤為重要。

對于一個數據庫管理員來說,安全性就意味著他必須保證那些具有特殊數據訪問權限的用戶能夠登錄到數據庫服務器,并且能夠訪問數據以及對數據庫對象實施各種權限范圍內的操作;同時,DBA還要防止所有的非授權用戶的非法操作。

1、MySQL授權和權限

MySQL中有兩種級別的權限:管理和用戶。所有權限都可分別使用 GRANT 和 REVOKE 語句授予和收回。可以授予用戶create、select、update、delete、insert、execute、index 等權限,也可授予alter、drop和shutdown等系統權限。根用戶root在默認情況下具有所有權限。

2、MongoDB授權和權限

官方文檔開啟MongoDB 服務時不添加任何參數時,可以對數據庫任意操作,而且可以遠程訪問數據庫,所以推薦只是在開發是才這樣不設置任何參數。如果啟動的時候指定--auth參數,可以從阻止根層面上的訪問和連接

(1)、只允許某ip訪問

mongod --bind_ip 127.0.0.1

(2)、指定服務端口

mongod --bind_ip 127.0.0.1 --port27888

(3)、添加用戶認證

mongod --bind_ip 127.0.0.1 --port27888 –auth

(4)、添加用戶

在剛安裝完畢的時候MongoDB都默認有一個admin數據庫,而admin.system.users中將會保存比在其它數據庫中設置的用戶權限更大的用戶信息。

當admin.system.users中一個用戶都沒有時,即使mongod啟動時添加了--auth參數,如果沒有在admin數據庫中添加用戶,此時不進行任何認證還是可以做任何操作,直到在admin.system.users中添加了一個用戶。

下面分別創建兩個用戶, 在foo中創建用戶名為user1密碼為pwd1的用戶,如下:

  1. [root@localhost bin]# ./mongo --port 27888   
  2. MongoDB shell version: 1.8.1   
  3. connecting to: test   
  4. > use foo   
  5. switched to db foo   
  6. > db.addUser("user1","pwd1")   
  7. {   
  8. "user" : "user1",   
  9. "readOnly" : false,   
  10. "pwd" : "35263c100eea1512cf3c3ed83789d5e4"   
  11. }  

 

[[29688]]

在admin中創建用戶名為root密碼為pwd2的用戶,如下:[[29688]]

 

  1. > use admin   
  2. switched to db admin   
  3. > db.addUser("root""pwd2")   
  4. {   
  5. "_id" : ObjectId("4f8a87bce495a88dad4613ad"),   
  6. "user" : "root",   
  7. "readOnly" : false,   
  8. "pwd" : "20919e9a557a9687c8016e314f07df42"   
  9. }   
  10. > db.auth("root""pwd2")   
  11. 1   
  12. >  

 

如果認證成功會顯示1, 用以下命令可以查看特定的數據庫的用戶信息:[[29688]]

  1. > use admin   
  2. switched to db admin   
  3. > db.system.users.find();   
  4. "_id" : ObjectId("4f8a87bce495a88dad4613ad"), "user" : "root""readOnly" : false"pwd" : "20919e9a557a9687c8016e314f07df42" }   
  5. > use foo   
  6. switched to db foo   
  7. > db.system.users.find();   
  8. "_id" : ObjectId("4f92966d77aeb2b2e730c1bb"), "user" : "user1""readOnly" : false"pwd" : "35263c100eea1512cf3c3ed83789d5e4" }   
  9. >  

 

下面我們試驗一下用戶的權限設置是否正確:[[29688]]

  1. [root@localhost bin]# ./mongo --port 27888   
  2. MongoDB shell version: 1.8.1   
  3. connecting to: 127.0.0.1:27888/test   
  4. > use foo   
  5. switched to db foo   
  6. > db.system.users.find();   
  7. error: {   
  8. "$err" : "unauthorized db:foo lock type:-1 client:127.0.0.1",   
  9. "code" : 10057   
  10. }   
  11. > use admin   
  12. switched to db admin   
  13. > db.system.users.find();   
  14. error: {   
  15. "$err" : "unauthorized db:admin lock type:-1 client:127.0.0.1",   
  16. "code" : 10057   
  17. }   
  18. >  

 

通知以上實驗結果,說明登錄時不指定用戶名和口令時會報錯,也就是說安全性的部署生效了。下面我再看一下另一個場景:

  1. [root@localhost bin]# ./mongo --port 27888 -uroot -ppwd2   
  2. MongoDB shell version: 1.8.1   
  3. connecting to: 127.0.0.1:27888/test   
  4. Sat Apr 21 19:23:15 uncaught exception: login failed   
  5. exception: login failed  

 

奇怪了,我們明明指定了用戶名而且口令也沒有錯呀,這時我們看一下系統日志上是否有一些有價值的信息:

auth: couldn't find user root, test.system.users

 

哦,原來是這樣,說明連接mongodb時,如果不指定庫名,那么會自動連接到test庫,但剛才我們新建的用戶,都不是在test庫上建立的,所以我們需要顯示指定需要連接的庫名:

  1. [root@localhost bin]# ./mongo --port 27888 admin -uroot -ppwd2   
  2. MongoDB shell version: 1.8.1   
  3. connecting to: 127.0.0.1:27888/admin   
  4. > show collections;   
  5. system.indexes   
  6. system.users   
  7. > use foo   
  8. switched to db foo   
  9. > show collections   
  10. system.indexes   
  11. system.users   
  12. t1   
  13. >  

 

可以看到root這個用戶有所有庫的操作權限, 那么user1這個用戶有什么權限呢?我們一試便知:

  1. [root@localhost bin]# ./mongo --port 27888 foo -uuser1 -ppwd1   
  2. MongoDB shell version: 1.8.1   
  3. connecting to: 127.0.0.1:27888/foo   
  4. > show collections;   
  5. system.indexes   
  6. system.users   
  7. t1   
  8. > use test   
  9. switched to db test   
  10. > show collections   
  11. Sat Apr 21 19:28:25 uncaught exception: error: {   
  12. "$err" : "unauthorized db:test lock type:-1 client:127.0.0.1",   
  13. "code" : 10057   
  14. }   
  15. >  

 

通過結果我們看到, 由于user1是在foo庫里建立的用戶,所以它不具有操作其它數據庫,甚至是test庫的權限。

 

【編輯推薦】

  1. 教你如何利用MySQL學習MongoDB之SQL語法
  2. 教你如何利用MySQL學習MongoDB之數據存儲結構
  3. 如何解決PHP+MySQL出現亂碼的現象
  4. 教你如何利用MySQL學習MongoDB之安裝篇
  5. MySQL配置時提示無法連接到MySQL本地服務器
責任編輯:艾婧 來源: it168
相關推薦

2011-05-24 10:11:30

MySQLMongoDB

2011-05-24 09:51:07

MySQLMongoDB

2011-05-23 09:23:19

MySQLMongoDB

2011-05-24 09:10:24

MySQLMongoDB

2011-05-23 13:30:00

MySQLMongoDB

2023-12-01 10:21:00

機器學習算法

2011-09-14 15:30:00

MongoDB

2023-11-02 13:34:00

云計算聯合學習

2011-03-31 10:52:13

2023-03-20 07:48:03

2020-11-27 07:38:43

MongoDB

2016-11-11 11:11:25

2013-02-20 10:01:29

Wireshark監測無線網絡

2023-08-17 14:22:17

深度學習機器學習

2011-08-01 09:26:51

Xcode Xcode 4 Instrument

2024-11-20 16:12:31

Python圖像處理計算機視覺

2019-10-15 14:53:23

MongoDBMySQL數據庫

2020-12-25 15:24:24

人工智能

2024-11-20 16:42:03

Python科學計算

2021-06-17 10:27:03

人工智能AI機器學習
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 色综合色综合色综合 | 日韩视频在线播放 | 伊人久久免费视频 | 国产精品久久久久久久毛片 | 羞羞视频网站在线观看 | 一区二区三区四区免费视频 | 91视视频在线观看入口直接观看 | 九九伊人sl水蜜桃色推荐 | 亚洲综合三区 | 天堂色区| 狠狠亚洲 | 亚洲精品一区在线观看 | 99热这里有精品 | 国产精品久久久久9999鸭 | 毛片一区二区三区 | av黄色在线 | 亚洲高清视频在线观看 | 神马久久av | 国产精品毛片一区二区三区 | 精品一二三区 | 中文视频在线 | 黄色亚洲网站 | 日韩精品免费 | 国产在线一区观看 | 亚洲一区二区av | 成人在线免费电影 | 国产高清精品在线 | 免费观看日韩av | 国户精品久久久久久久久久久不卡 | 午夜在线视频一区二区三区 | 不卡视频在线 | 一区二区视频在线观看 | 日韩www| 99爱视频| 亚洲欧美日韩在线 | 蜜桃av鲁一鲁一鲁一鲁 | 日韩中文字幕一区 | 国产成人a亚洲精品 | 欧美日韩三级视频 | 国产精品九九视频 | 久久成人精品视频 |