Linux下mongodb安裝及數據導入導出教程
#查看linux發行版本
cat /etc/issue
#查看linux內核版本號
uname -r
一、Linux下mongodb安裝的一般步驟
1.到mongodb的官網(https://www.mongodb.org/downloads) 下載相應你系統的安裝包,拷貝(能夠用ftp工具如winscp)到你的linux系統上面。
2.解壓相應的安裝包
命令例如以下:tar zxvf mongodb-linux-x86_64-3.0.4.tgz
重命名解壓后的目錄,簡化管理:mv mongodb-linux-x86_64-3.0.4 mongodb
把mongodb文件夾移動到/usr/local/文件夾下,便於管理mv mongodb /usr/local/
3.為mongodb創建數據庫存放的位置和日志文件,默認是在/data/db以下,相同為了方便就在mongodb文件夾以下建立了對應的文件夾。
[root@localhost mongodb]# mkdir data
[root@localhost mongodb]# mkdir logs
4.啟動mongodb數據庫(注意:假設是root用戶下解壓的mongo。那么普通用戶是不能啟動mongo的,沒權限訪問那些root用戶創建的文件)
能夠進到mongodb以下的bin文件夾下查看mongodb的幫助文檔和我們用到的啟動參數:./mongod -h
啟動數據庫(--fork表示在后台執行mongo服務。假設沒有設置成后台執行將無法在控制台輸入別的東西)
./mongod --dbpath=/usr/mongodb/data/ --logpath=/usr/mongodb/logs/log --fork
查看mongo的進程
netstat -tlnup | grep mongod
為了安全起見建議關閉28017port防止信息外泄
pkill mongod
5.進入mongodb的client開始mongodb之旅(假設上一步沒有設置后台執行的話那就得又一次開一個client來進入下列文件夾執行)
在mongodb文件夾下的bin文件夾下運行./mongo
設置了password登錄的情況要這樣寫(shyx是username,事先定義的,passwordshyx能夠不在-p后面寫。之后會提示輸入)
./mongo -u yxadmin -p yx2345 admin
./mongo -u yxadmin -p 這是最簡潔的登錄方式(注意默認僅僅是登錄test數據庫),會提示輸入password
./mongo 127.0.0.1:27017/admin -uyxadmin -pyx2345指定ip、數據庫、賬戶
6.停止mongo(盡量不要殺進程,會導致問題。使用admin里的方法來關)
> use admin
switched to db admin
> db.shutdownServer();
server should be down...
能夠使用ps -ef或者ps -aux查看進程,找到mongo的進程號,然后kill
7.把mongo增加環境變量(這樣就不要每次都進安裝文件夾啟動服務了)
vim /etc/profile
PATH=$PATH:/usr/local/mongodb/bin
source /etc/profile
8.設置開機自啟動
將mongodb啟動項目追增加rc.local保證mongodb在server開機時啟動
echo "/usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs/logfile --logappend -port=27017" >> /etc/rc.local
(上述語句沒有設置要求password登錄)
9.設置須要權限的登錄方式, 用戶連接須要username和password
在bin文件夾下用這條命令啟動./mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs/logfile --logappend --auth --port=27017 --fork
帶有-auth參數時,必須通過認證才干夠查詢數據。
假設沒有加-auth參數,即使配置了安全認證用戶。也不須要認證誰都能夠操作。
10.設置安全認證用戶和password
MongoDB數據庫在默認是沒實username及password。不用安全驗證的,僅僅要連接上服務就能夠進行CRUD操作。
假設先前已經設置開機啟動mongo且是不用password登錄的,那么要改動原先開機啟動的設置,設置成須要password認證的開機服務。
================================================
在安裝完mongo后默認是不須要用戶認證的的,要創建一個管理員用戶:
use admin
db.createUser(
{
user:"yxadmin",
pwd:"yx2345",
roles:["root"]
} )
在管理員賬戶下創建一個pcmddo數據庫,並分配此數據庫的用戶和password(管理員能夠操作隨意數據庫)
use pcmddo
db.createUser(
{
user: "yxkj",
pwd: "yx2345",
roles:
[
{ role: "readWrite", db: "pcmddo" },
]
}
)
==================================================
定位到mongodb\bin,使用./mongo進入mongodb的命令行管理。
鍵入命令:
use admin
db.createUser(
{
user: "yxkj",
pwd: "yx2345",
roles: [
{
role: "userAdminAnyDatabase",
db: "admin"
} ]
}
);
如今我們為mongodb的admin數據庫加入一個用戶shyx,password也是shyx,mongodb能夠為每一個數據庫都建立權限認證,也就是你能夠指定某個用戶能夠登錄到哪個數據庫。上面的代碼。我們為admin數據庫加入了一個shyx用戶,在mongodb中admin數據庫是一個特別的數據庫,這個數據庫的用戶,能夠訪問mongodb中的全部數據庫。
假設你要為test數據庫,設置一個用戶,使用例如以下命令:
use test
db.createUser(
{
user: "yxkj",
pwd: "yx2345",
roles: [
{
role: "userAdminAnyDatabase",
db: "admin"
} ]
}
);
好了,如今我們已經為mongodb設置了一個全局用戶yxkj,接下來先重新啟動mongodb,使創建的用戶生效(/etc/init.d/mongod restart)
可能出現的問題
當用命令/usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs/mongod.log --fork啟動mongodb時,報例如以下錯誤:child process failed, exited with error number 1
這是由於非正常關閉mongodb引起的錯誤,解決的方法例如以下:
刪掉下面文件就可以:/usr/local/mongodb/mongod.lock
參考文獻:
http://jingyan.baidu.com/article/fd8044faf4f3a95030137a79.html
http://blog.csdn.net/yuwenruli/article/details/8529192
http://www.2cto.com/database/201408/322384.html
http://docs.mongodb.org/manual/reference/method/db.createUser/#create-administrative-user-with-roles
二、Mongodb數據導入導出功能介紹
Windows 平台、沒有設置usernamepassword
mongoimport -d Test_DBtsv -c Test_Table --type tsv -h 127.0.0.1 --fields 手機號,field2,field3,field4,field5,field6,field7,field8 --file D:\data\test.txt
mongoexport -d Test_DBtsv -c Test_Table --csv -f 手機號,field2,field3,field4,field7 -o D:\data\outdata_csv.txt
Linux平台、用戶認證后導入、導出數據
mongoimport -d Test_DBcsv -c Test_Table --type csv -h 127.0.0.1 -u zhou -p 123 --fields手機號,field2,field3,field4,field5,field6,field7 --file /data/test.txt
mongoexport -d Test_DBtsv -c Test_Table --csv -u zhou -p 123 -f 手機號,field2,field3,field4,field7 -o /data/test.txt
導出數據能夠指定字段
兩種平台主要是本地文件路徑寫法不一樣。假設要用usernamepassword登錄得寫上對應的參數(-u -p)!
用戶認證的前提是事先為數據庫Test_DBcsv分配好賬戶password:
在沒有使用--auth選項啟動mongo的情況下進入mongo shell運行以下的語句
use Test_DBcsv
db.createUser(
{
user: "zhou",
pwd: "123",
roles:
[
{ role: "readWrite", db: "Test_DBcsv" },
]
}
)
這樣在使用--auth選項啟動mongoserver的情況下就能使用賬戶zhou登錄數據庫Test_DBcsv了。
參考文獻:
http://chenzhou123520.iteye.com/blog/1641319
查看命令使用幫助
mongoimport --help
mongoexport --help
Mysql導入數據:
load data infile "/big/pcmd5days/nanjing620/hebingnew.txt" into table table2 (time, processdate,ismi,lac,ceid,seg,importdate);