MongoDB 3.4簡要教程

說明

MongoDB 3.4 的四個組件說明:

  • mongodb-org-server: 包含MongoDB守護進程和相關的配置和初始化腳本。
  • mongodb-org-mongos: 包含mongos的守護進程。
  • mongodb-org-shell: 包含mongo shell。
  • mongodb-org-tools: 包含MongoDB的工具: mongoimport, bsondump, mongodump, mongoexport, mongofiles, mongooplog, mongoperf, mongorestore, mongostat, and mongotop。

安裝

yum安裝

  • 創建/etc/yum.repos.d/mongodb-org-3.4.repo文件,內容如下
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
  • 安裝
$ yum install -y mongodb-org
  • 配置SELinux

    • 如果ELinux啓動了enforcing模式

    $ semanage port -a -t mongod_port_t -p tcp 27017

  • 如果禁用SELinux (修改配置文件的方式必須重啓系統)

    $ vim /etc/selinux/config

    • 修改配置

      SELINUX=disabled
      或者
      SELINUX=permissive

      • setenforce,此方法不用重啓系統

      $ setenforce 0

源碼安裝

  • Setp 1 獲取壓縮包
    • 我們可以將下載好的壓縮包上傳到服務器
    • 或者通過wget獲取壓縮包

此處我們將我們下載好的壓縮包mongodb-linux-x86_64-rhel70-3.4.4.tgz上傳至服務器

  • Setp 2 解壓壓縮包
$ tar -zxvf mongodb-linux-x86_64-rhel70-3.4.4.tgz /home
$ cd mongodb-linux-x86_64-rhel70-3.4.4
$ mkdir /home/mongodb
$ cp -R * /home/mongodb
  • Setp 3 配置MongoDB
$ mkdir /home/mongodb/data
$ mkdir /home/mongodb/log/mongolog

mongodb配置文件,mongo.cfn。需要注意,配置文件的縮進是空格,使用製表符Tab縮進會報錯

systemLog: 
    destination: file
    path: "/home/mongodb/log/mongolog/mongod.log"
    logAppend: true
storage:
    journal: 
        enabled: true
    dbPath: /home/mongodb/data
processManagement:
    fork: true #後臺進程方式啓動
    pidFilePath: "/home/mongodb/data/mongod.pid"
net: 
    bindIp: 127.0.0.1 #此處修改爲服務器IP,否則本機以外無法訪問
    port: 27017
setParameter: 
    enableLocalhostAuthBypass: false
  • Setp 4 環境變量配置
$ vim /etc/profie.d/mongo.sh

編輯mongo.sh文件,添加內容:export PATH=$PATH:/home/mongodb/bin

$ source /etc/profile.d/mongo.sh
  • Setp 5 啓動MongoDB

直接命令行配置啓動

$ mongod --dbpath=/home/mongodb/data/ --logpath=/home/mongodb/log/mongolog/mongo.log --logappend --auth --fork

使用配置文件配置啓動

$ mongod -f /home/mongodb/mongo.cfn

啓動

  • 執行啓動MongoDB服務的命令
$ service mongod start

停止MongoDB服務:service mongod stop
重啓MongoDB服務:service mongod restart

  • 查看MongoDB啓動是否成功,查看日誌/var/log/mongodb/mongod.log文件,是否存在以下一行內容
[initandlisten] waiting for connections on port <port>

爲當前MongoDB服務的端口,默認爲27017。端口可以在/etc/mongod.conf主配置文件中進行配置,只要配置文件修改均需要重啓MongoDB服務方可生效。

  • 設置MongoDB服務隨操作系統啓動
$ chkconfig mongod on

維護

  • 放行MongoDB端口
$ firewall-cmd --zone=public --add-port=27017/tcp --permanent
$ firewall-cmd --reload
  • MongoDB數據庫存放目錄爲/var/lib/mongo
  • 刪除MongoDB的安裝包
$ yum erase $(rpm -qa | grep mongodb-org)
  • 刪除MongoDB數據庫及日誌
$ rm -r /var/log/mongodb
$ rm -r /var/lib/mongo

Shell 客戶端

登錄Mongo Shell

連接MongoDB

$ mongo --host 192.168.0.100

基本命令

  • 查看數據庫
$ show dbs;
  • 切換數據庫
    在進行任何集合操作前,都必須先切換到一個數據庫
$ use admin;
switched to db admin
  • 查看集合
    等同於關係型數據庫的表
$ show collections;
system.version
  • 退出Shell
$ exit;

權限

說明

MongoDB一路走來,各個版本權限管理差別較大,本文講解的權限是基於v3.4.4版本,如果使用低於或高於本文所用版本,可能存在差異。

權限、用戶、角色管理均基於Shell,所以所有操作均需要保證已登錄Shell客戶端
所有用戶均儲存在admin數據庫下的db.system.users集合

用戶角色權限

  • 數據庫用戶角色

    • read
      僅擁有數據庫讀權限

    • readWrite
      數據庫讀寫權限

  • 數據庫管理角色

    • dbAdmin
      可以對數據庫的system.indexes、system.namespaces、system.profile 集合進行操作

      • collStats
      • dbHash
      • dbStats
      • find
      • killCursors
      • listIndexes
      • listCollections
      • dropCollection、createCollection僅提供給system.profile
    • dbOwner
      對數據庫的擁有者、角色提供管理權限,同時提供readWrite、dbAdmin、userAdmin角色的權限

    • userAdmin
      當前數據庫(使用use切換的目標數據庫)提供,創建、修改角色及用戶的權限。
      明確的提供以下操作:

      • changeCustomData
      • changePassword
      • createRole
      • createUser
      • dropRole
      • dropUser
      • grantRole
      • revokeRole
      • viewRole
      • viewUser
  • 所有數據庫角色

    • userAdminAnyDatabase
      僅能夠進行本地連接Shell,僅擁有userAdmin角色的權限,沒有readWrite權限

    • dbAdminAnyDatabase
      僅能夠進行本地連接Shell,僅擁有dbAdmin角色的權限,沒有readWrite權限

    • readAnyDatabase
      僅能夠進行本地連接Shell,僅擁有read權限

    • readWriteAnyDatabase
      僅能夠進行本地連接Shell,僅擁有 readWrite權限

  • 超級用戶角色

    • root
      提供所有角色的操作權限

開啓權限

配置文件/home/mongodb/mongo.cfn中添加一下代碼,開啓權限驗證

security:
   authorization: "enabled"

創建超級管理員

首先創建一個超級管理員

> use admin
> db.createUser(
  {
    user: "admin",
    pwd: "admin123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

user:用戶名
pwd:用戶密碼
roles:一組角色設置(對象)
role:角色名
db:角色所控制的數據庫名

userAdminAnyDatabase:僅能通過本地連接管理用戶及角色
官方文檔地址:https://docs.mongodb.com/manual/reference/built-in-roles/#userAdminAnyDatabase
超級管理員創建完成後,退出命令行,重啓MongoDB

認證

重啓MongoDB後,進入Shell客戶端,在命令行進行認證

$ mongo --host 192.168.0.100 --port 27017 -u "admin" -p "admin123" --authenticationDatabase "admin"
ationDatabase "admin"
MongoDB shell version v3.4.4
connecting to: mongodb://192.168.0.202:27017/
MongoDB server version: 3.4.4
>

-u:用戶名
-p:密碼
–authenticationDatabase:剛剛創建admin用戶時,role指定userAdminAnyDatabase角色,對應的db指定的數據庫

如果直接使用$ mongo –host 192.168.0.100 –port 27017連接Shell客戶端,則需要成功連接後,使用db.auth(“admin”, “admin123”)用戶完成認證

刪除用戶

  • 需要在admin數據庫下進行
    Shell:
> use admin;
  • 刪除所有數據庫中匹配用戶名的用戶(需要root權限)
> db.system.users.remove({user:"admin"});
  • 僅會刪除當前數據庫中指定用戶名的用戶(不需要root權限,有當前數據操作權限即可)
> db.dropUser("admin")

修改密碼

  • 需要在admin數據庫下進行
    Shell:
> use admin;
  • 進行密碼修改
> db.updateUser( "root",{pwd:"root123"})

用戶管理相關文檔地址:https://docs.mongodb.com/manual/reference/method/js-user-management/

發佈了52 篇原創文章 · 獲贊 16 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章