1. 程式人生 > >Ubuntu下安裝使用MongoDB

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" }]
})
  1. 檢視已建立的使用者
  • 通過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!