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/
