mongodbの基本概念、mongoshellスクリプトのプログラミング、ユーザーアカウントの構成、アクセス制御

3361 ワード

1、Nosql 
「sqlだけでなく」、非リレーショナル・データベース・ストレージ構造.次のタイプがあります.
  • ドキュメントストレージデータ構造:mongodb
  • キー/値格納構造:redis
  • 列ストレージ構造:habase
  • 図記憶構造:virtuoso
  • 2、mongodbデータモデル
    mongodbは、従来のsqlデータベースのテーブルに相当する、同じまたは類似の用途のドキュメントのセットであるコレクションを使用してデータをグループ化します.
    mongodbでは、ドキュメントは単一のエンティティのデータを識別し、セットには1つ以上の関連ドキュメントが含まれます.
    mongodbでドキュメントを表すレコードはBSONで、軽量級のバイナリjsonです.
    3、計画データモデル
  • 文書参照パターン化データ
  • を用いる.
    データの正規化とは、ドキュメントとコレクションを整理することによって、冗長性と依存性を最小限に抑えることを意味します.
    適用:メインオブジェクトとサブオブジェクトは1対多の関係
  • 埋め込みドキュメントを使用してデータを逆パターン化
  • データの逆パターン化とは、プライマリ・オブジェクト・ドキュメントに直接埋め込むべきサブオブジェクトを特定することです.
    適用:プライマリオブジェクトとサブオブジェクトの間には、1対1またはサブオブジェクトが少なく、頻繁に更新されません.
    4、mongody shellスクリプトプログラミング(javascriptを使用)
    主に以下の3つの方法で実現される.
  • -eval実行JavaScript式
  • mongodb shellを起動するtestデータベースに接続し、そのデータベースに対してdbを実行するコマンドを入力.getCollections()
    mongo test -eval "printjson(db.getCollections())"
  • mongodb shellでload(script_path)
  • を使用
    例:mongodb shellを起動した後、入力コマンドmongodb shellを開き、次のように入力します.
    load("E:/code/hour02/shell_script.js")
  • mongoで実行するJavaScriptファイル
  • を指定
    これは最も一般的な方法で、mongodyを起動した後、直接mongoコマンドを使用して実行します.
    mongo shell_script.js

    5、アカウントとアクセス制御の構成
  • ユーザーアカウントの作成(4.4.7バージョン)
  • mongo = new Mongo("localhost");
    db = mongo.getDB("test")
    db.createUser({
    	user:"testAdmin",
    	pwd:"test",
    	roles:["dbAdmin"]
    });
    
    // testUser   admin   ,  read  ,       test readWrite   
    db = mongo.getDB("admin")
    db.createUser
    ({
    	user:"testUser",
    	pwd:"test",
    	roles:
    	[
    		{role:"readWrite",db:"test"},
    		"read"
    	]
    });

    割り当て可能なデータロール:read readAnyDatabase readWrite readWriteAnyDatabase dbAdmin dbAdminAnyDatabase
    clusterAdmin   userAdmin   userAdminAnyDatabase
  • は、ユーザ
  • をリストする.
    データベースの下にユーザーのリストを表示し、コマンドを直接入力します.
    use admin
    show users

    またはJavaScriptスクリプトファイルを使用します.
    
    mongo = new Mongo("localhost");
    db = mongo.getDB("admin");
    cur = db.system.users.find();
    printjson(cur.toArray());
    
  • ユーザ
  • を削除する.
    use admin
    db,removeUser("testAdmin")
  • ユーザー管理者アカウント
  • を作成
    use admin
    db.createUser({
    	user:"userAdmin",
    	pwd:"test",
    	roles:["userAdminAnyDatabase"]
    });

    ユーザー管理者アカウントを作成したら、-authを使用してmongodbサーバを再起動します.また、プロファイルでauth構成を指定することもできます.
    >mongod -dbpath "E:/Program Files/MongoDB/Server/4.0/data/
    db" -auth

    またはプロファイルmongod_config_auth.txtでauth=trueを設定
    verbose = true
    port = 27017
    dbpath = E:\Program Files\MongoDB\Server\4.0\data\db\
    auth = true
    maxConns = 10

    mongodb shellでデータベースにアクセスする場合は、認証が必要です.
    >use admin
    >db,auth("useradmin","test")

    またはmongodb shellを起動すると認証します.
    mongo -username "useradmin" -password "test"
  • データベース管理者アカウント
  • を作成する
    mongo = new Mongo("localhost");
    db = mongo.getDB("admin");
    db.createUser({
    	user:"dbaAdmin",
    	pwd:"test",
    	roles:[
    	"readWriteAnyDatabase",
    	"dbAdminAnyDatabase",
    	"clusterAdmin"]
    });

    同様に認証します.