[MongoDBの詳細なチュートリアルでは、まず、MacはMongoDBのインストール
、セカンド】[MongoDBの詳細なチュートリアルをMongoDBの基本的な操作
[MongoDBの詳細なチュートリアル]第三に、高度なクエリ
[MongoDBの詳細なチュートリアル] 4、Pythonの操作にMongoDB
[MongoDBの詳細なチュートリアル] 5 、MongoDBのデータベース管理
1、データベースのセキュリティ
データベースのユーザー名とパスワードを追加します。
1.1、管理者アカウントとパスワードを作成
- パスワードデータベースなしでログイン
- 作成(またはに切り替え)管理ライブラリ
- 管理者アカウントとパスワードを作成します。
- 管理者アカウントとパスワードの確認
例:
# 1
cbowendeMacBook-Pro:~ cbowen$ mongo
MongoDB shell version v4.0.9
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
...
>
# 2
> use admin
switched to db admin
# 3
> db.createUser({user:'admin',pwd:'123',roles:["root"]})
Successfully added user: { "user" : "admin", "roles" : [ "root" ] }
# 4
> db.auth('admin','123')
1
「役割」:[「ルート」は]スーパー管理者権限を割り当てることが意図されます
1.2、ユーザーのニーズを認証するサービス状態を設定します
通常のサービスは、ユーザーが作成されている場合でも、情報を確認するために、ユーザを必要としません開始。
ここでは、最初のデータベースサービスを停止し、そしてサービスは、ユーザーのモードを確認する必要が開始する必要があります。
- 閉じるサービス
- 再起動は、サービスを再起動し、認証を必要とするように設定します
# 终端中输入:
mongod --dbpath data --logpath log/mongod.g --logappend --auth
通常--authと文の後ろに開きます。
(あなたがサービスに加入する必要がある場合は、Windowsシステムの場合、あなたは再結合をアンインストールする必要があります)
1.3、ユーザーアカウントとパスワードを作成します
- データベース管理者に接続するには
- データベースを作成するアカウントに切り替え、ユーザーアカウントとパスワードを作成します
- ライブラリーへのログインに切り替える前に、その後、着陸
例:
# 1、以管理员身份连接数据库
cbowendeMacBook-Pro:~ cbowen$ mongo
MongoDB shell version v4.0.9
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("5316d74a-2148-43e9-a9e8-f501cc1d9781") }
MongoDB server version: 4.0.9
> use admin # 验证账号前要先切换到admin库
switched to db admin
> db.auth('admin','123')
1
# 2、切换到要创建账号的库,并创建账号和密码,以及设置权限roles
> use mymongo
switched to db mymongo
> db.createUser({user:'mymongo',pwd:'123',roles:[{role:'dbOwner',db:'mymongo'}]})
Successfully added user: {
"user" : "mymongo",
"roles" : [
{
"role" : "dbOwner",
"db" : "mymongo"
}
]
}
# 3、退出管理员账号,用刚创建的用户登陆
> exit
bye
cbowendeMacBook-Pro:~ cbowen$ mongo
MongoDB shell version v4.0.9
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("47cb777a-d000-41be-a61c-1041faa31dc0") }
MongoDB server version: 4.0.9
> use mymongobu # 先切换数据库
switched to db mymongobu
> db.auth('mymongobu','123') # 再验证账号
1
注:
1、ロール:[{役割: 'のdbowner'、DB 'mymongo'}]のみ有効なアカウントデータベースmymongoのために意図されています。
図2に示すように、ユーザ情報は、ユーザ情報、ライブラリの前、その後、ライブラリに切り替える最初時間も着陸、保存された作成されたユーザ情報を作成するために、スイッチの前にどのデータベース、データベース内のデータとして格納されています検証が成功しています。あなたがmymongoユーザーを作成した場合、管理者は、ライブラリ内にある、あなたが最初のと同じ効果を検証した後、検証データベース管理者に切り替える必要があり、mymongoアカウントがmymongoライブラリに対してのみ有効です。
1.4、パスワードを忘れた/パスワード変更
スーパー管理者は、にログインするか、ユーザモードを認証することなく、データベースに接続するためにした後、
ユーザー名を変更し、次のコマンドを使用します。
db.changeUserPassword('用户名','新密码');
2、マスターサーバーから
プライマリサーバの冗長性などのサーバから、データの可用性を向上させ、データのセキュリティを確保するため、ハードウェア障害やサービスの中断からデータを回復。
プライマリサーバがダウンした後、サーバーは、読書のための責任があるから、マスターサーバーを作成するための責任があり、サーバが自動的にプライマリサーバから切り替えられます。
2.1、それぞれ、サーバからプライマリデータを格納するサーバディレクトリの作成
LordSlave MongoDBのディレクトリ内のフォルダを作成し、LordSlaveで藩主とスレーブのフォルダを作成します。
(MongoDBのディレクトリは、/ usr / localを照会して行くためにファインダーを押してシフト+コマンド+ Gで入力する必要があります。)
2.2、サービスを開始
文法
# 终端中输入 (IP地址、集群名称要一致):
mongod --bind_ip IP地址 --port 端口1 --dbpath 主服务器目录 --replSet 集群名称
mongod --bind_ip IP地址 --port 端口2 --dbpath 从服务器目录 --replSet 集群名称
例
mongod --bind_ip 127.0.0.1 --port 27017 --dbpath /usr/local/MongoDB/LordSlave/lord --replSet rps
mongod --bind_ip 127.0.0.1 --port 27018 --dbpath /usr/local/MongoDB/LordSlave/slave --replSet rps
ターミナルウィンドウのオープンサービスが終了していません。
2.3、およびマスタサーバなどのサーバのいずれかに接続
ポート27017を着陸、新しいターミナルウィンドウで次のコマンドを入力します。
mongo --host 127.0.0.1 --port 27017
結果を初期化して表示する「rs.initiate()」コマンドを使用します。
> rs.initiate()
{
"info2" : "no configuration specified. Using a default configuration for the set",
"me" : "127.0.0.1:27017",
"ok" : 1,
"operationTime" : Timestamp(1572401660, 1),
"$clusterTime" : {
"clusterTime" : Timestamp(1572401660, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}
2.4は、追加するマスターサーバー上の/別のサーバーから削除します
プライマリサーバの電流入力端子の設定を続行します。
rs.add('127.0.0.1:27018')
結果の表示:
rps:PRIMARY> rs.add('127.0.0.1:27018')
{
"ok" : 1,
"operationTime" : Timestamp(1572402066, 1),
"$clusterTime" : {
"clusterTime" : Timestamp(1572402066, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}
「rs.status()」クエリ・サーバのステータスを使用します。
サーバーから削除するために使用されます
rs.remove('127.0.0.1:27018')
2.5、およびサーバーからの着陸を活性化させます
新ターミナル内の別のサーバーに着陸:
mongo --host 127.0.0.01 --port 27018
サーバから「rs.slaveOk()」の活性化を使用します
rps:SECONDARY> rs.slaveOk()
この時点で、設定を完了するために、メインサーバから、あなたはから複数のサーバを設定することができます。
3、バックアップと復元
3.1、データベースのバックアップ
構文:
mongodump -h dbhost -d dbname -o dbdirectory
# 如果账号有密码的话加上 -u 和 -p 属性
mongodump -h dbhost -u user -p pass -d dbdirectory
- -h:サーバーアドレスは、あなたはまた、ポート番号を指定することができます
- -d:バックアップするデータベース名
- -o:バックアップデータの保存場所は、このディレクトリは、バックからのデータが含まれています
- -u:ユーザー名、引用符で
- -p:パスワード、引用符で
例:
- まず、オープンデータベースサービス
- バックアップフォルダのディレクトリは/ usr / local /のMongoDB / BUを作成します。
- 入力端子:
mongodump -h 127.0.0.1:27017 -d mymongo -o /usr/local/MongoDB/bu
- 次のメッセージは、バックアップの成功を表示されます
cbowendeMacBook-Pro:~ cbowen$ mongodump -h 127.0.0.1:27017 -d mymongo -o /usr/local/MongoDB/bu
2019-10-29T15:43:55.109+0800 writing mymongo.singer to
2019-10-29T15:43:55.109+0800 writing mymongo.students to
2019-10-29T15:43:55.114+0800 done dumping mymongo.singer (15 documents)
2019-10-29T15:43:55.115+0800 done dumping mymongo.students (9 documents)
- バックアップファイル、次のように、システムが自動的にフォルダと同じ名前のデータベース・ファイルを作成しますmymongo
3.2、データベースの復元
構文:
mongorestore -h dbhost -d dbname --dir dbdirectory
# 如果账号有密码的话加上 -u 和 -p 属性
mongorestore -h dbhost -d dbname -u user -p pass --dir dbdirectory
- -h:サーバーアドレス
- -d:データベースインスタンスをリストアする必要がある(新しい名前を使用している場合、それはライブラリを再作成します)
- --dir:バックアップデータの場所は、--dirキーワードを省略することができ、直接対処書きます。
(自動的にライブラリフォルダのバックアップと同じ名前のファイルで指定したバックアップディレクトリには、以下の具体的な例を見て、パスにこのフォルダを追加するには、復元、バックアップが作成されます。)
例:
- データベースサービスを開きます。
ターミナルでは
mongorestore -h 127.0.0.1 -d mymongobu --dir /usr/local/MongoDB/bu/mymongo
注:
バックアップのアドレスでは、/ usr / local /のMongoDB / BUである
mymongoバックアップフォルダは、あなたが戻って追加する必要がある場合、ライブラリファイルが自動的に作成されたものと同じ名前を持つ/復元mymongo- 次のメッセージが成功を復元表示されます
cbowendeMacBook-Pro:~ cbowen$ mongorestore -h 127.0.0.1 -d mymongobu --dir /usr/local/MongoDB/bu/mymongo
2019-10-29T16:03:32.386+0800 the --db and --collection args should only be used when restoring from a BSON file. Other uses are deprecated and will not exist in the future; use --nsInclude instead
2019-10-29T16:03:32.386+0800 building a list of collections to restore from /usr/local/MongoDB/bu/mymongo dir
2019-10-29T16:03:32.390+0800 reading metadata for mymongobu.singer from /usr/local/MongoDB/bu/mymongo/singer.metadata.json
2019-10-29T16:03:32.390+0800 reading metadata for mymongobu.students from /usr/local/MongoDB/bu/mymongo/students.metadata.json
2019-10-29T16:03:32.440+0800 restoring mymongobu.singer from /usr/local/MongoDB/bu/mymongo/singer.bson
2019-10-29T16:03:32.498+0800 no indexes to restore
2019-10-29T16:03:32.498+0800 finished restoring mymongobu.singer (15 documents)
2019-10-29T16:03:32.498+0800 restoring mymongobu.students from /usr/local/MongoDB/bu/mymongo/students.bson
2019-10-29T16:03:32.500+0800 restoring indexes for collection mymongobu.students from metadata
2019-10-29T16:03:32.538+0800 finished restoring mymongobu.students (9 documents)
2019-10-29T16:03:32.538+0800 done
3.3、バックアップのセットと復元
# 备份单个集合
mongodump -h dbhost -d dbname -c collectionname -o dbdirectory
# 还原单个集合
mongorestore -h dbhost -d dbname --dir dbdirectory
ここでことを、ときdbdirectoryバックアップディレクトリが、.bsonのdbdirectory減少は、特定のファイルに割り当てる際に留意すべきです。
例:
# 备份集合
mongodump -h 127.0.0.1:27017 -d mymongo -c singer -o /usr/local/MongoDB/bu/collection
#还原集合
mongorestore -h 127.0.0.1:27017 -d mymongobu --dir /usr/local/MongoDB/bu/collection/mymongo/singer.bson