Mongodb介紹與安裝部署, 簡單使用, 用戶管理+驗(yàn)證庫

1. 邏輯結(jié)構(gòu)

Mongodb 邏輯結(jié)構(gòu) MySQL邏輯結(jié)構(gòu)
庫database 庫
集合(collection) 表
文檔(document) 數(shù)據(jù)行

2. 安裝部署

1、系統(tǒng)準(zhǔn)備

(1)redhat或cnetos6.2以上系統(tǒng)
(2)系統(tǒng)開發(fā)包完整
(3)ip地址和hosts文件解析正常
(4)iptables防火墻&SElinux關(guān)閉
(5)關(guān)閉大頁內(nèi)存機(jī)制

root用戶下

cat >>/etc/rc.local <<EOF
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
  echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
   echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
EOF 

[root@standby opt]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
[root@standby opt]# echo never > /sys/kernel/mm/transparent_hugepage/defrag

其他系統(tǒng)關(guān)閉參照官方文檔:

https://docs.mongodb.com/manual/tutorial/transparent-huge-pages/

3. mongodb安裝配置

1\. 創(chuàng)建所需用戶和組
groupadd -g 800 mongod
useradd -u 801 -g mongod mongod
passwd mongod

2\. 創(chuàng)建mongodb所需目錄結(jié)構(gòu)
mkdir -p /mongodb/bin
mkdir -p /mongodb/conf
mkdir -p /mongodb/log
mkdir -p /mongodb/data

3\. 上傳并解壓軟件到指定位置
上傳到:
cd   /opt/
解壓:
tar xf mongodb-linux-x86_64-rhel70-3.4.16.tgz

4\. 設(shè)置目錄結(jié)構(gòu)權(quán)限
chown -R mongod:mongod /mongodb

5\. 設(shè)置用戶環(huán)境變量
su - mongod

cat >> .bash_profile << EOF
export PATH=/mongodb/bin:$PATH
EOF

source .bash_profile

6\. 啟動(dòng)mongodb
mongod --dbpath=/mongodb/data --logpath=/mongodb/log/mongodb.log --port=27017 --logappend --fork

7\. 登錄mongodb
[mongod@server2 ~]$ mongo
注:連接之后會(huì)有warning,需要修改(使用root用戶)
vim /etc/security/limits.conf 
#*       -       nofile       65535 

reboot重啟生效

8\. 使用配置文件
vim /mongodb/conf/mongodb.conf

logpath=/mongodb/log/mongodb.log
dbpath=/mongodb/data 
port=27017
logappend=true
fork=true

9\. 關(guān)閉mongodb
mongod -f /mongodb/conf/mongodb.conf --shutdown

10\. 使用配置文件啟動(dòng)mongodb
mongod -f /mongodb/conf/mongodb.conf

YAML模式的配置文件
--
NOTE:
YAML does not support tab characters for indentation: use spaces instead.

--系統(tǒng)日志有關(guān)  
systemLog:
   destination: file        
   path: "/mongodb/log/mongodb.log"    --日志位置
   logAppend: true                     --日志以追加模式記錄

--數(shù)據(jù)存儲(chǔ)有關(guān)   
storage:
   journal:
      enabled: true
   dbPath: "/mongodb/data"            --數(shù)據(jù)路徑的位置

 -- 進(jìn)程控制  
processManagement:
   fork: true                         --后臺(tái)守護(hù)進(jìn)程
   pidFilePath: <string>              --pid文件的位置,一般不用配置,可以去掉這行,自動(dòng)生成到data中

--網(wǎng)絡(luò)配置有關(guān)   
net:            
   bindIp: <ip>                       -- 監(jiān)聽地址,如果不配置這行是監(jiān)聽在0.0.0.0
   port: <port>                       -- 端口號(hào),默認(rèn)不配置端口號(hào),是27017

-- 安全驗(yàn)證有關(guān)配置      
security:
  authorization: enabled              --是否打開用戶名密碼驗(yàn)證

YAML例子 
cat >> /mongodb/conf/mongo.conf << EOF
systemLog:
   destination: file
   path: "/mongodb/log/mongodb.log"
   logAppend: true
storage:
   journal:
      enabled: true
   dbPath: "/mongodb/data/"
processManagement:
   fork: true
net:
   port: 27017
EOF  

4. mongodb常用基本操作

  1. 啟動(dòng), 關(guān)閉, 配置文件啟動(dòng)

    啟動(dòng): mongod --dbpath=/mongodb/data --logpath=/mongodb/log/mongodb.log --port=27017 --logappend --for
    關(guān)閉: mongod -f mongodb.conf  --shutdown
    配置文件啟動(dòng): mongod -f /mongodb/conf/mongo.conf 
    
    
  2. mongodb 默認(rèn)存在的庫

    test:
    登錄時(shí)默認(rèn)存在的庫
    
    管理mongodb有關(guān)的系統(tǒng)庫
    admin庫:
     系統(tǒng)預(yù)留庫,mongodb系統(tǒng)管理庫
    local庫:
     本地預(yù)留庫,存儲(chǔ)關(guān)鍵日志
    
    
  3. 命令分類

    庫(database)
    show databases 
    show dbs
    use oldguo
    db
    
    表(collection集合)
    show tables
    show collections
    
    數(shù)據(jù)行(document)
    db.表名.insert()
    
    復(fù)制集有關(guān)(replication set):
    rs.
    
    分片集群(sharding cluster)
    sh.
    
    幫助 .help()
    db.help()
    db.a.help()
    rs.help()
    sh.help()
    
    
  4. 常用操作

    查看當(dāng)前db版本     db.version()
    顯示當(dāng)前數(shù)據(jù)庫     db
    查詢所有數(shù)據(jù)庫     show dbs
    切換數(shù)據(jù)庫        use local
    查看所有的collection   show  tables;
    顯示當(dāng)前數(shù)據(jù)庫狀態(tài)     
     use local  
     db.stats()
    
    查看當(dāng)前數(shù)據(jù)庫的連接機(jī)器地址  db.getMongo()
    
    
  5. mongo與mysql對(duì)應(yīng)關(guān)系

    mongo mysql
    庫 -----> 庫
    集合 -----> 表
    文檔 -----> 數(shù)據(jù)行

  6. 庫的操作:

    創(chuàng)建數(shù)據(jù)庫:
     當(dāng)use的時(shí)候,系統(tǒng)就會(huì)自動(dòng)創(chuàng)建一個(gè)數(shù)據(jù)庫。
     如果use之后沒有創(chuàng)建任何集合。
     系統(tǒng)就會(huì)刪除這個(gè)數(shù)據(jù)庫。
    刪除數(shù)據(jù)庫
     如果沒有選擇任何數(shù)據(jù)庫,會(huì)刪除默認(rèn)的test數(shù)據(jù)庫
     db.dropDatabase()
    
    
  7. 集合的操作:

    方法1: db.createCollection('a')
    方法2:當(dāng)插入一個(gè)文檔的時(shí)候,一個(gè)集合就會(huì)自動(dòng)創(chuàng)建。
    db.stu.insert({id:101,name:"zhangsan",age:20,gender:"m"})
    
    
  8. 查詢數(shù)據(jù):

    db.stu.find({}).pretty()
    db.stu.find({id:101}).pretty();
    
    
  9. 刪除集合

    db.stu.drop()
    
    
  10. 重命名集合 , 把log改名為log1

```
db.log.renameCollection("log1")

```
  1. 批量插入數(shù)據(jù)
```
for(i=0;i<10000;i++){db.log.insert({"uid":i,
"name":"mongodb","age":6,"date":new Date()})}

```

5. 用戶管理

注意:
驗(yàn)證庫,建立用戶時(shí)use到的庫,在使用用戶時(shí),要加上驗(yàn)證庫才能登陸。
對(duì)于管理員用戶,必須在admin下創(chuàng)建.

use admin 
mongo 10.0.0.200/admin

db.createUser

{
    user: "<name>",
    pwd: "<cleartext password>",
    roles: [
       { role: "<role>",
     db: "<database>" } | "<role>",
    ...
    ]
}

基本語法說明:

user:用戶名
pwd:密碼
roles:
    role:角色名
    db:作用對(duì)象

role:root, readWrite,read   

驗(yàn)證數(shù)據(jù)庫:

mongo -u oldguo -p 123 10.0.0.200/oldguo
總結(jié):
1、在創(chuàng)建普通用戶時(shí),一般事先use 到想要設(shè)置權(quán)限的庫下;或者所有普通用戶使用同一個(gè)驗(yàn)證庫,比如test
2、root角色的創(chuàng)建,要在admin下進(jìn)行創(chuàng)建
3、創(chuàng)建用戶時(shí)你use到的庫,在將來登錄時(shí)候,使用以下方式登錄,否則是登錄不了的

  1. 創(chuàng)建超級(jí)管理員:管理所有數(shù)據(jù)庫(必須use admin再去創(chuàng)建)

    $ mongo
    
    use admin
    
    db.createUser(
    {
        user: "root",
        pwd: "root123",
        roles: [ { role: "root", db: "admin" } ]
    }
    )
    
    驗(yàn)證用戶
    db.auth('root','root123')
    
    配置文件中,加入以下配置
    security:
      authorization: enabled
    
    重啟mongodb
    mongod -f /mongodb/conf/mongo.conf --shutdown 
    mongod -f /mongodb/conf/mongo.conf
    
    登錄驗(yàn)證
    mongo -uroot -proot123  admin
    mongo -uroot -proot123  10.0.0.200/admin
    
    查看用戶:
    use admin
    db.system.users.find().pretty()
    
    
  2. 創(chuàng)建庫管理用戶

    mongo -uroot -proot123  admin
    
    use app
    
    db.createUser(
    {
    user: "admin",
    pwd: "admin",
    roles: [ { role: "dbAdmin", db: "app" } ]
    }
    )
    
    db.auth('admin','admin')
    
    登錄測(cè)試
    mongo -uadmin -padmin 10.0.0.200/app
    
    
  3. 創(chuàng)建對(duì)app數(shù)據(jù)庫,讀、寫權(quán)限的用戶app01:

    (1)超級(jí)管理員用戶登陸
    mongo -uroot -proot123 admin
    
    (2)選擇一個(gè)驗(yàn)證庫
    
    use app
    
    (3)創(chuàng)建用戶
    db.createUser(
     {
         user: "app01",
         pwd: "app01",
         roles: [ { role: "readWrite" , db: "app" } ]
     }
    )
    
    mongo  -uapp01 -papp01 app
    
    
  4. 創(chuàng)建app數(shù)據(jù)庫讀寫權(quán)限的用戶并對(duì)test數(shù)據(jù)庫具有讀權(quán)限:

    mongo -uroot -proot123 10.0.0.200/admin
    use app
    db.createUser(
    {
    user: "app03",
    pwd: "app03",
    roles: [ { role: "readWrite", db: "app" },
    { role: "read", db: "test" }
    ]
    }
    )
    
    
  5. 查詢mongodb中的用戶信息

    mongo -uroot -proot123 10.0.0.200/admin
    db.system.users.find().pretty()
    
    
  6. 刪除用戶(root身份登錄,use到驗(yàn)證庫)

    刪除用戶
    mongo -uroot -proot123 10.0.0.200/admin
    use app
    db.dropUser("app01")
    
    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容