mongodb安裝配置以及其他基礎操作

最近公司有個項目要用mongodb,之前沒搞過,今天臨時磨刀上陣,花了半天時間研究,中間有遇到幾個坑寫出來分享給大家。


tar -zxf mongodb-linux-x86_64-v3.6.3.tgz

cp -pr mongodb-linux-x86_64-v3.6.3 /usr/local/mongodb

mkdir -p /data/mongodb/logs

touch /data/mongodb/logs/mongodb.log


vi /data/mongodb/bin/mongodb.conf

dbpath=/data/mongodb/data

logpath=/data/mongodb/logs/mongodb.log

port=27017

fork=true

auth=true

logappend=true

nojournal=true

nohttpinterface=true


/usr/local/mongodb/bin/mongod --bind_ip 172.31.31.63 -f /usr/local/mongodb/conf/mongodb.conf

echo "export PATH=/usr/local/mongodb/bin:$PATH" >> /etc/profile

source /etc/profile


連接到mongodb:

mongo 172.31.31.63:27017


show dbs         //查看數據庫

use admin        //切換到admin庫,若admin庫不存在則會創建admin

show users        //查看用戶

db.createUser({user:"admin",pwd:"123456",roles:["root"]});    //創建超級管理員用戶

db.createUser({user:"USRADM",pwd:"123456",roles:[ "userAdminAnyDatabase"]});  //創建用戶管理員賬戶

db.changeUserPassword('admin','147258');//修改密碼

db.dropUser('admin')    //刪除用戶

db.auth("admin","147258");    //admin登錄認證

db.auth("USRADM","123456");     //USRADM登錄認證


#############################################################################################

內建角色

1、數據庫用戶角色

read:允許用戶讀取指定數據庫

readWrite:允許用戶讀寫指定數據庫


2、數據庫管理員角色

dbAdmin:允許用戶進行索引創建、刪除,查看統計或訪問system.profile,但沒有角色和用戶管理的權限

userAdmin:提供了在當前數據庫中創建和修改角色和用戶的能力

dbOwner: 提供對數據庫執行任何管理操作的能力。這個角色組合了readWrite、dbAdmin和userAdmin角色授予的特權


3、集羣管理角色

clusterAdmin : 提供最強大的集羣管理訪問。組合clusterManager、clusterMonitor和hostManager角色的能力。還提供了dropDatabase操作

clusterManager : 在集羣上提供管理和監視操作。可以訪問配置和本地數據庫,這些數據庫分別用於分片和複製

clusterMonitor : 提供對監控工具的只讀訪問,例如MongoDB雲管理器和Ops管理器監控代理

hostManager : 提供監視和管理服務器的能力。


4、備份恢復角色

backup : 提供備份數據所需的能力,使用MongoDB雲管理器備份代理、Ops管理器備份代理或使用mongodump

restore : 提供使用mongorestore恢復數據所需的能力


5、所有數據庫角色

readAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀權限 

readWriteAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀寫權限 

userAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的userAdmin權限 

dbAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的dbAdmin權限


6、超級用戶角色

root:提供對readWriteAnyDatabase、dbAdminAnyDatabase、userAdminAnyDatabase、clusterAdmin、restore和backup的所有資源的訪問


7、內部角色

__system : 提供對數據庫中任何對象的任何操作的特權

#############################################################################################


//創建用戶BackupUser,並賦予備份恢復角色

db.createUser({user: "BackupUser",pwd: "123456",roles: [ 

{ role: 'backup', db: 'admin' },

{ role: 'restore', db: 'admin' }

]}); 


use students    //創建數據庫

db.createUser({user: "user1",pwd: "user123456",roles: [ { role: "readWrite", db: "students" } ]});  //創建students庫讀寫權限用戶


db.auth("user1","user123456");    

db.clas.insert({"name":"wang"});    //向clas集合(表)插入3條數據

db.clas.insert({"name":"zhang"});

db.clas.insert({"name":"li"});

db.clas.remove({});    //刪除clas集合裏面所有數據記錄

db.clas.find();            //查詢clas集合裏面所有數據記錄

db.clas.drop();           //刪除clas集合(表)

show collections;      //查看集合(表)

db.dropDatabase();  //刪除數據庫

db.currentOp();                 //獲得當前所有in progressing的操作進程

db.killOp(1616361578);    //殺掉正在執行進程,1616361578爲opid

db.test.findOne() ;            //查詢集合test中的一條記錄

db.test.find({"optime" : {$lte:new Date(2017,11,1)}})     //按日期查詢,格式一

db.test.find({"optime":{$gte:ISODate("2017-01-01T00:00:00Z")}, "time":{$lte:ISODate("2017-01-02T00:00:00Z")}})  //按日期查詢,格式二

show roles;               //查看當前庫下的角色權限

db.getRole("readWrite",{showPrivileges: true});   //查看指定角色readWrite下的詳細權限

                                //創建角色testRole並賦予remove權限同時並繼承read角色

db.createRole({role:"testRole",privileges:[

{resource:{db:"test",collection:""},actions:["remove"]}

],

roles:[

{ role: "read", db: "test"}

]

})




導出students庫的數據:

mongodump -h 172.31.31.63:27017 --authenticationDatabase admin -d students -u BackupUser -p -o /root/test/

-h 主機IP:端口

-d  要備份的庫

-u  具有backup角色的用戶

-p  備份用戶的密碼

-o  備份目錄路徑

--authenticationDatabase 備份用戶BackupUser所屬的數據庫



導入students庫的數據:

mongorestore -h 172.31.31.63:27017 --authenticationDatabase admin -d students -u BackupUser -p --directoryperdb /root/test/students

-h  主機IP:端口

-d  恢復的目標庫

-u  具有restore角色的用戶

-p  恢復用戶的密碼

--directoryperdb  恢復目錄路徑

--authenticationDatabase 恢復用戶BackupUser所屬的數據庫


需要注意的坑:

1.認證問題,比如上面我有一個admin用戶,只有use admin切換到admin庫下面才能認證成功。

2.比如我上面已經創建了一個USRADM用戶並賦予了相應的角色,當前這個角色它具有賦予用戶所有數據庫的userAdmin權限。現在我想爲students庫創建一個用戶且分配置userAdmin角色。此時若我在admin庫下面執行則會失敗,必須切換到students庫下面操作才能成功。

3.備份恢復角色的用戶只能在admin庫下創建,創建完後可以執行備份恢復其他所有庫。


!!!切記執行任何庫的操作時都必須先切換到對應的庫下面


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章