MongoDB 常用指令
基本啟動與終止
sudo service mongod start
sudo service mongod stop
或是使用 mongod 並且可指定要用的 DB 位置
mkdir ./data/db1
mongod --dbpath ./data/db1
mongod --dbpath ./data/db1 --shutdown
mongo預設使用27017port,所以如果要使用robomongo連線EC2上的mongo要先開aws 的port然後記得要在mongo加上auth不然大家都可以連線,很不安全
或是加上 logpath
mongod --dbpath ./data/db2 --logpath "./log/mongolog-${date}" &
# 創建使用者步驟
依序輸入以下指令
1.mongod --dbpath ./data/db1 &
2.mongo
3.use admin
4.db.createUser({ user: "admin", pwd: "輸入密碼", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })
5.db.auth("admin", "adminpassword")
重新啟動並開啟認證登入
使用--auth後要記得到admin並用db.auth後才可執行其他操作
--dbpath 可以指定要用的 DB 資料夾
1.mongod --dbpath ./data/db1 --shutdown
2.mongod --dbpath ./data/db2 --logpath "./log/mongolog-${date}" --auth &
3.mongo
4.use admin // 選擇使用的資料庫
5.db.auth('admin','密碼') // 登入資料庫使用者
新增一個資料庫並且新增使用者(此時因為剛有登入admin所以可以新增使用者,但新增前無法添加資料)
1.use <要新增的資料庫名稱>
2.db.createUser(
{
user: "yicheng",
pwd: "密碼",
roles: [ { role: "readWrite", db: "此資料庫名稱" }]
}
)
新增資料至資料庫
db.資料庫名稱.insert({"name":"tutorials point"})
存入資料後可看到db被新增進去了
查看現在所在的db名稱
查詢資料
顯示所有collection
之後連線字串為mongodb://youruser:yourpassword@localhost/yourdatabase
ex:
mongoose.connect('mongodb://帳號:密碼@ec2-52-193-141-232.ap-northeast-1.compute.amazonaws.com:27017/資料庫名稱',function(err){
if(err){throw err};
});
Dump 將 DB 資料導出備份
mongodump --authenticationDatabase admin -u admin -p <admin密碼>
Restore 將備份檔案導入DB
mongorestore -d <取DB名稱> <要導入的資料夾路徑> --authenticationDatabase admin -u admin -p <admin密碼>
# 指定可連線的IP
到config檔案設定
#自訂mongod.conf之config檔案
(因為使用mongod時不會和使用service啟動一樣自動使用/etc/mongod.conf的設定,需要手動加入--才會去使用config檔案)
https://docs.mongodb.com/manual/reference/configuration-options/#use-the-configuration-file
參考至:
P.S
1.用service的方式啟動無法用--dbpath指定資料夾路徑
2.用service無法輸入--auth需要打開/etc/mongod.conf並更改下列為如下
security:
authorization: enabled
3.admin使用者預設可以連到所有db,如果連不進去通常是因為db上還沒有資料所以db還沒完全建立好,只要先使用admin新建資料庫(use)後在資料庫新增使用者(createUser)後使用該user登入(db.auth)然後新增資料,之後admin也可在該資料庫新增資料了
遠端連線mongoDB
# 讓進程保持--fork
(記得要指定logpath)
mongod --auth --dbpath ./data/db2 --fork --logpath=./mongodb.log
注意事項
如果在第一次創建 user 使用
db.createUser( { user: "admin", pwd: "<Enter a secure password>", roles: [ { role: "readWriteAnyDatabase", db: "admin" }, { role: "userAdminAnyDatabase", db: "admin" } ] } )
這樣會讓admin無法刪除DB,因為沒有權限
可以如下修改
mongo -u admin -p 密碼 --authenticationDatabase=admin
use admin
db.grantRolesToUser('admin',[{ role: "root", db: "admin" }])
如果忘記密碼
mongoerror-topology-was-destroyed
把 Node.js server 重啟即可
顯示相關 log