Mongodb 3.x 安裝及許可權配置

來源:互聯網
上載者:User
Intro

Mongodb本身已經是比較成熟並已經廣泛使用的一款nosql產品。瞭解該產品最好的方式當然是官網,考慮到網路和語言習慣,一些具有中文站則會給我們更大的便利。這篇文章主要記錄一下折騰Mongodb3.x的一些步驟,其中所有的內容都是通過閱讀官方文檔瞭解的。

一、Mongodb安裝

由於大部分時候Mongodb serever都是跑在Linux環境下,所以這裡預設作業系統都是Linux centos6。Mongodb版本為當前最新,v3.4.2。 tgz包下載

wget 'https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.4.2.tgz'
解壓縮
tar zxvf  mongodb-linux-x86_64-amazon-3.4.2.tgzcd mongodb-linux-x86_64-amazon-3.4.2/bin

這裡會看到所有Mongodb相關的可執行檔,目前只關注

executable desc
mongod Server啟動程式
mongo Client啟動程式


二、Mongodb啟動 1. 啟動Server

知道了Mongodb server的開機檔案是mongod,那麼猜想 ./mongod既能啟動server,但是很自然我們首先會關注這樣幾個問題。
1) 預設監聽連接埠是多少,如果設定我自己想用的連接埠號碼
2) 作業記錄在哪裡看
3) 持久化的資料檔案放在哪裡
4) 是否有設定檔支援更多細節的配置

啟動命令

./mongod --port 27017 --dbpath /mongodb/data --logpath /logs/mongodb.log  -f /mongodb/server.conf

以上命令解答上面提到的4個問題。

--port 指定用戶端串連連接埠號碼,預設27017--dbpath 持久化資料所在路徑,啟動前該路徑必須存在--logpath 記錄檔-f 指定設定檔,簡單的properties檔案,自己建立即可

如果個人化參數都寫在設定檔中會讓啟動命令變得清爽一些,我自己是這樣做的

./mongod -f /mongodb/server.conf

設定檔 cat /mongodb/server.conf

port=27017logpath=/logs/mongodb.loglogappend=true #日誌生產方式 (追加/覆蓋)dbpath=/mongodb/data
2. 用戶端串連

Mongodb client的開機檔案是mongo,而我們又知道mongodb服務的ip:port,猜都能猜到用戶端串連命令

./mongo 127.0.0.1:27017

如果串連成功,mongodb的安裝就到此結束了。


三、許可權配置

現在mongodb已經安裝啟動可以使用了,但是很奇怪,一直都沒有遇到過許可權問題,如果其他人也能隨意連上我的資料篡改資料豈不是麻煩了。那下一個要解決的問題 就是為我的資料庫加上許可權控制。

總的來說是以下幾步: 1. 開啟許可權驗證

在server.conf中加上一行

auth=true

2. 添加管理員帳號

這裡所說的管理員帳號不是像linux裡面無所不能的root,而是一個能分配帳號的帳號。在server所在的系統,用用戶端串連上server,執行以下代碼

use admindb.createUser({    user:'admin',    pwd:'123456',     roles:[{role:'userAdminAnyDatabase', db:'admin'}]})

這樣就建立了一個帳號,user為admin, 密碼為123456,他能在admin庫中管理任何庫的使用者。 3. 添加資料操作帳號

一旦開啟的許可權管理,接下來所有的操作都必須用合適的帳號去做,剛剛我們能成功的添加使用者,是因為這是我們的第一個帳號(第一就有特權,呵)。我們建立的admin帳號只能系統管理使用者,而我們真正需要的帳號是要能用來讀寫資料的,那就需要建立一個可讀寫資料的帳號。

接下來,我們要為一個名為”testDatabase”的庫添加讀寫使用者rwuser。

use admindb.auth("admin","123456")use testDatabasedb.createUser({    user:'rwuser',    pwd:'123456',     roles:[{role:'readWrite', db:'testDatabase'}]})

使用exit退出串連後,我們就可以使用該帳號串連server了

./mongo 127.0.0.1:27017/testDatabase -urwuser -p123456


四. mongodb相關概念

mongodb也存在和mysql類似的“庫”概念,大體概念是相似的,同樣預設會有一個test庫。Collection的概念則對應mysql中的表。

相關的命令:

command desc
use ${databaseName} 切換到databaseName
db 當前所在庫名
show collections 列出當前所在庫中所有collection名字
show dbs 列出所有庫



在這裡“庫”的概念之下,我們回頭看添加帳號時的一些操作。

//use testDatabase =>use admindb.createUser({    user:'rwuser',    pwd:'123456',     roles:[{role:'readWrite', db:'testDatabase'}]})

admin帳號登入後,為testDatabase庫建立帳號時,做了一次庫切換use testDatabase,可明明在roles:[{role:'readWrite', db:'testDatabase'}]這一行代碼裡已經指明給該帳號的是testDatabase庫的讀寫權限,還需要多此一舉嗎。在mongodb裡,這確實是有意義的。簡單的說來,就是在某個庫下建立的帳號,只能用來登入到這個庫,若再要操作其他庫,則需要先做庫切換。舉個例子,如果上一節中use testDatabase改成use admin,登入命令則需要改成:

./mongo 127.0.0.1:27017/admin -urwuser -p123456

而此時串連成功後是登入到admin庫,然後需要use testDatabase才能做後續的讀寫操作。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.