官方手冊中啟動 MongoDB ?服務時沒有任何參數,一旦客戶端連接后可以對數據庫任意操作,而且可以遠程訪問數據庫,所以推薦開發階段可以不設置任何參數,但對于生產環境還 
   
    
    
      
        
      是要仔細考慮一下安全方面的因素,而提高 MongoDB ?數據庫安全有幾個方面:? 
    
      
      
        
       ?綁定IP內網地址訪問MongoDB服務? 
    
      
      
        
       ?設置監聽端口? 
    
      
      
        
       ?使用用戶名和口令登錄 
    
      
      
      
      
      
      
        
          綁定IP 內網地址訪問MongoDB服務
        
      
      
        
          
       MongoDB 可以限制只允許某一特定 IP 來訪問,只要在啟動時加一個參數 bind_ip 即可,如下:? 
     
        
        
          
       服務端限制只有192.168.1.103這個IP可以訪問MongoDB 服務? 
     
        
       
      
        [root@localhost bin]# ./mongod --bind_ip 192.168.1.103??
      
      
        
          ?
        
      
      
        
          設置監聽端口?
        
      
      
        
          
       官方默認的監聽端口是27017,為了安全起見,一般都會修改這個監聽端口,避免惡意的連 
     
        
        
          
       接嘗試,具體如下:? 
     
        
        
          
       將服務端監聽端口修改為28018? 
     
        
       
      
        [root@localhost bin]# ./mongod --bind_ip 192.168.1.103 --port 28018??
      
      
        ?
      
      
        
          使用用戶名和口令登錄?
        
      
      
        MongoDB默認的啟動是不驗證用戶名和密碼的,啟動MongoDB后,可以直接用MongoDB連接上來,對所有的庫具有root權限。所以啟動的時候指定參數,可以阻止客戶端的訪問和連接。
      
      
        
          
       先啟用系統的登錄驗證模塊, ?只需在啟動時指定 auth ?參數即可,如 
     
        
       
      
        [root@localhost bin]# ./mongod --auth??
      
      
        ?
      
      
        
          
            建立系統root帳號
          
        
        
          在admin庫中新添一個用戶root:??
        
        
          [root@localhost bin]# ./mongo?
        
        
          
            
        MongoDB shell version: 1.8.1? 
      
          
          
            
        connecting to: test? 
      
          
          
            
        > db.addUser("root","111")? 
      
          
          
            
        {? 
      
          
          
            
        ? ? ? ? "user" : "root",? 
      
          
          
            
        ? ? ? ? "readOnly" : false,? 
      
          
          
            
        ? ? ? ? "pwd" : "e54950178e2fa777b1d174e9b106b6ab"? 
      
          
          
            
        }? 
      
          
          
            
        > db.auth("root","111") ? 
      
          
         
       
      
        本地客戶端連接,指定用戶,結果如下:??
      
      
        ?[root@localhost bin]# ./mongo -u root -p?
      
      
        
          
       MongoDB shell version: 1.8.1? 
     
        
        
          
       Enter password: ? 
     
        
        
          
       connecting to: test? 
     
        
        
          
       > show collections;? 
     
        
        
          
       system.indexes? 
     
        
        
          
       system.users? 
     
        
        
        
        
          
            建立指定權限用戶?
          
        
        
          
            
        MongoDB 也支持為某個特定的數據庫來設置用戶,如我們為 test 庫設一個只讀的用戶user_reader:?? 
      
          
         
        
          
            
        [root@localhost bin]# ./mongo -u root -p? 
      
          
          
            
        MongoDB shell version: 1.8.1? 
      
          
          
            
        Enter password: ? 
      
          
          
            
        connecting to: test? 
      
          
          
            
        > show collections;? 
      
          
          
            
        system.indexes? 
      
          
          
            
        system.users? 
      
          
          
            
        > use test? 
      
          
          
            
        switched to db test? 
      
          
          
            
        > db.addUser("user_reader", "user_pwd", true)? 
      
          
          
            
        {? 
      
          
          
            
        ? ? ? ? "user" : "user_reader",? 
      
          
          
            
        ? ? ? ? "readOnly" : true,? 
      
          
          
            
        ? ? ? ? "pwd" : "0809760bb61ee027199e513c5ecdedc6"? 
      
          
         
        
          }??