跳到主要内容
版本:Next

MongoDB

MongoDB 是一个 开源分布式文件存储数据库系统,它被用于 NoSQL 数据库 等场景。基于 Docker 架构,内置可以通过本地浏览器访问的可视化管理工具 MongoDB Compass,满足企业微服务架构的设计思想。

gui

准备

在参阅本文档使用 MongoDB 时,需要确保如下几点:

  • 应用是基于 Websoft9 安装的

  • 应用的用途符合 SSPL 开源许可协议

  • 应用具备访问条件:配置域名服务器安全组开启网外端口

入门指南

初始化

Websoft9 控制台安装 MongoDB 后,通过 "我的应用" 查看应用详情,在 "访问" 标签页中获取登录信息。

命令行连接

  1. 进入 MongoDB 容器中,运行 MongoDB Shell 命令

    $ mongosh admin -u root -p YOURPASSWORD
    MongoDB shell version v5.0.10
    connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
    ...
  2. 分别列出默认数据库和用户

    # 列出所有数据库
    show dbs

    # 切换到 admin 数据库,列出所有用户
    use admin
    show users

图形化 Web 端

Websoft9 提供了一个基于 Web 访问的 MongoDB Compass 应用。

命令速查

下面列出最常用的 MongoDB 命令供用户参考:

显示、创建和切换数据库


> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB

# 创建test数据库(如果不存在test数据库,就会自动创建它)
> use test
switched to db test

# 显示当前数据库
> db
test

# 显示当前所有用户数据
> show users

#3 插入数据到数据库
> db.test.insert({"name":"company"})
WriteResult({ "nInserted" : 1 })

删除数据库

> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
test 0.000GB
websoft9 0.000GB

> use test
switched to db test
> use test
> db.dropDatabase()
{ "dropped" : "test", "ok" : 1 }
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
websoft9 0.000GB

创建管理员账号

> mongo
> use admin
switched to db admin
> db.createUser( { user: "webs_admin", pwd: "websoft9", roles: ["userAdminAnyDatabase"] } )
Successfully added user: { "user" : "webs_admin", "roles" : [ "userAdminAnyDatabase" ] }


# 显示账号
> show users
{
"_id" : "admin.webs_admin",
"user" : "webs_admin",
"db" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}

修改管理员密码

> db = db.getSiblingDB('admin')
admin
> db.changeUserPassword("root", "NEWPASSWORD")
> exit

配置选项

  • 配置文件(已挂载):/etc/mongod.conf

  • 开启公网访问:修改配置文件中的字段 bindIp: 0.0.0.0

  • 服务端命令:mongod

  • 客户端命令:mongo

  • 命令:mongod 是 MongoDB 的服务端管理命令,mongo 是用于访问 MongoDB 服务的客户端

  • 无身份验证访问(√):参考 访问控制 设置

  • 默认数据库 admin:全局管理权限的数据库用户必须存储在这个 admin 数据库中

管理维护

  • 关闭 MongoDB 访问认证:Websoft9 控制台修改编排文件,注释 MONGO_INITDB_ 开头的环境变量,重建应用

  • 忘记管理员密码:关闭 MongoDB 访问认证后,进入容器运行重置命令,然后再复原

    mongo
    > db = db.getSiblingDB('admin')
    admin
    > db.changeUserPassword("root", "NEWPASSWORD")
  • 备份:mongodumpmongorestore 是自带的 MongoDB 备份与恢复工具(MongoDB Backup Methods

     # 备份
    mongodump --authenticationDatabase admin --username root --password PASSWORD -d DATABASE_NAME -h localhost

    # 恢复
    mongorestore --authenticationDatabase admin --username root --password PASSWORD PATH_TO_BACKUP_FILE

故障

MongoDB compass 无法连接?

端口,bindIP 和账户认证等连接字段是否满足条件