mongodb3.6安裝與基本配置


1.使用yum安裝MongoDB

修改主機名

hostname mongo01

vi /etc/sysconfig/network

 

NETWORKING=yes
HOSTNAME=mongo01

 

 

[root@mongo01 ~]# cat /etc/yum.repos.d/mongodb.repo

 

[mongodb-org-3.6]

name=MongoDB Repository

baseurl=https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/3.6/x86_64/

gpgcheck=1

enabled=1

gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc

EOF

 

2.安裝

[root@mongo01 ~]#yum -y install mongodb-org*

 

3.創建數據目錄

一般分配到獨立的大分區

mkdir -p /data/mongodb/data /data/mongodb/logs

 

chown mongod:mongod /data/mongodb/data /data/mongodb/logs -R #默認是使用mongod執行的,所以需要修改一下目錄權限

 

4.修改配置文件

默認位置:/etc/mongod.conf

# mongod.conf

# for documentation of all options, see:

# http://docs.mongodb.org/manual/reference/configuration-options/

# where to write logging data.

systemLog:

destination: file

logAppend: true #日志輸出模式,當重啟后才會觸發,默認為false

path: /data/mongodb/logs/mongod.log #修改到我們專門創建的目錄

# Where and how to store data.

storage:

dbPath: /data/mongodb/data #修改到我們專門創建的目錄

directoryperdb = true # 每個db會創建一個單獨的目錄

journal:

enabled: true  #redo log開啟

# engine:

# mmapv1:

# wiredTiger:

# how the process runs

processManagement:

fork: true # fork and run in background   守護進程方式啟動mongo

pidFilePath: /data/mongodb/logs/mongod.pid # location of pidfile

timeZoneInfo: /usr/share/zoneinfo

# network interfaces

net:

port: 27017

#bindIp: 127.0.0.1 # Listen to local interface only, comment to listen on all interfaces.

bindIp: 0.0.0.0 # Listen to local interface only, comment to listen on all interfaces. #修改監聽所有的端口

#security:

# authorization: enabled #這里是開啟驗證功能,暫時先關閉,等創建完root用戶再開起來進行驗證

#operationProfiling:

#replication:

#sharding:

## Enterprise-Only Options

#auditLog:

#snmp:

 

其他常規參數

maxConns= 5000 //最大連接數
slowms=1000 //慢日志記錄開啟,單位是秒

 集群配置
 shardsvr=true//是否開啟分片集群
 chunkSize=64//單chunk大小,單位MB,默認64,推薦64
 oplogSize=10240//oplog大小 單位是MB 建議調大
 replSet: rs0//副本集名稱

 

5.連接MongoDB數據庫

直接使用mongo命令進行連接,默認端口是27017

 

創建一個超級用戶

超級用戶的role有兩種,userAdmin或者userAdminAnyDatabase(比前一種多加了對所有數據庫的訪問)。

db是指定數據庫的名字,admin是管理數據庫。

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

6.創建驗證用戶

>use test
>db.createUser(
  {
    user:"oneUser",
    pwd:"oneUser123",
    roles:[
      {role:"read",db:"admin"}, #該用戶可以讀取admin庫數據
      {role:"readWrite",db:"test"} #該用戶可以讀寫test庫數據
    ]
  }
)

7.修改配置文件

security:

authorization: enabled

添加上驗證,重啟mongd服務

非安全模式啟動數據庫

>mongod  --dbpath /data/mongodb/data   &(后台執行)

安全模式下啟動數據庫

>mongod --auth --dbpath /data/mongodb/data

 

8.登錄驗證

mongo -u root -p rootpassword --authenticationDatabase admin

如果是庫用戶,必須要庫下面才能驗證

>mongo
>use test
>db.auth("oneUser","oneUser123");

遠程登錄
基本語法:
mongodb://用戶名:密碼@IP或hostname/【指定庫名】
> mongodb://admin:123456@localhost/test


9.查看當前用戶的權限
use mydb
db.runCommand( { usersInfo:"userName", showPrivileges:true }


 查看用戶信息

db.runCommand({usersInfo:"userName"})

修改密碼
use admin
db.changeUserPassword("username", "xxx")

修改密碼和用戶信息
db.runCommand(
  {
    updateUser:"username",
    pwd:"xxx",
    customData:{title:"xxx"}
  }
)

注:

1. 和用戶管理相關的操作基本都要在admin數據庫下運行,要先use admin;

2. 如果在某個單一的數據庫下,那只能對當前數據庫的權限進行操作;

3. db.addUser是老版本的操作,現在版本也還能繼續使用,創建出來的user是帶有root role的超級管理員。

 

以下是roles中的權限說明:

read 指定數據庫的只讀權限,擁有以下權限:

aggregate,checkShardingIndex,cloneCollectionAsCapped,collStats

count,dataSize,dbHash,dbStats,distinct,filemd5

geoNear,geoSearch,geoWalk,group

mapReduce (inline output only.),text (beta feature.)

readWrite 擁有指定數據庫的讀寫權限,除了具有read權限,還擁有以下權限:

cloneCollection (as the target database.),convertToCapped

create (and to create collections implicitly.)

drop(),dropIndexes,emptycapped,ensureIndex()

findAndModify,mapReduce (output to a collection.)

renameCollection (within the same database.)

read和readWrite主要就是對庫中表的操作權限

dbAdmin 指定數據庫的管理權限

clean,collMod,collStats,compact,convertToCapped

create,db.createCollection(),dbStats,drop(),dropIndexes,ensureIndex()

indexStats,profile,reIndex,renameCollection (within a single database.),validate

userAdmin 指定數據庫的用戶管理權限

clusterAdmin 集群管理權限(副本集、分片、主從等相關管理)

addShard,closeAllDatabases,connPoolStats,connPoolSync,_cpuProfilerStart

_cpuProfilerStop,cursorInfo,diagLogging,dropDatabase

enableSharding,flushRouterConfig,fsync,db.fsyncUnlock()

getCmdLineOpts,getLog,getParameter,getShardMap,getShardVersion

hostInfo,db.currentOp(),db.killOp(),listDatabases,listShards

logRotate,moveChunk,movePrimary,netstat,removeShard,unsetSharding

repairDatabase,replSetFreeze,replSetGetStatus,replSetInitiate

replSetMaintenance,replSetReconfig,replSetStepDown,replSetSyncFrom

resync,serverStatus,setParameter,setShardVersion,shardCollection

shardingState,shutdown,splitChunk,splitVector,split,top,touch

readAnyDatabase 任何數據庫的只讀權限(和read相似)

readWriteAnyDatabase 任何數據庫的讀寫權限(和readWrite相似)

userAdminAnyDatabase 任何數據庫用戶的管理權限(和userAdmin相似)

dbAdminAnyDatabase 任何數據庫的管理權限(dbAdmin相似)

詳細的可以參看官方文檔:http://docs.mongodb.org/manual/reference/method/db.addUser/

 
        

三、mongo 客戶端工具有: http://docs.mongodb.org/ecosystem/tools/administration-interfaces/





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM