1. 程式人生 > >ubuntu 16.04 linux下mongodb的安裝和配置

ubuntu 16.04 linux下mongodb的安裝和配置

目錄

測試環境:

安裝步驟:

操作資料庫

測試環境:

ubuntu: 16.04.4 LTS

gcc: 5.4.0

mongdb: 3.6.6

linux:檢視版本

uname -a

cat /etc/issue

安裝步驟

1:下載安裝包

MongDB提供了linux各發行版的安裝包,找到對應的安裝包地址

官方地址:https://www.mongodb.com/download-center#community

當前目錄為: /home/ubuntu

$:

2:解壓

tar -zxvf mongodb-linux-x86_64-ubuntu1604-3.6.6.tgz

3:將解壓檔案移動到指定目錄

mv  mongodb-linux-x86_64-ubuntu1604-3.6.6/  /home/ubuntu/softwares/mongodb

建立資料庫目錄

sudo mkdir -p /data/MongoDB  # 建立資料庫目錄

sudo chmod 777 /data/MongoDB #更改目錄許可權

sudo mkdir -p /data/MongoDB/data  # 建立資料目錄

sudo mkdir -p /data/MongoDB/log  #建立日誌目錄

cd  /data/MongoDB

vi mongodb.conf  # 新建並編輯配置檔案

檔案內容為:

dbpath=/data/MongoDB/data  #資料儲存目錄

logpath=/data/MongoDB/log/mongodb.log     #日誌檔案路徑

logappend = true #追加

port=27017 #埠號

fork=true #後臺程序

啟動mongod服務

cd /home/ubuntu/softwares/mongodb/bin/

mongod -f /data/MongoDB/mongodb.conf

連線資料庫:

cd /home/ubuntu/softwares/mongodb/bin/

mongo

操作資料庫

> show dbs

db.foo.save({a:1})

db.foo.find()

配置MongoDB認證賬戶

1:常用命令

超級使用者相關:

1. #進入資料庫admin

        use admin 

         2. #增加或修改使用者密碼

         db.createUser({ user: "username", pwd: "password", roles: [{ role: "dbOwner", db: "yourdb" }] })

         3. #檢視使用者列表

          db.system.users.find()

         4. #使用者認證

          db.auth('username','password')

 5. #刪除使用者

          db.removeUser('name')

         6. #檢視所有使用者

          show users

 7. #檢視所有資料庫

          show dbs

2:roles欄位,指定使用者的角色,內建角色

  1. 資料庫使用者角色:read、readWrite;
  2. 資料庫管理角色:dbAdmin、dbOwner、userAdmin;
  3. 叢集管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
  4. 備份恢復角色:backup、restore;
  5. 所有資料庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  6. 超級使用者角色:root
    // 這裡還有幾個角色間接或直接提供了系統超級使用者的訪問(dbOwner 、userAdmin、userAdminAnyDatabase)
  7. 內部角色:__system
    PS:關於每個角色所擁有的操作許可權可以點選上面的內建角色連結檢視詳情。

3:設定密碼

1 show dbs  # 顯示所有資料庫

2 : 進入admin資料庫並建立管理員賬戶

use admin

db.createUser({ user: "username", pwd: "password", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })

3:驗證新增使用者是否成功

db.auth("username","password") # 成功輸出1,否則0

exit #退出

4:修改配置:

cd /data/MongoDB/

vi mongodb.conf

檔案內容新增一行:

auth=true

5 重啟mongod服務

ps -ef | grep mongo #查詢程序

kill -s 9 程序號 #停止程序

/home/ubuntu/softwares/mongodb/bin/mongod -f /data/MongoDB/mongodb.conf #啟動程序

6連線mongo

cd /home/ubuntu/softwares/mongodb/bin/

./mongo

7 查詢資料庫列表

> show db

8:管理員賬戶登入

use admin

db.auth("username","password")

9:管理其他資料庫的賬號密碼

use bigdata

db.createUser({ user: "username", pwd: "password", roles: [{ role: "dbOwner", db: "yourdb" }] })

10:檢視使用者

>use admin

db.system.users.find()

mongodb遠端連線配置

1:修改配置檔案

vi /data/MongoDB/mongodb.conf

配置檔案內容:

把bind_ip=127.0.0.1這一行註釋掉,修改成bind_ip=0.0.0.0

2:重啟mongodb服務

ps -ef | grep mongo

kill -s 9 程序號 #停掉程序

/home/ubuntu/softwares/mongodb/bin/mongod -f /data/MongoDB/mongodb.conf#啟動程序

3:防火牆開放37017埠

命令:iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 37017 -j ACCEPT

4遠端連線

mongo 遠端主機ip或DNS:埠號/資料庫名 -u 使用者名稱 -p

本機連線: mongo

使用預設埠: mongo 192.168.1.100

使用指定埠: mongo 192.168.1.100:37017

連線到指定資料庫:mongo 192.168.1.100:37017/test -u user -p

db.collection.find()  查詢集合中文件並返回結果為遊標的文件集合。

語法:db.collection.find(query, projection)

find的第一個引數是查詢條件,其形式也是一個文件,決定了要返回哪些文件,空的査詢文件{}會匹配集合的全部內容。要是不指定査詢文件,預設就是{},如同SQL中"SELECT * FROM TABLENAME"語句。

//將返回集合中所有文件db.collection.find()

 第一個引數若為鍵/值對時,查詢過程中就意味著執行了條件篩選

//mongo db

db.user.find({age:16})

//mongo db 多條件

db.user.find({age:28,sex:"male"})

我們可以通過find 的第二個引數來指定返回的鍵。在第二個引數中,指定鍵名且值為1或者true則是查詢結果中顯示的鍵;若值為0或者false,則為不顯示鍵。文件中的鍵若在引數中沒有指定,查詢結果中將不會顯示(_id例外)。這樣我們就可以靈活顯示宣告來指定返回的鍵。

db.users.find({}, {"name" : 1, "age" : 1, "_id"0})

以年齡升序asc 
db.users.find().sort({age: 1});

以年齡降序desc 
db.users.find().sort({age: -1});

返回5條記錄 
db.users.find().limit(5);

# 查詢

db.announcement.find().sort({"create_at":-1}).limit(5)  

#刪除一條記錄

db.announcement.find({"original":"bitfinex","url":"https://www.bitfinex.com/posts/268"})

db.announcement.remove({"original":"bitfinex","url":"https://www.bitfinex.com/posts/268"})

db.announcement.find({"original":"bitfinex","url":"https://www.bitfinex.com/posts/268"})