1. 程式人生 > >mongodb分片模式啟用認證的注意事項

mongodb分片模式啟用認證的注意事項

啟動configsvr

1. 確保mongdb的configsvr是採用service模式啟動的,即從/etc/init.d下的指令碼啟動的,其使用者是mongod。

2. 確保mongod的配置檔案完全相同。

3. 確保整個叢集的所有keyFile檔案內容相同。

啟動mongos

1. 使用以下命令啟動,以確保使用者切換為mongod:

runuser -s /bin/bash mongod -c '/usr/bin/mongos --configdb confighost-01:27019,confighost-02:27019,confighost-03:27019 --port 27021 --keyFile /data/mongodb/key.d/mongod.key'

2. 如果發生warning: config servers confighost-01:27019 and confighost-03:27019 differ

可以把configdb目錄下的內容刪除,然後再次執行configsvr服務。

3. 一切正常後,可以把mongos的啟動配置寫入指令碼/etc/init.d/mongos

4. service mongos start

加入分片

請注意一定在未給admin資料庫建立任何使用者之前至少加入一個分片,否則可能會導致以後無法加入。

sh.addShard("rs-1/host-11.mycloud.com")

sh.addShard("rs-2/host-21.mycloud.com")

為admin使用者建立第一個使用者 該使用者的角色必須是userAdminAnyDatabase 1.在mongos伺服器本機登入 mongo --port xxxxx#xxxxx表示mongos的監聽埠 use admin show dbs  #這時可以列出資料庫 db.createUser({user: "SysAdmin",pwd: "123",roles: [{role: "userAdminAnyDatabase", db:"admin"}]});
這時退出後再以mongo --port xxxxx登入執行show dbs就顯示未授權了。 重新登入 可以選擇在本機登入,也可以從其他機器登入。
本機登入:mongo localhost:27021/admin -u SysAdmin -p 123
其他機器登入:mongo mongos-server:xxxxx/admin -u SysAdmin -p 123 為test資料庫建立使用者 在mongos伺服器上以管理員身份登入admin資料庫:mongo localhost:27021/admin -u SysAdmin -p 123 為test資料庫建立管理員使用者:db.createUser({user: "yc-admin",pwd: "123",roles: [ { role: "userAdmin", db: "test" }]}); 切換到test資料庫:use test 以test管理員身份登入到資料庫:db.auth("yc-admin", "123") 建立test的其他使用者: 只讀使用者:db.createUser({user: "yc-read",pwd: "123",roles: [ { role: "read", db: "test" }]}); 讀寫使用者:db.createUser({user: "yc-write",pwd: "123",roles: [ { role: "readWrite", db: "test" }]});
新增其它分片 切換到admin資料庫 use admin 為admin資料庫增加userAdmin使用者和root角色的使用者(假設使用者名稱是admin-root),見上一步。
clusterAdmin使用者:db.createUser({user: "yc-cstadmin",pwd: "123",roles: [ { role: "clusterAdmin", db: "admin" }]}); 切換到yc-cstadmin使用者:db.auth("yc-cstadmin", "123") 新增rs-3分片:sh.addShard("rs-3/host-31.mycloud.com") 注意: 資料庫不同的角色具有不同的許可權: read:只讀 readWrite:讀寫 root:所有 userAdmin:使用者管理 clusterAdmin:叢集管理和監控
新增分片只能由admin資料庫的root進行,其它使用者都沒有該許可權。