一、MongoDB的安裝
1、下載下傳
<code>cd /data/packages</code>
<code>wget https:</code><code>//fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.9.tgz</code>
2、解壓
<code>tar zxvf mongodb-linux-x86_64-rhel62-</code><code>3.2</code><code>.</code><code>9</code><code>.tgz</code>
<code>mv mongodb-linux-x86_64-rhel62-</code><code>3.2</code><code>.</code><code>9</code> <code>/data/mongodb </code>
<code>cd /data/mongodb/</code>
<code>mkdir -p /data/mongodb/data #目錄中建立一個存放資料檔案的目錄:</code>
<code>mkdir -p /data/mongodb/logs #目錄中建立一個存放日志的目錄:</code>
<code>touch /data/mongodb/logs/mongodb.log</code>
<code>cd bin/</code>
3、編輯配置檔案:
<code>vim mongodb.conf 輸入以下内容: </code>
<code># idae - MongoDB config start - </code><code>2016</code><code>-</code><code>08</code><code>-</code><code>26</code>
<code>dbpath=/data/mongodb/data # 設定資料檔案的存放目錄</code>
<code>logpath=/data/mongodb/logs/mongodb.log # 設定日志檔案的存放目錄及其日志檔案名</code>
<code>bind_ip=</code><code>0.0</code><code>.</code><code>0.0</code>
<code>port=</code><code>27017</code> <code># 設定端口号(預設的端口号是 </code><code>27017</code><code>)</code>
<code>fork=</code><code>true</code> <code># 設定為以守護程序的方式運作,即在背景運作</code>
<code>nohttpinterface=</code><code>true</code>
<code># idae - MongoDB config end - </code><code>2016</code><code>-</code><code>08</code><code>-</code><code>26</code>
<code>參數解釋: </code>
<code>--dbpath 資料庫路徑(資料檔案)</code>
<code>--logpath 日志檔案路徑</code>
<code>--master 指定為主機器</code>
<code>--slave 指定為從機器</code>
<code>--source 指定主機器的IP位址</code>
<code>--pologSize 指定日志檔案大小不超過64M.因為resync是非常操作量大且耗時,最好通過設定一個足夠大的oplogSize來避免resync(預設的 oplog大小是空閑磁盤大小的</code><code>5</code><code>%)。</code>
<code>--logappend 日志檔案末尾添加,即使用追加的方式寫日志</code>
<code>--journal 啟用日志</code>
<code>--port 啟用端口号</code>
<code>--fork 在背景運作</code>
<code>--only 指定隻複制哪一個資料庫</code>
<code>--slavedelay 指從複制檢測的時間間隔</code>
<code>--auth 是否需要驗證權限登入(使用者名和密碼)</code>
<code>--syncdelay 資料寫入硬碟的時間(秒),</code><code>0</code><code>是不等待,直接寫入</code>
<code>--notablescan 不允許表掃描</code>
<code>--maxConns 最大的并發連接配接數,預設</code><code>2000</code>
<code>--pidfilepath 指定程序檔案,不指定則不産生程序檔案</code>
<code>--bind_ip 綁定IP,綁定後隻能綁定的IP通路服務</code>
4、建立新的賬号:
<code>groupadd mongodb </code>
<code>useradd mongodb -g mongodb </code>
<code>chown -R mongodb:mongodb /data/mongodb</code>
<code>ln -s /data/mongodb/bin/mongo /usr/bin/mongo</code>
5、啟動:
<code>/data/mongodb/bin/mongod --config /data/mongodb/bin/mongodb.conf</code>
a.報錯:/lib64/libc.so.6: version `GLIBC_2.14' not found ,原因是glibc版本太低,軟體編譯時使用了較高版本的glibc引起的
b.報錯:[main] Failed global initialization: BadValue: Invalid or no user locale set. Please ensure LANG and/or LC_* environment variables are set correctly.
解決:設定下環境變量就好了: # export LC_ALL=C
-檢視 mongodb 程序:
<code>ps aux |grep mongodb</code>
-檢視 mongodb 服務的運作日志:
<code>tail -100f /data/mongodb/logs/mongodb.log</code>
-檢查端口是否已被啟動:
<code>netstat -lanp | grep </code><code>27017</code>
-殺死 mongodb 程序,即可關閉 mongodb 服務:
<code>kill -</code><code>15</code> <code>PID</code>
6、設定開機自動啟動mongodb
方法有二:
1、把這句話寫到把 /etc/rc.local,即可開機啟動。
<code>echo /data/mongodb/bin/mongod --config /data/mongodb/bin/mongodb.conf >/etc/rc.d/rc.local</code>
第二種:
2、将一個腳本放到/etc/init.d/
比如,命名為/etc/init.d/mongodb,則執行以下步驟即可:
1)要給它們賦予執行權限:
<code>chmod +x /etc/init.d/mongodb</code>
2)接着試一下是否可以啟動、停止:
<code>service mongodb start</code>
<code>service mongodb stop</code>
3)最後設為開機啟動:
<code>chkconfig mongodb on</code>
<code>#!/bin/bash</code>
<code># mongod - Startup script </code><code>for</code> <code>mongod</code>
<code># chkconfig: </code><code>35</code> <code>80</code> <code>15</code>
<code># description: Mongo is a scalable, document-oriented database.</code>
<code># processname: mongod</code>
<code># config: /data/mongodb/conf/mongod.conf</code>
<code># pidfile: /var/run/mongo/mongo.pid</code>
<code>source /etc/rc.d/init.d/functions</code>
<code># things from mongod.conf get there by mongod reading it</code>
<code>if</code> <code>[ $(id -u) != </code><code>"0"</code> <code>]; then</code>
<code> </code><code>echo </code><code>"Permission Denied! Please use root to run again!"</code>
<code> </code><code>exit </code><code>1</code>
<code>fi</code>
<code>test -d /var/run/mongodb || (mkdir -p /var/run/mongodb ; chown mongod:mongod /var/run/mongodb)</code>
<code># NOTE: </code><code>if</code> <code>you change any OPTIONS here, you get what you pay </code><code>for</code><code>:</code>
<code># </code><code>this</code> <code>script assumes all options are in the config file.</code>
<code>CONFIGFILE=</code><code>"/data/mongodb/conf/mongodb.conf"</code>
<code>SYSCONFIG=</code><code>"/etc/sysconfig/mongod"</code>
<code>export PATH=$PATH:/data/mongodb/bin</code>
<code>DBPATH=`awk -F= </code><code>'/^dbpath/{print $2}'</code> <code>"$CONFIGFILE"</code><code>`</code>
<code>OPTIONS=</code><code>" --config $CONFIGFILE"</code>
<code>mongod=</code><code>"/data/mongodb/bin/mongod"</code>
<code>echo </code><code>"db path is: "</code><code>$DBPATH</code>
<code>echo $mongod</code>
<code>MONGO_USER=mongodb</code>
<code>MONGO_GROUP=mongodb</code>
<code>[ -r </code><code>"$SYSCONFIG"</code> <code>] && source </code><code>"$SYSCONFIG"</code>
<code> </code>
<code>super</code><code>() {</code>
<code> </code><code>su - $MONGO_USER -c </code><code>"PATH=$PATH::/data/mongodb/bin; $*"</code>
<code>}</code>
<code>start()</code>
<code>{</code>
<code> </code><code>echo -n $</code><code>"Starting mongod: "</code>
<code># daemon --user </code><code>"$MONGO_USER"</code> <code>"numactl --interleave=all"</code> <code>$mongod $OPTIONS</code>
<code>#daemon --user </code><code>"$MONGO_USER"</code> <code>$mongod $OPTIONS</code>
<code>#</code>
<code># su - $MONGO_USER -c </code><code>"$mongod $OPTIONS"</code> <code>-m -p</code>
<code># su - $MONGO_USER</code>
<code> </code><code>$mongod $OPTIONS</code>
<code># </code><code>super</code> <code>$mongod $OPTIONS</code>
<code> </code><code>echo $mongod$OPTIONS</code>
<code> </code><code>RETVAL=$?</code>
<code> </code><code>echo</code>
<code> </code><code>[ $RETVAL -eq </code><code>0</code> <code>] && touch /var/lock/subsys/mongod</code>
<code>stop()</code>
<code> </code><code>echo -n $</code><code>"Stopping mongod: "</code>
<code> </code><code>killproc -p </code><code>"$DBPATH"</code><code>/mongod.lock -d </code><code>300</code> <code>/data/mongodb/bin/mongod</code>
<code> </code><code>[ $RETVAL -eq </code><code>0</code> <code>] && rm -f /var/lock/subsys/mongod</code>
<code>restart () {</code>
<code> </code><code>stop</code>
<code> </code><code>start</code>
<code>ulimit -n </code><code>12000</code>
<code>RETVAL=</code><code>0</code>
<code>case</code> <code>"$1"</code> <code>in</code>
<code> </code><code>start)</code>
<code> </code><code>start</code>
<code> </code><code>;;</code>
<code> </code><code>stop)</code>
<code> </code><code>stop</code>
<code> </code><code>restart|reload|force-reload)</code>
<code> </code><code>restart</code>
<code> </code><code>condrestart)</code>
<code> </code><code>[ -f /var/lock/subsys/mongod ] && restart || :</code>
<code> </code><code>status)</code>
<code> </code><code>status $mongod</code>
<code> </code><code>RETVAL=$?</code>
<code> </code><code>*)</code>
<code> </code><code>echo </code><code>"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart}"</code>
<code> </code><code>RETVAL=</code><code>1</code>
<code>esac</code>
<code>exit $RETVAL</code>
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
二、使用者授權和管理
1、進入mongodb的shell模式:
<code>/usr/bin/mongo</code>
檢視資料庫清單:
<code>show dbs</code>
檢視目前db版本:
<code>db.version();</code>
2、增加管理者權限:
userAdminAnyDatabase 這個角色擁有配置設定角色和使用者的權限,但沒有查寫的缺陷
root 這是超級管理者
readWrite 有讀寫權限
read 有讀權限
進入shell模式:
<code>> use admin </code><code>//切換到admin資料庫</code>
<code>> db.createUser(</code>
<code>... {</code>
<code>... user:</code><code>"root"</code><code>,</code>
<code>... pwd:</code><code>"test123"</code><code>,</code>
<code>... roles:[{role:</code><code>"root"</code><code>,db:</code><code>"admin"</code><code>}]</code>
<code>... }</code>
<code>... );</code>
<code>Successfully added user: {</code>
<code> </code><code>"user"</code> <code>: </code><code>"root"</code><code>,</code>
<code> </code><code>"roles"</code> <code>: [</code>
<code> </code><code>{</code>
<code> </code><code>"role"</code> <code>: </code><code>"root"</code><code>,</code>
<code> </code><code>"db"</code> <code>: </code><code>"admin"</code>
<code> </code><code>}</code>
<code> </code><code>]</code>
<code>></code>
<code>> db.createUser( </code>
<code>... { </code>
<code>... user: “mongoRoot”, </code>
<code>... pwd: “testMongoDB2016”, </code>
<code>... roles:[{role:”userAdminAnyDatabase”, db:”admin”}] </code>
<code>... } </code>
驗證一下,在哪裡注冊使用者的要去哪個db裡認證:
<code>db.auth(“mongoRoot”, “testMongoDB2016”)</code>
此後可以用這個mongoRoot賬号去建立某一資料庫管理賬号:
<code>> db.createUser({user:</code><code>"test1"</code><code>,pwd:</code><code>"test123"</code><code>,roles:[{</code><code>"role"</code><code>:</code><code>"readWrite"</code><code>,</code><code>"db"</code><code>:</code><code>"test1"</code><code>}]})</code>
但發現此時增加的賬号不能在用戶端登入,原因是mongodb版本錯了:
先退出 mongod 服務
use admin
db.auth(“root”, “testMongoDB2016”)
db.shutdownServer()
再在無認證情況下打開 mongod
db.dropUser(“hhq163”)
db.system.version.update({ “_id”:”authSchema”},{$set:{“currentVersion”:3}})
db.createUser({user:”hhq163”,pwd:”test123456”,roles:[{“role”:”readWrite”,”db”:”admin”}]})
再以認證的形式啟動mongodb
如果需要建立某一個新DB的賬号:
需要在shell下執行:
use TestDB
db.createUser({user:”hhq163”,pwd:”test123456”,roles:[{“role”:”readWrite”,”db”:”TestDB”}]})
vim /usr/local/mongodb/bin/mongodb.conf
在檔案末尾增加以下這一行:
auth=true
8、關閉資料庫伺服器:
db.shutdownServer()
如果開戶安全認證,則要先認證:
本文轉自奔跑在路上部落格51CTO部落格,原文連結http://blog.51cto.com/qiangsh/1843040如需轉載請自行聯系原作者
qianghong000