安裝(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
執(zhí)行yum install mongodb-org
默認(rèn)路徑
/var/lib/mongo #數(shù)據(jù)存儲位置
/var/log/mongodb #日志文件
/etc/mongod.conf #配置文件
默認(rèn)mongod.conf里
bindIp: 127.0.0.1只能本機(jī)訪問,如果希望其他設(shè)備也能訪問需要修改為其他ip。port: 27017也可以改成其他端口。端口設(shè)置小于1024時,需要root權(quán)限啟動(linux特性)。
啟動服務(wù)
systemctl start mongod #啟動服務(wù)
systemctl enable mongod #設(shè)定重啟后服務(wù)能自啟
相關(guān)的啟動日志/var/log/mongodb/mongod.log
配置
第一次連接
mongo --host 10.10.10.10 --port 27017
show dbs #查看當(dāng)前的database
admin 0.000GB #管理員數(shù)據(jù)庫
local 0.000GB
配置管理員用戶名和密碼
mongodb默認(rèn)沒有用戶名和密碼很危險,應(yīng)該盡快配置。
用戶分為2種:管理員,數(shù)據(jù)庫用戶
管理員只能在admin數(shù)據(jù)庫中設(shè)置。
use admin
switched to db admin
> db.createUser({user:"root",pwd:"root123",roles:["userAdminAnyDatabase"]})
Successfully added user: { "user" : "root", "roles" : [ "userAdminAnyDatabase" ] }
設(shè)置了一個用戶名為root,密碼為root123的管理員帳號。
> db.auth("root","root123")
1
使用root帳號進(jìn)行登錄,如果成功則返回1
> show collections
system.users
system.version
在admin數(shù)據(jù)庫里show collections(collections相當(dāng)于表)可以看到system.users這個是用來保存用戶權(quán)限的。
創(chuàng)建新數(shù)據(jù)庫和相應(yīng)的用戶
> use TestDB
switched to db TestDB
> db
TestDB
如果TestDB不存在則新創(chuàng)建此數(shù)據(jù)庫,如果存在則切換到此數(shù)據(jù)庫。db命令查看當(dāng)前所用的數(shù)據(jù)庫。
> show dbs
admin 0.000GB
local 0.000GB
show dbs發(fā)現(xiàn)新建的TestDB沒有顯示出來。要顯示的數(shù)據(jù)庫,至少需要有一行數(shù)據(jù)。
> db.name.insert({"name":"tester"})
WriteResult({ "nInserted" : 1 })
> show dbs
TestDB 0.000GB
admin 0.000GB
local 0.000GB
為數(shù)據(jù)庫TestDB添加用戶
> db.createUser({user:"testuser",pwd:"testpass",roles:["readWrite"]})
Successfully added user: { "user" : "testuser", "roles" : [ "readWrite" ] }
驗證登錄一下
> db.auth("testuser","testpass")
1
使安全配置生效
編輯/etc/mongod.conf文件
在#security:行下添加
security:
authorization: enabled
之后systemctl restart mongod #重啟服務(wù)
如果不是yum安裝,是下載tar包安裝的話,直接在運(yùn)行參數(shù)后面添加 --auth就可以了。
比如這樣
nohup mongod --dbpath /root/data --auth &
連接測試權(quán)限
mongo 10.10.10.10:27017/TestDB -u testuser -p testpass
MongoDB shell version v3.4.4
connecting to: mongodb://10.10.10.10:27017/TestDB
MongoDB server version: 3.4.4
> db
TestDB
圖形化管理robomongo
robomongo是個圖形化的mongodb的管理工具,支持:windows,MAC,Linux
https://robomongo.org/download
使用python的pymongo庫進(jìn)行連接
pip install pymongo安裝后(conda里也有此包)
在代碼中
from pymongo import MongoClient
client = MongoClient('10.10.10.10:27017')
db = client['TestDB'] #TestDB是數(shù)據(jù)庫名
db.authenticate('testuser', 'testpass') #用戶名和密碼
testCollection = db['testColl'] #testColl是要連接的collection名