暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MongoDB Enterprise4.4.2部署和原生TDE加密配置

云和数据的彼端 2021-04-22
827

MongoDB Enterprise4.4.2部署和原生TDE加密配置

 

一、MogoDB4.4.2企业版部署

 

1. 下载企业版MongoDB安装RPM

--https://www.mongodb.com/download-center/enterprise

https://www.mongodb.com/download-center/enterprise/releases

 

社区版:http://mirrors.aliyun.com/mongodb/yum/redhat/6Server/mongodb-org/

 

2. 安装MogoDB4.4.2企业版

检查依赖包

rpm -qa|grep   net-snmp

1、如果没有需要安装依赖包

net-snmp-5.7.2-43.el7.x86_64.rpm

net-snmp-agent-libs-5.7.2-43.el7.x86_64.rpm

如果能够联网则可以直接

yum -y install net-snmp

 

 

安装MongoDB RPM

安装顺序如下

rpm  -ivh  mongodb-enterprise-server-4.4.2-1.el6.x86_64.rpm

rpm  -ivh  mongodb-enterprise-mongos-4.4.2-1.el6.x86_64.rpm

rpm -ivh  mongodb-enterprise-shell-4.4.2-1.el6.x86_64.rpm

 rpm -ivh  mongodb-enterprise-cryptd-4.4.2-1.el6.x86_64.rpm

 

3. 启动并登录MongoDB

1、配置MongoDB

ls /etc/mongod.conf

**********************************************************

# mongod.conf

 

# for documentation of all options, see:

#   http://docs.mongodb.org/manual/reference/configuration-options/

 

# where to write logging data.

systemLog:

  destination: file

  logAppend: true

  path: /opt/mongodb/log/mongod.log

 

# Where and how to store data.

storage:

  dbPath: /opt/mongodb/data

  journal:

    enabled: true

#  engine:

#  wiredTiger:

 

# how the process runs

processManagement:

  fork: true  # fork and run in background

  pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile

  timeZoneInfo: /usr/share/zoneinfo

 

# network interfaces

net:

  port: 27017

  bindIp: 0.0.0.0  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.

 

 

#security:

 

#operationProfiling:

 

#replication:

 

#sharding:

 

## Enterprise-Only Options

 

#auditLog:

 

#snmp:

 

 

security:

  enableEncryption: true

  encryptionKeyFile: /opt/mongodb/key/mongodb-keyfile

**********************************************************

4. 常用操作

设置MongoDB的管理员密码

创建数据库

use admin

db.createUser({ user: "admin", pwd: "admin", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })

##验证登录,如果返回1,则证明密码生效

> db.auth("admin", "admin")

1

创建一个dbtest,并分配账号和密码****

#登录管理员

> use admin

> db.auth("admin","admin")

#创建test

> use test

> db.createUser({ user: "test", pwd: "test", roles: [{ role: "dbOwner", db: "test" }] })

 

switched to db test

> db.firstCollection.save({"name":"yzh","age":"25"})

WriteResult({ "nInserted" : 1 })

> db.firstCollection.find({name:"yzh"})

{ "_id" : ObjectId("5de12c9c771bf721cc7a0b07"), "name" : "yzh", "age" : "25" }

>

 

忘记密码的处理方式

use dbname

db.auth("username","password")

Error: Authentication failed.

0

提示:密码错误,已经忘记密码

 

1.注释掉认证配置

vi /etc/mongod.conf

将以下两行注释掉

 

security:

  authorization: enabled

#security:

#authorization: enabled

2.修改密码

此时使用库就不需要进行账户,密码验证了

 

mongo --host IP

use dbname

db.changeUserPassword("username","password")

修改配置文件/etc/mongod.conf取消注释

重启

/etc/init.d/mongod reload

 

3.登录验证

 

mongo --host IP

use dbname

db.auth("username","new-password")

1

提示1,证明新密码修改成功。

 

----------------日常维护-------------------------------

--启动MongDB

mongod -f /etc/mongod.conf

--关闭MongDB

 mongod  -f  /etc/mongod.conf --shutdown

本地连接登录

mongo

 

查看数据库版本

db.version()

 

查看数据库状态

db.stats()

查看所有数据库

show dbs

查看当前数据库

db

db.getName()

 

查看当前数据库的所有集合(表的概念)

show collections

 

基本管理命令

1show users; // 查看当前库下的用户

2db.dropUser("eggadmin") // 删除用户

3db.updateUser("admin",{pwd:"password"}); // 修改用户密码

4db.auth("admin","password"); // 密码认证 (数据库设置了密码,要认证后才能连接成功)

5show tables // 列出该库下所有表

 

 

 

------------数据操作---------------------------------

MongoDB 创建数据库

 

use DATABASE_NAME

如果数据库不存在,则创建数据库,否则切换到指定数据库

 

use jm

 

创建集合

 

方法1

> use banana;

 switched to db banana        #相当于use banana ,不同的是(从mysql关系型数据库角度解释),在mongodbbanana允许未创建情况下use banana,在创建数据表后,即创建了banana,否则banana不会创建

 > db.createCollection('a'); #创建集合a,a相当于mysql中的数据表

 { "ok" : 1 }                # 提示创建成功

> db.createCollection('b');

{ "ok" : 1 }

 > show collections;

 a

 b

 

方法2

> db.c.insert({username:"mongodb"})   #c集合插入数据

WriteResult({ "nInserted" : 1 })   ->成功写入文档

 

> show collections

a

b

c

> db.c.find()   #显示数据集合中所有数据,当前仅一条

{ "_id" : ObjectId("5743c9a9bf72d9f7b524713d"), "username" : "mongodb" }

> db.log.find().pretty();   # 格式化打印结果

{

    "_id" : ObjectId("5743c9a9bf72d9f7b524713d"),

    "uid" : 0,

    "name" : "mongodb",

    "age" : 6,

    "date" : ISODate("2018-01-03T08:37:00.214Z")

}

 

> db.c.drop()   #删除c集合

true

> db.c.find()   #c集合置空



 

批量插入数据

 > for(i=0;i<10000;i++){ db.log.insert({"uid":i,"name":"mongodb","age":6,"date":new Date()}); }   #批量插入10000个数据

 

 #查询集合中的记录数

 > db.log.find()

说明:默认每页显示20条记录,当显示不下的的情况下,可以用it迭代命令查询下一页数据

#设置每页显示数据的大小:每页显示50条记录

> DBQuery.shellBatchSize=50;

#查看第1条记录

> db.log.findOne()

#查询总的记录数

> db.log.count()

#删除集合中所有记录

> db.log.remove({})

#集合中数据的原始大小

> db.log.dataSize()

#集合中索引数据的原始大小

> db.log.totalIndexSize()

#集合中索引+数据压缩存储之后的大小

> db.log.totalSize()

#集合中数据压缩存储的大小

> db.log.storageSize()

 

mongoexport / mongoimport

 

本机备份恢复

备份

mongodump -h 127.0.0.1  -d  test  -o /opt/mongodb/backup

恢复

mongorestore-h 127.0.0.1:27017  -d  test    /opt/mongodb/backup/test

 

异机备份恢复

源库主机192.168.88.201

mongodump -h 127.0.0.1  -d  jm  -o /opt/mbackup

scp   -r jm/   root@192.168.70.21:/opt/mongodb/backup

目标库主机192.168.70.21

目标库可以不用重建被恢复的数据库名

mongorestore -h 127.0.0.1:27017  -d  jm    /opt/mongodb/backup/jm

 

二、MongDB企业版TDE配置

Configure Encryption

Local Key Management

 

--配置文件里配置加密参数

vim  /etc/mongod.conf

security:

  enableEncryption: true

  encryptionKeyFile: /opt/mongodb/key/mongodb-keyfile

 

创建密钥文件

openssl rand -base64 32 > /opt/mongodb/key/mongodb-keyfile

--修改密钥文件权限

chmod 600 /opt/mongodb/key/mongodb-keyfile

 

 

To use the key file, start mongod with the following options:

 

--enableEncryption,

--encryptionKeyFile <path to keyfile>,

 

mongod --enableEncryption --encryptionKeyFile  mongodb-keyfile

 

 

--关闭MongDB

 mongod  -f  /etc/mongod.conf --shutdown

 

--启动MongDB

mongod -f /etc/mongod.conf

 

 

[initandlisten] Encryption key manager initialized with key file: <path to keyfile>

 

 

 

 

要检查是否已在数据库中成功启用加密,可以使用以下命令检查

db.serverCmdLineOpts().parsed.security

 

 

也开通通过strings来查看数据文件

 

配置加密前

 


 

加密后

 



 

 

注意:MongoDB 3.6.8-4.x无法加密现有数据库。您必须关闭实例,清除数据文件目录,配置实例以进行加密,然后启动实例。

 


文章转载自云和数据的彼端,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论