1. 程式人生 > >mongodb安裝配置以及其他基礎操作

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

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(); //刪除數據庫


導出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庫下創建,創建完後可以執行備份恢復其他所有庫。


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


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