Centos7安裝MongoDB 3.2.20

Centos7安裝MongoDB 3.2.20

Ubuntu安裝MongoDB 3.2.20&常用命令:https://blog.csdn.net/sunny05296/article/details/73131274
Centos7安裝MongoDB 4.0.10: https://blog.csdn.net/sunny05296/article/details/100546996
Centos7安裝MongoDB 3.2.20: https://blog.csdn.net/sunny05296/article/details/85298086

本文介紹Cents7以tgz解壓方式安裝mongodb。

官網下載對應的安裝包(以mongodb-linux-x86_64-3.2.20.tgz爲例)
https://www.mongodb.org/dl/linux/

創建目錄並解壓到指定目錄
mkdir /opt/mongodb
tar -zxvf mongodb-linux-x86_64-3.2.20.tgz  -C /opt/mongodb
解壓以後會生成mongodb-linux-x86_64-3.2.20目錄,如果需要可以重命名

創建數據庫存放路徑和日誌存放路徑
cd /opt/mongodb/mongodb-linux-x86_64-3.2.20
mkdir data logs

創建mongodb.conf配置文件
vi /opt/mongodb/mongodb-linux-x86_64-3.2.20/mongodb.conf

port=27017  #端口號
dbpath=/opt/mongodb/mongodb-linux-x86_64-3.2.20/data/  #數據庫路徑
logpath=/opt/mongodb/mongodb-linux-x86_64-3.2.20/logs/mongodb.log  #日誌輸出文件路徑
pidfilepath=/opt/mongodb/mongodb-linux-x86_64-3.2.20/mongo.pid
fork=true  #設置後臺運行
logappend=true  #日誌輸出方式
#shardsvr=true
#directoryperdb=true
#auth=true #是否開啓認證,默認無認證

然後保存退出

添加環境變量:
vi /etc/profile 增加
export PATH=$PATH:/opt/mongodb/mongodb-linux-x86_64-3.2.20/bin
保存退出,執行 source /etc/profile #使配置立即生效

啓動&停止mongodb

指定配置文件啓動mongodb
mongod --config /opt/mongodb/mongodb-linux-x86_64-3.2.20/mongodb.conf

停止mongodb
mongo 127.0.0.1:27017/admin --eval "db.shutdownServer()" 

查看mongdb是否啓動
netstat -al | grep "27017"

mongo  #進入MongoDB數據庫控制檯
version() #查看版本
show dbs  #查看默認數據庫, admin和local爲系統默認內置數據庫,如果默認沒有admin數據庫,說明admin用戶也沒有,需要先創建
use admin  #切換到admin數據庫
db.shutdownServer()  #關閉MongoDB數據庫
exit  #退出控制檯

創建數據庫
admin和local爲系統默認內置數據庫,如果想要創建數據庫(創建mydb爲例),可以直接執行下面命令:
> use mydb
查看數據庫
> show dbs
命令檢查當前數據庫狀態
> db.stats()

如果沒有默認的admin庫則創建admin庫和管理員admin
> show dbs
local  0.000GB

> use admin
> db.createUser(
  {
    user: "admin",
    pwd: "1q2w3e",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

創建成功以後,可以查看顯示用戶
> show users
{
        "_id" : "admin.admin",
        "user" : "admin",
        "db" : "admin",
        "roles" : [
                {
                        "role" : "userAdminAnyDatabase",
                        "db" : "admin"
                }
        ]
}

roles可以設置管理多庫,參考:
db.createUser(
  {
    user: "admin",
    pwd: "1q2w3e",
    roles: [
       { role: "dbOwner", db: "testdb1" },
       { role: "userAdminAnyDatabase", db: "admin" }
    ]
  }
)

成功創建,再查詢admin中的集合(表),有數據了:
> show collections;
system.users
system.version

> show users
{
        "_id" : "admin.admin",
        "user" : "admin",
        "db" : "admin",
        "roles" : [
                {
                        "role" : "userAdminAnyDatabase",
                        "db" : "admin"
                }
        ]
}

> db.system.users.find();
{ "_id" : "admin.admin", "user" : "admin", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "ZwSoqvD48zwB5paHmo3NRw==", "storedKey" : "mawy8xjVKn9sU9KA6zbKFRaGRtQ=", "serverKey" : "w8cTPs/M6tGg9sJ2mUNf6vJXM04=" } }, "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] }
> db.system.version.find();
{ "_id" : "authSchema", "currentVersion" : 5 }

修改用戶
> db.updateUser("admin",
  { user: "admin",  
    pwd: "1q2w3e",  
    roles: [ { role: "userAdminAnyDatabase", db: "admin" },
             { role: "dbOwner", db: "testdb" }
    ]
  }
)

mongodb內置的role用戶角色:
1. 數據庫用戶角色:read、readWrite;
2. 數據庫管理角色:dbAdmin、dbOwner、userAdmin;
3. 集羣管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 備份恢復角色:backup、restore;
5. 所有數據庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase;
6. 超級用戶角色:root;
7. 內部角色:__system;
注意:這裏還有幾個角色間接或直接提供了系統超級用戶的訪問(dbOwner 、userAdmin、userAdminAnyDatabase)。

role用戶角色說明:
read:允許用戶讀取指定數據庫
readWrite:允許用戶讀寫指定數據庫
dbAdmin:允許用戶在指定數據庫中執行管理函數,如索引創建、刪除,查看統計或訪問system.profile
userAdmin:允許用戶向system.users集合寫入,可以找指定數據庫裏創建、刪除和管理用戶
clusterAdmin:只在admin數據庫中可用,賦予用戶所有分片和複製集相關函數的管理權限
readAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀權限
readWriteAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀寫權限
userAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的userAdmin權限
dbAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的dbAdmin權限
root:只在admin數據庫中可用。超級賬號,超級權限

創建用戶
注意:db.addUser("test","1q2w3e") 方法在高版本的mongodb中已廢除,改爲使用db.createUser
> use testdb --切換到testdb庫
> db.createUser({user: "test",pwd: "1q2w3e",roles: [ "readWrite", "dbAdmin" ]});
> db.createUser({user: "test",pwd: "1q2w3e",roles: [ "read", "dbAdmin" ]});
> db.createUser({user: "test",pwd: "1q2w3e",roles: [{ role: "readWrite", db: "test" }]}); --指定db讀寫
> db.createUser({user: "test",pwd: "1q2w3e",roles: [{ role: "read", db: "test" }]}); --指定db只讀

修改密碼
db.changeUserPassword("test","newpassword");
db.updateUser("test",{pwd:"newpassword"});

修改用戶權限
db.grantRolesToUser("test", [{role:"readWrite", db:"testdb"},{role:"read", db:"testdb2"}])   # 修改權限
db.revokeRolesFromUser("test",[{role:"read", db:"testdb2"}])   # 刪除權限

刪除用戶
db.dropUser('usertest')
show users

刪除數據庫
use testdb
db.dropDatabase()

查看全局所有賬戶
use admin
db.auth('admin','1q2w3e') --開啓auth認證以後,必須認證之後才能查詢,否則查詢失敗。如果未開啓則可忽略
db.system.users.find().pretty()

查看當前庫admin下的賬戶
use admin
show users

查看當前庫testdb下的賬戶
use testdb
show users

創建表
> db.createCollection("test01")
> db.createCollection("test02",{capped:true, size:10000}) { "ok" : 1 }
插入數據
> db.test01.insert({ID:1,UserName:"Frank",info:"China",Age:15,Email:"[email protected]",CreateDate:"2017-06-05 14:36:95"})

更多mongodb的常用命令,請參考:https://blog.csdn.net/sunny05296/article/details/73131274


開啓認證
mongodb默認是不認證的,默認沒有賬號,只要能連接上服務就可以對數據庫進行各種操作。
mongodb認爲安全最好的方法就是在一個可信的環境中運行它,保證之後可信的機器才能訪問它,可能這些對一些要求高的環境,安全還不夠。
mongodb也提供用戶認證,需要在啓動時加上--auth開啓認證。但開啓認證前,需要先添加賬號。

注意:
啓用認證後,請確保在admin數據庫中擁有userAdmin或userAdminAnyDatabase角色的用戶。
該用戶可以管理用戶和角色,例如:創建用戶,授予或撤銷用戶角色,以及創建或修改定義角色。可以在啓用訪問控制之前或之後創建用戶。
如果在創建任何用戶之前啓用訪問控制,MongoDB將提供本地主機異常,允許在管理數據庫中創建用戶管理員。
創建後,必須作爲用戶管理員進行身份驗證,以根據需要創建其他用戶。

提前創建好用戶和庫,開啓認證以後需要認證通過後才能執行查詢
> use admin
> db.auth("admin","1q2w3e") --需要認證纔能有權限
> show dbs

> use testdb
> db.auth('test','1q2w3e');
> show dbs
 

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