首頁  >  文章  >  資料庫  >  主流的NoSQL資料庫--MongoDB權限設定的詳解

主流的NoSQL資料庫--MongoDB權限設定的詳解

零下一度
零下一度原創
2017-05-06 14:57:241444瀏覽

本文閱讀物件:

  • MongoDB權限設定不熟悉者

  • MongoDB開發者

  • 其他對MongoDB感興趣的開發者

  • 對技術感興趣的吃瓜群眾

MongoDB是一個基於分散式檔案存儲的資料庫,為目前主流的NoSQL資料庫,已被應用到許多高效能的大型系統中。如果之前從未接觸MongoDB,可以訪問MongoDB官網快速了解其主要特性及應用場景,如果英文水平確實有限,可以閱讀MongoDB百度百科進行了解,不過個人建議直接看英文資料,因為你遲早要去啃英文的技術資料。

MongoDB的安裝

此文範例的環境是基於CentOS 7.3 64位,MongoDB版本為3.2.4。

  1. 在伺服器上,以超級使用者權限執行yum安裝,指令如下:

  2. [username@xxx]# su [username] -- username 为你登陆服务器的用户名
    [username@xxx]# yum -y install mongodb-server  mongodb
    如果安装成功,你会得到如下类似的结果:
    Installed:
    mongodb-server.x86_64 0:2.6.12-4.el7
    Complete!
  3. 找到MongoDB的安裝目錄

    從上面的結果可以看出,mongo被安裝在目前/usr/bin下,進入該目錄。

  4. [username@xxx]# find -name mongo
    /etc/sysconfig/mongod
    /usr/bin/mongod
  5. 新增設定mongodb.conf。將設定檔、資料及日誌檔案放在目錄/usr/local/mongodb下,同時在/usr/local/mongodb目錄下建立資料及日子目錄:data及logs

  6. [username@xxx]# cd /usr/local
    [username@xxx]# mkdir mongodb
    [username@xxx]# cd mongodb
    [username@xxx]# mkdir data
    [username@xxx]# mkdir logs
    [username@xxx]# vi mongodb.conf
    在打开的文件中添加以下内容,然后保存:
    dbpath = /usr/local/mongodb/data
    logpath = /usr/local/mongodb/logs/mongod.log
    port = 27017
    fork = true
    nohttpinterface = true
  7. 啟動mongo服務

  8. [username@xxx]# /usr/bin/mongod --config /usr/local/mongodb/mongodb.conf
    about to fork child process, waiting until server is ready for connections.
    forked process: 9516
    child process started successfully, parent exiting
  9. 連接MongoDB

    至此MongoDB已經安裝並啟動,並且在伺服器上能夠以客戶端的形式連接。

  10. [username@xxx]# mongo 127.0.0.1:27017
    MongoDB shell version: 2.6.12
    connecting to: 127.0.0.1:27017/test
    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

MongoDB權限設定

  1. 建立一個root用戶,並賦予超級管理員權限(root),超級管理員可以管理MongoDB下的所有函式庫以及權限、備份及叢集等作業。 注意在下文程式碼區塊區域內,粗體部分為MongoDB shell的指令,斜體部分為執行shell指令之後的結果。

  2. use admin
    switched to db admin
    db.createUser({user:"root", pwd: "123456", roles: ["root"]})
    Successfully added user: { "user" : "root", "roles" : [ "root" ] }
  3. 為admin函式庫建立一個admin用戶,並賦予管理員權限。
    <strong> </strong>

  4. use admin
    switched to db admin
    db.createUser({user:"admin", pwd:"admin", roles:
    [{role:"userAdminAnyDatabase", db:"admin"}]})
    Successfully added user: {
    "user" : "admin", "roles" : [
    {
    "role" : "userAdminAnyDatabase",
    "db" : "admin"
    }
    ]}
  5. #新建一個函式庫biz,加入一個使用者demo,密碼demo,並賦予讀寫及管理員權限。

  6. use biz
    switched to db biz
    db.createUser({user:"demo", pwd:"demo", roles:["readWrite", "dbAdmin"]})
    Successfully added user: { "user" : "demo", "roles" : [ "readWrite", "dbAdmin" ] }
  7. 認證建立的用戶,此步驟非常重要。認證完成之後,退出shell。

  8. db.auth(&#39;demo&#39;, &#39;demo&#39;)
    1
     # 1 - 表示认证成功,0 - 表示失败
    exit
    bye

#開啟驗證,重新啟動MongoDB服務。

  1. 修改設定檔/usr/local/mongodb/mongodb.conf,加入以下內容,然後儲存。
    auth=true

  2. 殺死,並重啟服務

  3. ##
    // 查看mongo进程信息
    [username@xxx]# ps -def|grep mongo
    root      9516     1  0 15:08 ?        00:00:30 /usr/bin/mongod --config mongodb.conf
    root      9759  9614  0 16:55 pts/0    00:00:00 grep --color=auto mongo
    // 杀死进程
    [username@xxx]# kill -4 9516
    // 启动MongoDB
    [username@xxx]# /usr/bin/mongod --config /usr/local/mongodb/mongodb.conf
    about to fork child process, waiting until server is ready for connections.
    forked process: 9783
    child process started successfully, parent exiting
驗證權限設定成功

  1. 嘗試匿名連線biz資料庫,連線之後,執行指令

    show collections,將會提示驗證失敗訊息not authorized for query on biz.system.namespaces。對應指令如下:

  2. [username@xxx]# /usr/bin/mongo 127.0.0.1:27017/biz
    MongoDB shell version: 2.6.12
    connecting to: 127.0.0.1:27017/biz
    show collections
    2017-04-15T17:04:20.662+0800 error: { "$err" : "not authorized for query on biz.system.namespaces", "code" : 13 } at src/mongo/shell/query.js:131
  3. 使用新增的使用者與密碼連接biz函式庫,並執行

    show collections,同時建立集合users,並插入一條測試數據,發現可以得到正確的結果。
    <br>{ "_id" : ObjectId("58f1e4aff754011ea2e23238"), "name" : "aa" }<em></em>

  4. [username@xxx]# /usr/bin/mongo 127.0.0.1:27017/biz -u demo -p demo
    MongoDB shell version: 2.6.12
    connecting to: 127.0.0.1:27017/biz
    show collections
    db.users.insert({name:"aa"})
    WriteResult({ "nInserted" : 1 })
    db.users.find()
  5. #權限設定成功!

總結

在MongoDB的權限設定過程中,新增使用者之後,一定要執行對應的使用者驗證,否則該使用者的權限無效生效。本文僅涉及幾個簡單的權限,更多的內建權限可以參考官方文件。在配置過程中如果遇到任何問題,可以留言給我進行討論與交流。

【相關推薦】

1. 免

費mysql線上影片教學

2. 

MySQL最新手冊教學

3. 資料庫設計那些事

###

以上是主流的NoSQL資料庫--MongoDB權限設定的詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn