Win 10でMongoDBをインストールする

12204 ワード

1、MongoDB取得、インストール
1.1ダウンロード
MongoDBは現在IT業界で非常に流行している非関係型データベース(NoSql)であり、柔軟なデータストレージ方式が現在のIT従業員に人気がある.ここでは主にWindowsプラットフォームの下でMongoDBをインストールしてMongoDBの公式サイトをダウンロードしてリンクをダウンロードする方法を説明します
壁にされている場合はmongodb-win 32-x 86_をクリックしてください64-2008plus-ssl-3.4.1-signed.msiダウンロード.
1.2環境変数のインストールと設定
環境変数を手動で簡単に構成し、インストールに成功した後、mongodbディレクトリの下のbinディレクトリをpath変数に追加します.たとえば、次のようにします.
1.3インストールの設定
1.3.1 step1
データベースファイル格納ディレクトリを作成D:\mongodb\data\dbなどのデータベースファイルの格納場所を作成します.mongodbサービスを開始する前に、データベースファイルの保存フォルダを作成する必要があります.そうしないと、コマンドは自動的に作成されず、正常に起動できません.
1.3.2管理者モードがDOSに入る
1.3.2.1ディレクトリの切り替え
$ cd D:\MongoDB\bin
$ mongod --dbpath D:\MongoDB\data\db
#    --dbpath           ,                ,                   
2017-05-29T17:23:16.752+0800 I NETWORK  [thread1] waiting for connections on port 27017

1.3.2.2ログファイルの作成
logディレクトリを指定する必要があるので、logディレクトリD:\MongoDB\data\logs\mongodb.logを作成します.
$ mongod --dbpath D:\MongoDB\data\db --logpath=D:\MongoDB\data\logs\mongodb.log --logappend

`これは、コマンドラインウィンドウでいくつかの起動情報が印刷され、最後の行が次のように表示されたときに起動に成功したことを示します.
2017-05-29T17:23:16.752+0800 I NETWORK  [thread1] waiting for connections on port 27017

1.3.2.3 Windowsサービスへのインストール
$ sc create MongoDB binPath= "D:\MongoDB\bin\mongod.exe --service --dbpath D:\MongoDB\data\db --logpath=D:\MongoDB\data\logs\mongodb.log --logappend"

1.3.2.4サービスの開始
$ net start MongoDB

プロファイルを使用するのは残念ですが、公式にダウンロードしたインストールパッケージにはデフォルトのプロファイルはありません.プロファイルを使用するには自分で作成するしかありません.また、個人的にはMongoDBのプロファイルを管理するためにプロファイルを使用することをお勧めします.プロファイルを使用してデータベースファイル、ログファイル、その他のプロファイルを構成するのは一目瞭然です.
            D:\MongoDB
            D:\MongoDB\data
            D:\MongoDB\data\logs
           D:\MongoDB\etc
            D:\MongoDB\etc\mongodb.conf

1.3.2.5プロファイル
dbpath=D:\MongoDB\data\db       #      
logpath=D:\MongoDB\logs\mongodb.log #         
logappend=true #           ,        mongodb               ,            
journal=true #       ,    
quiet=true #                   ,            false
port=27017 #         27017

ここにはいくつかの一般的な項目しか指定されていません.詳細は公式ドキュメントを参照してください.https://docs.mongodb.org/manual/reference/configuration-options/
通常起動
$ mongod --config D:\MongoDB\etc\mongodb.conf

Windowsサービスとしてインストール
$ mongod --config D:\MongoDB\etc\mongodb.conf --install 

サービスの開始
$ net start MongoDB

ブラウザを開くhttp://127.0.0.1:27017/インストールに成功したことを示す
 
SCを使用してWindowsサービスにインストール
$ sc create MongoDB binPath= "D:\MongoDB\bin\mongod.exe --service --config=D:\MongoDB\etc\mongodb.conf"

Ubuntu下インストールUbuntu下インストールは非常に簡単で、1つのコマンドを実行すればいいので、何の構成も必要ありません.実行後、直接使用します.
$ sudo apt-get -y install mongodb

 
2、グラフィック管理ツール
adminMongo環境ニーズNode.js(nvmでインストール)pm 2(npm -g pm2)gitインストールとダウンロード開始
$ git clone https://github.com/mrvautin/adminMongo.git
$ cd adminMongo && npm install
# pm2   
$ cd adminMongo
$ pm2 start app.js

アクセステストブラウザを開き、アクセスhttp://127.0.0.1:1234/を選択すると、インストールが正常に構成されたことを示します.Connection name=>接続名を使用して任意にConnection string=>
接続方法:mongodb://:@127.0.0.1:/ Connection options=>リンクオプションdocs接続に成功した後に1つのデータベースを作成してテストして勝手にいくつかのデータを追加して、データがJSONフォーマットであることに注意します
 
 
3、3.X認証メカニズム
3.1管理者アカウントの作成権限
アカウントを作成する必要がある場合は、grant権限、すなわち、アカウント管理の権限が必要です.注意点、アカウントはライブラリについて行くので、指定ライブラリで許可され、指定ライブラリでも検証(auth)しなければなりません.
> mongo
> use admin
> db.createUser(
   {
     user: "dba",
     pwd: "dba",
     roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
   }
 )

上の'>'の後に実行されるコマンドがあります.
user:ユーザー名
pwd:パスワード
roles:ユーザーのロールを指定し、空の配列で新しいユーザーに空のロールを設定できます.rolesフィールドでは、組み込みロールとユーザー定義ロールを指定できます.roleのキャラクターは次のように選択できます.
Built-In Roles(    ):
    1.        :read、readWrite;
    2.        :dbAdmin、dbOwner、userAdmin;
    3.       :clusterAdmin、clusterManager、clusterMonitor、hostManager;
    4.       :backup、restore;
    5.        :readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
    6.       :root  
    //                          (dbOwner 、userAdmin、userAdminAnyDatabase)
    7.     :__system

具体的な役割:
Read:           
readWrite:           
dbAdmin:                 ,     、  ,       system.profile
userAdmin:     system.users    ,           、       
clusterAdmin:  admin      ,                     。
readAnyDatabase:  admin      ,             
readWriteAnyDatabase:  admin      ,              
userAdminAnyDatabase:  admin      ,          userAdmin  
dbAdminAnyDatabase:  admin      ,          dbAdmin  。
root:  admin      。    ,    

3.2ロールユーザーの作成
ユーザーを管理するuserAdminAnyDatabaseロールが確立されたばかりで、このロールを使用してユーザーを作成、削除できます.検証:authパラメータをオンにする必要があります.
root@test:/usr/local/mongo4# mongo --port=27020
MongoDB shell version: 3.0.4
connecting to: 127.0.0.1:27020/test
> show dbs;    ####    ,     。
> use admin    #  ,   admin       ,    admin    。
switched to db admin
> db.auth('dba','dba')
> show dbs;
admin  0.078GB
local  0.078GB
> use test        # test      
switched to db test
> db.createUser(
     {
       user: "zjyr",
       pwd: "zjyr",
       roles: [
          { role: "read", db: "test" }    #    
       ]
     }
 )
​
> db.createUser(
     {
       user: "zjy",
       pwd: "zjy",
       roles: [
          { role: "readWrite", db: "test" }   #    
       ]
     }
 )
​
> show users;   #         

3.3テスト
上に2つのアカウントが作成されました.検証するには、検証の前提にセットが必要です.
> db.abc.insert({"a":1,"b":2})              
#    ,    ,userAdminAnyDatabase            ,         。
​
root@zhoujinyi:/usr/local/mongo4# mongo --port=27020
MongoDB shell version: 3.0.4
connecting to: 127.0.0.1:27020/test
> use test
switched to db test
> db.auth('zjy','zjy')       #    readWrite      
> db.abc.insert({"a":1,"b":2})
WriteResult({ "nInserted" : 1 })
> db.abc.insert({"a":11,"b":22})
WriteResult({ "nInserted" : 1 })
> db.abc.insert({"a":111,"b":222})
WriteResult({ "nInserted" : 1 })
> db.abc.find()
{ "_id" : ObjectId("559151a1b78649ebd8316853"), "a" : 1, "b" : 2 }
{ "_id" : ObjectId("559151cab78649ebd8316854"), "a" : 11, "b" : 22 }
{ "_id" : ObjectId("559151ceb78649ebd8316855"), "a" : 111, "b" : 222 }
> db.auth('zjyr','zjyr')       
#     read     
> db.abc.insert({"a":1111,"b":2222})  
#    
​
> db.abc.find()        
#    
{ "_id" : ObjectId("559151a1b78649ebd8316853"), "a" : 1, "b" : 2 }
{ "_id" : ObjectId("559151cab78649ebd8316854"), "a" : 11, "b" : 22 }
{ "_id" : ObjectId("559151ceb78649ebd8316855"), "a" : 111, "b" : 222 }

3.4スーパーユーザー
スーパー権限はありますか?権限を付与するだけでなく、集合を任意に操作できますか?答えは肯定的ですが、使用をお勧めしません.それはroleキャラクタがrootに設定されていることです.
> db.auth('dba','dba')
> db.createUser(
  {
    user: "test",
    pwd: "test",
    roles: [
       { role: "root", db: "admin" }      #  root  
    ]
  }
 )
> show users;   #         
{
    "_id" : "admin.dba",
    "user" : "dba",
    "db" : "admin",
    "roles" : [
        {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        }
    ]
}
{
    "_id" : "admin.test",
    "user" : "test",
    "db" : "admin",
    "roles" : [
        {
            "role" : "root",
            "db" : "admin"
        }
    ]
}
> use admin
switched to db admin
> db.auth('test','test')
> use test
switched to db test
> db.abc.insert({"a":1,"b":2})
WriteResult({ "nInserted" : 1 })
> db.abc.insert({"a":1111,"b":2222})   #    
WriteResult({ "nInserted" : 1 })
> db.abc.find()
{ "_id" : ObjectId("5591539bb78649ebd8316857"), "a" : 1, "b" : 2 }
{ "_id" : ObjectId("559153a0b78649ebd8316858"), "a" : 1111, "b" : 2222 }
> db.abc.remove({})
WriteResult({ "nRemoved" : 2 })

アカウントは現在許可が必要なデータベースの下で許可されているので、現在のデータベースの下にいなければどうなりますか?
> db
admin
> db.createUser(
  {
    user: "dxy",
    pwd: "dxy",
    roles: [
       { role: "readWrite", db: "test" },  #             , admin    test、abc    
       { role: "readWrite", db: "abc" }         
    ]
  }
 )
​
> show users;
{
    "_id" : "admin.dba",
    "user" : "dba",
    "db" : "admin",
    "roles" : [
        {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        }
    ]
}
​
> use test
switched to db test
> db.auth('dxy','dxy')          # admin      ,          ,
Error: 18 Authentication failed.
> use admin
switched to db admin            #           ,         。
> db.auth('dxy','dxy')
> use test
switched to db test
> db.abc.insert({"a":1111,"b":2222})
WriteResult({ "nInserted" : 1 })
> use abc
switched to db abc
> db.abc.insert({"a":1111,"b":2222})
WriteResult({ "nInserted" : 1 })

さらに、データベース・アカウントがデータベースに従って行われ、認証が作成される場所について説明します.
3.5管理
こんなにたくさんのアカウントを作成したのに、どうやってすべてのアカウントを表示しますか?
>  use admin
switched to db admin
> db.auth('dba','dba')
> db.system.users.find().pretty()
{
    "_id" : "admin.dba",
    "user" : "dba",
    "db" : "admin",
    "credentials" : {
        "SCRAM-SHA-1" : {
            "iterationCount" : 10000,
            "salt" : "KfDUzCOIUo7WVjFr64ZOcQ==",
            "storedKey" : "t4sPsKG2dXnZztVYj5EgdUzT9sc=",
            "serverKey" : "2vCGiq9NIc1zKqeEL6VvO4rP26A="
        }
    },
    "roles" : [
        {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        }
    ]
}
​
> db.system.users.find().count()

バックアップリストアそのロールを使用するアカウント?以前に作成したアカウントzjy:testライブラリの読み書き権限;zjyr:testライブラリ読み取り権限
root@test:~# mongodump --port=27020 -uzjyr -pzjyr --db=test -o backup 
#          
2015-06-29T11:20:04.864-0400    writing test.abc to backup/test/abc.bson
2015-06-29T11:20:04.865-0400    writing test.abc metadata to backup/test/abc.metadata.json
2015-06-29T11:20:04.866-0400    done dumping test.abc
2015-06-29T11:20:04.867-0400    writing test.system.indexes to backup/test/system.indexes.bson
root@test:~# mongorestore --port=27020 -uzjy -pzjy --db=test backup/test/  #          
2015-06-29T11:20:26.607-0400    building a list of collections to restore from backup/test/ dir
2015-06-29T11:20:26.609-0400    reading metadata file from backup/test/abc.metadata.json
2015-06-29T11:20:26.609-0400    restoring test.abc from file backup/test/abc.bson
2015-06-29T11:20:26.611-0400    error: E11000 duplicate key error index: test.abc.$_id_ dup key: { : ObjectId('559154efb78649ebd831685a') }
2015-06-29T11:20:26.611-0400    restoring indexes for collection test.abc from metadata
2015-06-29T11:20:26.612-0400    finished restoring test.abc
2015-06-29T11:20:26.612-0400    done