[精讚] [會員登入]
130

[Linux] mongodb 初步--3/3

我使用mongo 的一些大小事:資料庫的權限、幫助

此文完整連結 http://n.sfs.tw/10903

複製連結 [Linux] mongodb 初步--3/3@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2017-03-14 23:54:08 最後編修
2017-03-14 23:47:54 By 瘦河馬
 

隔了快一年才出這篇,這篇補充更多資料庫的操作。

群組文章
[Linux] mongodb 初步--1/3  安裝及基本操作

[Linux] mongodb 初步--2/3 叢集

[Linux] mongodb 初步--3/3 權限和幫助

資料表和資料庫

前面有言,Mongo的資料表不叫TABLE,而叫collection,而Mongo的資料庫也叫database,簡稱dbs:

查看資料庫
> show dbs
admin  (empty)  
local  0.078GB
test   (empty)

上面的admin資料庫是mongo設定權限使用者的地方,相常於Mysql的mysql資料庫。在>=2.4版後也可以用:
> show databases

查看資料表
> show collections
<<沒設定的話什麼都沒有出現>>

查看使用者
> show users
<<沒設定的話什麼都沒有出現>>

建立資料庫,只要use,沒有的話系統會自建
> use mydb

刪除資料庫somedb,請小心,mongo都不會問直接刪
> use somedb
> db.dropDatabase()

幫助

查看幫助
> help
        db.help()                    help on db methods
        db.mycoll.help()             help on collection methods
        sh.help()                    sharding helpers
        rs.help()                    replica set helpers
        help admin                   administrative help
        help connect                 connecting to a db help
        help keys                    key shortcuts
        help misc                    misc things to know
        help mr                      mapreduce

幫助還分很多項,要查看資料庫方面幫助:
> db.help()

資料表方法的幫助
> db.你的collection名.help()

切片的幫助
> sh.help()

複本組的幫助
> rs.help()

權限

在Mongodb裡和MYSQL一樣裝完是沒有帳號和密碼的(註mysql有root最高權限但是不需密碼),因此必須要先幫整個Mongodb Server設定一組最高權限的管理帳號,當此帳號設定之後,再幫個別資料庫設定用戶才會有作用。

在已有設定帳密的mongodb中輸入帳密
  先使用admin資料庫才能輸入帳密
> use admin
  打入帳密
> db.auth('帳號', '密碼')

在剛裝好的mongo裡是沒有帳密的設定,我們可以新增使用者帳密[1]
# mongo
MongoDB shell version: 2.6.5
connecting to: test
  建立全域最高權限使用者
> db.createUser(
  {
    user: "adminname",
    pwd: "password",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

  指定資料庫reporting權限,建立限定資料庫及限定權限的使用者
>use reporting
db.createUser(
    {
      user: "reportsUser",
      pwd: "12345678",
      roles: [
         { role: "read", db: "reporting" },
         { role: "read", db: "products" },
         { role: "read", db: "sales" },
         { role: "readWrite", db: "accounts" }
      ]
    }
)

查看使用者
> use reporting
> db.getUser("reportsUser")

刪除使用者
> db.dropUser('username')

連入具有帳密設定的mongodb,指定資料庫admin指令:
# mongo --port 27017 -u reportsUser -p 12345678 --authenticationDatabase reporting
 

資料庫搬移

先確定工作目錄,在資料庫搬移時如果不先指定目錄,他會將暫存檔放到 /var/lib/mongo/journal 中,然後如果檔案太大,就會把磁碟的空間吃光光,然後SERVICE就掛了,一開始我在這裡吃了虧[註一]...
> pwd()
/var/lib/mongo/journal

設定工作目錄
> cd('/home/mongos/config')

將163.17.40.X的資料庫tcweb2搬移過來為tcweb,帳號admin/密碼123456,目標資料庫不存在系統會自建
> db.copyDatabase('tcweb2', 'tcweb', '163.17.40.X', 'admin', '123456')

語法[3]
db.copyDatabase(fromdb, todb, fromhost, username, password)

 搬移的過程~非~常~緩~慢~~100G的資料我搬了1.5個小時(同LAN) 

註一
因為預設目錄是/var/lib/mongo/journal,切在 /中,這裡只有50G的空間,當我在快樂的按下搬移時就閃回家睡覺,想說明早來收成就好,但是第二天發現再也啟動不了:

# service mongod start
Starting mongod (via systemctl):  Job for mongod.service failed. See 'systemctl st
                                                           [FAILED]
然後查看記錄檔  /var/log/mongodb/mongod.log有這樣的錯誤:

一時解決不了,後來心一橫把/var/lib/mongo/journal中的 j._* 刪除後再啟動就好了。

參考資料

[1] KeJyun學習日誌 http://blog.kejyun.com/2013/08/Authentication-Connect-MongoDB.html

[2] MONGOS DOC http://docs.mongodb.org/manual/tutorial/add-user-administrator/

[3] MONGODB DOC http://docs.mongodb.org/manual/reference/method/db.copyDatabase/


原文 2013-09-26 16:30:33

你可能感興趣的文章

計算檔案數和目錄數 linux/freebsd等系統利用ls來計算檔案數和目錄數、只列出目錄的方法

[SIP] OPENSER LINUX版本安裝全記錄 [SIP] OPENSER LINUX版本安裝全記錄

時間和時區CST UTC GMT的說明及設定 時間和時區CST DST UTC GMT的說明設定,及php時間的設置

[bc] linux 的計算機bc 如何進行8進位、10進位、16進位等轉換 linux 的計算機bc--如何進行8進位、10進位、16進位等轉換

[find] 活用 find 指令參數-atime -Btime -ctime -mtime 限制尋找時間 活用 find 指令參數-atime -Btime -ctime -mtime 限制尋找時間

[CSH/TCSH] 使用tcsh SHELL #1 --變數、控制和迴圈 在FREEBSD或LINUX中使用TCSH SHELL,進行一些基本的指令操作。

安裝git centos/freebsd/windows安裝git

[SSH] 限制登入的帳號或群組 SSH常會遭到駭客的掃描和暴力法破解密碼,就算密碼夠強,我還是希望駭客一點機會也沒有,所以要限制可以登入的使用者和來源

[vi/vim] 修改顯示顏色的檔案類型,編修自動上色的檔案類型 vi/vim 編修自動上色的檔案類型,說明新增上色檔案附檔名的方法

Vim .vimrc 設定,讓vim更好用 vim 是 unix-like 系統中最常用的編輯器,經由妥善的設定讓vim更好用

我有話要說


限制:留言最高字數1000字,超過部分會被截掉。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

[jQuery] 利用load()來達成ajax的寫法 jQuery中利用load()來達成ajax的寫法,也有人稱他是假的ajax,作法就是..

[jQuery] textarea 的取值和給值 HTML 的 TEXTAREA 標籤若要用 jquery 取值,不能使用 .text() 或 .html() ,使用 .

如何在linux下執行java 原生的java應用程式可以使用簡單的方法在console下面寫出來,適合作簡單的應用

安裝SPHINX支援中文 新版本的 sphinx 和舊版不同,網路上很多範例和教學是不能用的。此文是安裝和設定方法分享

NETCRAFT發現你的網站及作業系統 NETCRAFT可以發現你的網站及作業系統