啟動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資料庫增加userA dmin使用者和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進行,其它使用者都沒有該許可權。