ブログ

割とコンピュータよりの情報をお届けします。

MongoDBの周辺スクリプトの作成の続き

MongoDB(特に4.0.0のWindows用)の設定関係のファイルを引き続き作っていた。

サンプル作成が異常に面倒である。
今回もファイルサイズが大きすぎて本文に埋め込めなくなってしまった。

環境変数の読み込み用ファイルenv.bat
(cmdのショートカットのリンク先にC:\Windows\System32\cmd.exe /k "C:\mongodb-4.0.0\env.bat"などと設定して使うのも)

@echo off
set "PATH=%~dp0;%PATH%"
SET PATH=%PATH%;C:\mongodb-4.0.0\bin

setlocal enabledelayedexpansion
pushd "%~dp0"

popd
endlocal

 

MongoDBをスタートするスクリプト mongodb_start.cmd

mongod --config "C:\mongodb-4.0.0\mongod.cfg"

 

MongoDBをWindowsサービスにするスクリプト mongodb_install_service.cmd

set service_name=MONGODB_TAKEME_APP
mongod --install --config "C:\mongodb-4.0.0\mongod.cfg" --serviceName %service_name% --serviceDisplayName "MONGODB FOR TAKEME_APP" --serviceDescription "MongoDB 4.0.0 for TakeMe Applications."
net start %service_name%

 

MongoDBをWindowsサービスから削除する mongodb_remove_service.cmd

set service_name=MONGODB_TAKEME_APP
net stop %service_name%
mongod --remove --serviceName "MONGODB_TAKEME_APP"

 

MongoDBの設定ファイル mongod.cfg
ユーザ入れかえ mongodb_change_username.cmd
(username.jsに新しいユーザ名usernameOld.jsに古いユーザ名を入れて実行)

set service_name=MONGODB_TAKEME_APP
mongo localhost:27017 Init0.js
net stop %service_name%
net start %service_name%
mongo localhost:27017 Init1.js

管理ユーザで実行しないと使えないけど参考のファイルなど添付しておきます(Search consoleで警告が出たので中止)。

 

特にユーザ交換スクリプトは以下のようにInit0.jsを実行する。

conn = new Mongo("localhost:27017");
db  = conn.getDB("admin");
load('usernameOld.js');

db.auth(username, password);

var lstUsers = db.getUsers();
var users = [];
for (var i = 0; i < lstUsers.length; i++) {
  users.push(lstUsers[i].user);
}

db = conn.getDB('TAKEME_APP');
db.auth(username, password);
for (var i = 0; i <users.length; i++) {
  db.dropUser(users[i]);
}

db = conn.getDB('admin');
db.auth(username, password);
for (var i = 0; i <users.length; i++) {
  db.dropUser(users[i]);
}

 

設定を行う本体スクリプトInit1.js

conn = new Mongo("localhost:27017");
db  = conn.getDB("admin");
load('username.js');

db.createUser(
  {
    user: username,
    pwd: password,
    roles: [
      {
        "role": "root",
        "db" : "admin"
      },
      {
        "role": "userAdmin",
        "db" : "admin"
      },
      {
        "role": "hostManager",
        "db" : "admin"
      }
    ]
  }
);

db.auth(username, password);

var lstUsers = db.getUsers();
var users = [];
for (var i = 0; i < lstUsers.length; i++) {
  if (lstUsers[i].user !== username)
    users.push(lstUsers[i].user);
}

for (var i = 0; i <users.length; i++) {
  db.dropUser(users[i]);
}


db = conn.getDB('TAKEME_APP');
for (var i = 0; i < users.length; i++) {
  db.dropUser(users[i]);
}

db.createUser(
  {
    user: username,
    pwd: password,
    roles: [
      {
        "role": "readWrite",
        "db" : "TAKEME_APP"
      }
    ]
  }
);


注意はmongo shellでJavaScriptを実行する場合,conn = new Mongo("localhost:27017"); db = conn.getDB("admin");などを使ってdbを指定してこないといけない。use admin;などでdbが指定できるコンソールと若干異なる。

2018/07/22 コンピュータ   TakeMe
< 前の記事     一覧へ     後の記事 >

コメント送信フォーム


※ Eメールは公開されません
Loading...
 画像の文字を入力してください