Ubuntu下安裝使用MongoDB
安裝MongoDB
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
apt-get update
apt-get install -y mongodb-org
啟動、連線、配置
啟動MongoDB服務,預設安裝後,是啟動MongoDB服務的
service mongod stop # 停止服務
service mongod start # 啟動服務
service mongod restart # 重新啟動服務
service mongod status # 檢視狀態
chkconfig mongod on # 加入開機啟動服務
客戶端連線,mongo安裝完成後,預設是隻能在本機連線,在伺服器外部是不能連線mongo的
可通過vim 修改/etc/mongod.conf中的net,bindIP,把127.0.0.1改為0.0.0.0,可從配置檔案中獲取到以下目錄儲存資訊
- 資料目錄:/var/log/mongodb
- 日誌目錄:/var/lib/mongodb
基本操作
- Management
mongo # 連線預設資料庫test;
db # 顯示當前連線的資料庫;
show dbs # 顯示所有可連線的資料庫;
use dbName # 切換資料庫(若DB不存在,則建立);
show tables # 顯示資料庫中的表;
db.getCollectionNames() # 顯示資料庫中的表;
- CRUD
db.tableName.find().count():查詢對應資料表中的所有資料條數;
db.tableName.find().pretty():查詢對應資料表中的所有資料,並格式化顯示;
db.tableName.findOne({name:'Tom'}):查詢對應資料表中的一條資料;
db.tableName.insert({
name:'n',
password:'000000'
});
db.tableName.update({name:'n'}, {$set:{password:'111'}});
db.tableName.remove({name:'n'});
db.tableName.drop(); :刪除資料表
db.dropDatabase(); :刪除資料庫
- Other operations
db.getCollectionNames(); :獲取所有資料表名
db.oldname.renameCollection("newname"); :資料表重新命名
使用者:認證與授權
建立使用者:
記住關鍵的一點:在MongoDB中使用者跟著資料庫走。
1 新增管理使用者(mongoDB中沒有超級管理員使用者,只有用來管理使用者的使用者userAdminAnyDatabase
)
use admin
db.createUser({
user: "使用者名稱",
pwd:"密碼",
roles:[{ role: "userAdminAnyDatabase", db: "admin" }]
})
2 開啟認證:/etc/mongod.conf中修改:
security:
authorization: enabled
3 重啟mongod, 認證
以建立的管理使用者身份進行認證
> use admin
switched to db admin
> db.auth("使用者名稱","密碼") # 認證成功返回1
1
Note:
- 若不進行認證,將無法進行後續操作
2018-10-26T14:35:17.218+0800 E QUERY [thread1] Error: listCollections failed: {
“ok” : 0,
“errmsg” : “not authorized on admin to execute command { listCollections: 1.0, filter: {} }”,
“code” : 13,
“codeName” : “Unauthorized”
} :
[email protected]/mongo/shell/utils.js:25:13
[email protected]/mongo/shell/db.js:807:1
[email protected]/mongo/shell/db.js:819:19
[email protected]/mongo/shell/db.js:830:16
@(shell):1:1
- admin使用者僅具有使用者管理許可權
4 為指定庫建立讀寫許可權的使用者
use targetDB
db.createUser({
user: "hello",
pwd:"world",
roles:[{ role: "readWrite", db: "targetDB" }]
})
- 檢視已建立的使用者
- 通過admin認證後,可以檢視已建立的所有使用者。
db.system.users.find().pretty();
- 使用剛建立的讀寫許可權的使用者認證
> use targetDB
switched to db targetDB
> db.auth('hello', 'world')
1
資料匯出、匯入,備份、恢復
匯出:mongoexport -d 庫名 -c 表名 -o 目錄\表名.json --type json
匯入:mongoimport -d 庫名 -c 表名 --file 目錄\表名.json --type json
備份:mongodump -h localhost -u 使用者名稱 -p 密碼 -d 庫名 -o 目錄
恢復:mongorestore -h ip:port -u 使用者名稱 -p 密碼 -d 庫名 --dir 目錄
If you have any questions or any bugs are found, please feel free to contact me.
Your comments and suggestions are welcome!