1. 程式人生 > >MongoDB 設定使用者名稱密碼登入

MongoDB 設定使用者名稱密碼登入

原文轉載地址:https://blog.csdn.net/singgel/article/details/79407774

Mongodb enable authentication

MongoDB 預設直接連線,無須身份驗證,如果當前機器可以公網訪問,且不注意Mongodb 埠(預設 27017)的開放狀態,那麼Mongodb就會產生安全風險,被利用此配置漏洞,入侵資料庫。

容易遭受入侵的環境

  • 使用預設 mongod 命令啟動 Mongodb
  • 機器可以被公網訪問
  • 在公網上開放了 Mongodb 埠

安全風險

  • 資料庫隱私洩露
  • 資料庫被清空
  • 資料庫執行緩慢

解決方案

1. 禁止公網訪問 Mongodb 埠

1.1 網路配置

由於網路配置因人而異,需要根據自己實際環境進行配置,不作冗述。大致可以從以下方面禁止。

  • 在路由器中關閉埠轉發
  • 防火牆 iptables 禁止訪問

1.2 驗證埠能否訪問方式

在外網機器命令列中執行

telnet your.machine.open.ip 27017

2. 啟用驗證

2.1 建立使用者管理員賬戶

當前資料庫版本:Mongodb 3.4

使用 mongod 啟動資料庫
新建終端

mongod --port 27017 --dbpath /data/db1

引數預設可以不加,若有自定義引數,才要加上,下同。

另起一個終端,執行下列命令

mongo --port 27017

use admin

db.createUser(
  {
    user: "adminUser",
    pwd: "adminPass"
, roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )

管理員建立成功,現在擁有了使用者管理員
使用者名稱:lyl
密碼:123456
然後,斷開 mongodb 連線, 關閉資料庫
兩個終端下 <C - c>

2.2 Mongodb 使用者驗證登陸

啟動帶訪問控制的 Mongodb
新建終端

mongod --auth --port 27017 --dbpath /data/db1

現在有兩種方式進行使用者身份的驗證
第一種 (類似 MySql)
客戶端連線時,指定使用者名稱,密碼,db名稱

mongo --port 27017 -u "lyl"
-p "123456" --authenticationDatabase "admin"

第二種
客戶端連線後,再進行驗證

mongo --port 27017

use admin
db.auth("adminUser", "adminPass")

// 輸出 1 表示驗證成功

2.3 建立普通使用者

過程類似建立管理員賬戶,只是 role 有所不同

use foo

db.createUser(
  {
    user: "simpleUser",
    pwd: "simplePass",
    roles: [ { role: "readWrite", db: "foo" },
             { role: "read", db: "bar" } ]
  }
)

現在我們有了一個普通使用者
使用者名稱:simpleUser
密碼:simplePass
許可權:讀寫資料庫 foo, 只讀資料庫 bar。

注意
NOTE
WARN

use foo表示使用者在 foo 庫中建立,就一定要 foo 庫驗證身份,即使用者的資訊跟隨隨資料庫。比如上述 simpleUser 雖然有 bar 庫的讀取許可權,但是一定要先在 foo 庫進行身份驗證,直接訪問會提示驗證失敗。

use foo
db.auth("simpleUser", "simplePass")

use bar
show collections

還有一點需要注意,如果 admin 庫沒有任何使用者的話,即使在其他資料庫中建立了使用者,啟用身份驗證,預設的連線方式依然會有超級許可權

2.4 內建角色

  • Read:允許使用者讀取指定資料庫
  • readWrite:允許使用者讀寫指定資料庫
  • dbAdmin:允許使用者在指定資料庫中執行管理函式,如索引建立、刪除,檢視統計或訪問system.profile
  • userAdmin:允許使用者向system.users集合寫入,可以找指定資料庫裡建立、刪除和管理使用者
  • clusterAdmin:只在admin資料庫中可用,賦予使用者所有分片和複製集相關函式的管理許可權。
  • readAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的讀許可權
  • readWriteAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的讀寫許可權
  • userAdminAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的userAdmin許可權
  • dbAdminAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的dbAdmin許可權。
  • root:只在admin資料庫中可用。超級賬號,超級許可權

2.5 URI 形式的訪問

生產中常用 URI 形式對資料庫進行連線

mongodb://your.db.ip.address:27017/foo

新增使用者名稱密碼驗證

mongodb://simpleUser:[email protected]:27017/foo

相關推薦

centos 寶塔面板 mongodb 設定使用者賬號密碼登入

掛在網上的mongodb測試資料庫,預設的無密碼,埠直接登入,本來想著不會有人盯上吧,結果,一個月後,被黑客刪庫了,所以不管是介面,還是資料庫的安全性一定要保證!!! 下面針對我的寶塔面板環境,記錄給mongodb設定賬號密碼的過程。 1、進入mongodb安裝目錄,下面是寶塔面

mysql設定跳過密碼登入

windows 找到my.ini檔案 linux找到my.cnf檔案(提供下linux搜素檔案的方法:find  / -name '檔名') 修改檔案內容 在[mysqld]下新增 skip-grant-tables 如圖,儲存檔案  重啟mysql&nbs

mongodb設定使用者名稱和密碼並用node連線

我用的mongo的版本是4.0.4 1、設定使用者名稱和密碼 1.1 設定admin庫的使用者名稱密碼 > show dbs admin 0.000GB config 0.000GB l

hadoop設定ssh免密碼登入

轉載:http://blog.csdn.net/zwx19921215/article/details/19641345 對於需要遠端管理其它機器,一般使用遠端桌面或者telnet。linux一般只能是telnet。但是telnet的缺點是通訊不加密,存在不安全因素,只

設定ssh免密碼登入伺服器

注:本文假設你已經有一定的linux基本操作常識,所以一些細節不再贅述,僅作為思路參考記下。 本文方法在Linux發行版Ubuntu12.04LTS /12.10 Server下均已驗證,其他發行

MongoDB 設定使用者名稱密碼登入

原文轉載地址:https://blog.csdn.net/singgel/article/details/79407774Mongodb enable authenticationMongoDB 預設直接連線,無須身份驗證,如果當前機器可以公網訪問,且不注意Mongodb 埠

python操作資料庫,實現使用者名稱、密碼登入資料庫,首次登入自行設定密碼,並返回工資表明細。

python操作資料庫,實現使用者名稱、密碼登入資料庫,首次登入自行設定密碼,並返回工資表明細。 1 #!/usr/bin/env python3 2 # -*- coding: utf-8 -*- 3 4 # 匯入依賴包 5 import psycopg2 6 7 print("營

Mac設定密碼登入Centos伺服器

前言:沒有密碼還是美滋滋 step1:在Mac終端生成公鑰和私鑰 cd ~/.ssh ssh-keygen -t rsa 之後回車三次,ls檢視: 多了id_rsa 和id_rsa.pub兩個檔案 step2:傳送公鑰到CentOS伺服器端 scp id_rsa.p

windows下mongodb設定使用者名稱密碼&用python連線

環境: 主機:WIN10 python版本:3.5 mongodb版本:3.4.2 開發環境:pyCharm mongodb設定使用者名稱密碼: 編寫mongodb配置檔案mongodb.confdbpath=F:\test\db1logpath=F:\test\log\mongodb.loglo

SSH免密碼登入設定

  兩臺Linux主機需要從其中一臺ssh至另外一臺需要手動輸入密碼,通過以下設定免密碼登入   生成祕鑰 ssh-keygen -t rsa   把祕鑰複製至需要免密登入的主機,第一次拷貝需要輸入一次密碼 ssh-copy-id -i ~/.ssh/id_rsa.pub [emai

AWS EC2例項Ubuntu系統設定root使用者密碼並使用root/ubuntu使用者登入

參考連結:http://www.wangchao.info/1137.html  注意:連結中寫的簡化了,其中重啟服務的命令似乎不太適用,可能是不通用,我下面描述的方式親測可行,如有其他疑問請留言;      https://blog.csdn.net/ponyxx/article/details

Linux免密碼登入設定 ssh-keygen

linux系統配置免密碼的方式: 1:ssh-keygen -t rsa 生成金鑰 [[email protected] ~]# ssh-keygen -t  rsa Generating public/private rsa key pair.

Redis 設定密碼登入

前言 redis在生產環境中通常都會設定密碼以保證一定的安全性,本篇blog就簡單記錄一下如何在redis中設定客戶端登入密碼。 修改redis.conf RT,開啟redis.conf檔案,搜尋requirepass關鍵字,如下圖:  關注標記的那一行,#requirep

Linux免密碼登入設定

假設要登入的機器為192.168.1.100,當前登入的機器為192.168.1.101。 首先在101的機器上生成金鑰(如果已經生成可以跳過): $ ssh-keygen -t rsa 一路回車即可。 然後在將生成的公鑰複製到機器100上的~/.ss

Windows系統下 ,開啟mongodb使用者名稱,密碼登入

開啟安全性驗證1)管理員許可權執行cmd,進入你安裝mongod的bin目錄下輸入以下命令,重新安裝 MongoDB服務mongod --auth --logpath "g:\mongodb\logs\MongoDB.log" --logappend --dbpath "g:

linux下設定了SSH免密碼登入但還是需要輸入密碼的解決辦法

今天在設定linux的免密碼登入後,仍然需要輸入密碼,後來找到了原因,是因為使用者沒有許可權修改.ssh目錄下的know_hosts檔案導致的。 具體情況是這樣的: 在/home/username/.ssh輸入以下命令後: #ssh-keygen -t rsa -P ''

ssh 免密碼登入設定後仍需輸密碼的原因及解決方法)

這篇大部分是拷貝的。按操作步驟操作不行的最可能原因是:檔案許可權,不論是a機還是要訪問的b機的檔案的許可權都要改成對應的700,600;必須嚴格是這個許可權,否則會出現設定免密fail的情況。 ssh免密碼登入的原理: serverA 免密碼登入到 serverB

大資料叢集環境ssh免密碼登入設定

一、準備工作 用客戶端工具(xshell或者ssh等等)連線到linux伺服器。在root使用者下輸入命令: vi /etc/hosts,用vi編輯hosts檔案,如下: 127.0.0.1 localhost localhost.localdomain localhost4 localhos

配置ssh免密碼登入設定後還是提示需要輸入密碼

       工作之餘搭建了一個叢集測試,配置了ssh免密碼登入以後  ,所有的ssh-copy-id 金鑰也都分發了 ,各項配置也沒有問題,但是使用ssh進行免密登入時,沒有報錯,但是要輸入被ssh主機的登入密碼,跟沒有配置的效果一樣。       分析了一下,問題出現在建

MongoDB設定密碼

1、windows下設定 mongoDB 3.0 安全許可權訪問控制 http://ibruce.info/2015/03/03/mongodb3-auth/ 【主要參考】 http://blog.csdn.net/kk185800961/article/details/4