MongoDB 的数据库安全和 GridFS

设置 MongoDB 数据库的用户名和密码

/etc/xxx.conf

编辑 mongodb 配置文件启用用户验证

vim /etc/mongodb.conf
# IP
bind_ip = 0.0.0.0
# 端口
port = 27017

修改以下安全配置

# Turn on/off security.  Off is currently the default
#noauth = true
#auth = true

去掉 #auth=true 前的注释 #

auth = true

重启 mongodb 服务

service mongodb restart

使用 mongo shell 连接服务器

# 连接服务器
mongo

# 连接到 admin 数据库
use admin

# 创建管理员账号,用户名和密码可以任意,角色为 `root`
db.createUser({user:'root',pwd:'123456',roles:['root']})

# 登录
db.auth('root','123456')

登录后在 admin 数据库

user admin

db.auth('root','hello')

show collections
> system.users
> system.version

# 显示用户信息
db.system.users.find().pretty()

为特定的某个数据库设计用户名和密码

# 创建数据库
use hr

# 创建用户
db.createUser({
  user:'hr_user',
  pwd:'123',
  roles:[{db:'hr',role:'dbOwner'}]
  })

# 显示用户
show users

连接数据库

mongo 127.0.0.1:27017/demo -u demo -p
# 获得 mongo shell 更多信息
mongo --help

数据建模

  • 文档中嵌入子文档
  • 文档之间 引用$lookup 类似关系数据库中的表连接)

MongoDB 一个文档不能超过 16M(一个文档不要嵌套过大)

MongoDB GridFS(网格文件系统)

用于存储大文件(超过 16M),文件(默认)会被切成 255k 的块存储,存储在两个集合中,一个存储文件的元信息,另一个存储文件的数据

# 往数据库 myfile 中上传(put)文件
mongofiles -d myfile put 文件路径

# 显示数据库 myfile 中的文件
mongofiles -d myfile list

文件存储在两个集合中

  • fs.files 文件的元数据信息(文件名、大小、块大小、日期、_id)
  • fs.chunks 文件的内容(files_id, 内容,格式)

mongofiles 上传到远程数据库

mongofiles -h ip -d db_name -u user -p password put file_path
mongofiles -h ip -d db_name -u user -p password list

mongofiles 工具是命令行的开发工具

上一篇:scrapy框架之递归解析和post请求


下一篇:python PIL图像如何将图像保存到缓冲区,以便以后使用?