mongo資料庫單節點搭建

woms發表於2018-12-18

安裝

   wget mongo.tar
   tar -zxvf mongo.tar
   cd mongo
   mkdir log data conf
   touch conf/mongod.conf

配置

   vi conf/mongod.conf
   port=27017
   dbpath=data
   logpath=log/mongod.log
   fork=true   # 後臺啟動
   bind_ip_all=true   #允許所有的ip訪問
   auth=true   # 開啟使用者名稱密碼認證

啟動

   bin/mongod -f conf/mongod.conf

關閉

   pkill mongod
   

開啟安全認證

開啟安全認證必須同時滿足以下兩個條件:

  1. mongod啟動以auth引數啟動
  2. 資料庫中建立了user

1. 對所有的dbs全域性認證

# 建立超級管理員,超級管理員的資訊只儲存在admin資料庫中,超級管理員登入可以對所有的資料庫進行操作
use admin
db.createUser({ user: "root", pwd: "123456", roles: [{ role: "root", db: "admin" }] })
db.auth("root","123456")   # 驗證是否成功 返回1說明成功

現在有兩種方式進行使用者身份的驗證

# 方式一
bin/mongo --port 27017 -u "root" -p "123456" --authenticationDatabase "admin"


# 方式二
bin/mongo --port 27017
use admin
db.auth("root", "123456")    #  輸出 1 表示驗證成功

2. 對具體的資料庫db認證

use test #在哪個資料庫中建立的使用者,就要用哪個資料庫驗證,使用者的資訊跟隨資料庫
db.createUser(
  {
    user: "wms",
    pwd: "123456",# 這裡最好給四個基本role
    roles: [ { role: "read", db: "test" },{ role: "readWrite", db: "test" },
             { role: "dbAdmin", db: "test" },{ role: "userAdmin", db: "test" } ]
  }
)
bin/mongo -u wms -p 123456 --authenticationDatabase test 
show tables



# 更新使用者
db.updateUser("wms",
  {pwd: "123456",
    roles: [ { role: "read", db: "test" },{ role: "readWrite", db: "test" },
    { role: "dbAdmin", db: "test" },{ role: "userAdmin", db: "test" } ]
  }
)

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

內建role

  • read:允許使用者讀取指定資料庫
  • readWrite:允許使用者讀寫指定資料庫
  • dbAdmin:允許使用者在指定資料庫中執行管理函式,如索引建立、刪除,檢視統計或訪問system.profile
  • userAdmin:允許使用者向system.users集合寫入,可以找指定資料庫裡建立、刪除和管理使用者
  • clusterAdmin:只在admin資料庫中可用,賦予使用者所有分片和複製集相關函式的管理許可權。
  • readAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的讀許可權
  • readWriteAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的讀寫許可權
  • userAdminAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的userAdmin許可權
  • dbAdminAnyDatabase:只在admin資料庫中可用,賦予使用者所有資料庫的dbAdmin許可權。
  • root:只在admin資料庫中可用。超級賬號,超級許可權
  1. 只在admin資料庫中可用,意思是資料儲存在admin資料庫中,在其它資料庫中不可用儲存資料
  2. 在那個資料庫中儲存的資訊(可用),只能在那個資料庫下驗證,在其它的資料庫下驗證不了。也就是說有些role,是在admin下操作的,需要在admin下驗證,但是可用對說有的db進行操作

使用yum安裝

ali映象源

[mongodb-org]
name=MongoDB Repository
baseurl=http://mirrors.aliyun.com/mongodb/yum/redhat/7Server/mongodb-org/3.2/x86_64/
gpgcheck=0
enabled=1
yum install -y mongodb-org
service mongod start
chkconfig mongod on

配置檔案在/etc/mongod.conf


相關文章