在 MacOS 中安装和配置 MongoDB

本文将介绍如何在 MacOS 系统中安装和配置 MongoDB,以及如何使用一些基本的命令操作数据库。

发布于

MongoDB 是一种流行的开源文档型数据库,它使用 JSON 格式存储数据,支持灵活的查询和索引。MongoDB 适用于处理大量非结构化或半结构化的数据,例如社交媒体、电子商务、物联网等领域。

本文将介绍如何在 MacOS 系统中安装和配置 MongoDB,以及如何使用一些基本的命令操作数据库。

先决条件

在开始安装和配置 MongoDB 之前,您需要满足以下条件:

  • 您的 MacOS 系统版本至少为 10.13 (High Sierra) 或更高。
  • 您已经安装了 Homebrew,这是一个 MacOS 上的软件包管理器,可以方便地安装和更新各种软件。
  • 您已经安装了 Xcode,这是一个 MacOS 上的集成开发环境,包含了一些编译和调试工具。

安装 MongoDB

要在 MacOS 上安装 MongoDB,您可以使用 Homebrew 命令行工具。请按照以下步骤操作:

  1. 打开终端应用程序,输入以下命令,以更新 Homebrew 的软件包列表:

    brew update
    
  2. 输入以下命令,以安装 MongoDB 的最新稳定版本:

    brew install mongodb-community
    

    这个命令会自动下载和安装 MongoDB 的二进制文件,以及一些依赖的库和工具。安装完成后,您可以在 /usr/local/Cellar/mongodb-community 目录下找到 MongoDB 的相关文件。

  3. 输入以下命令,以启动 MongoDB 的后台服务:

    brew services start mongodb-community
    

    这个命令会在后台运行 MongoDB 的服务进程,您可以随时停止或重启这个服务。MongoDB 的服务会监听本地的 27017 端口,等待客户端的连接请求。

配置 MongoDB

要配置 MongoDB,您可以修改 /usr/local/etc/mongod.conf 文件,这是 MongoDB 的默认配置文件。您可以使用任何文本编辑器打开这个文件,修改其中的参数。例如,您可以修改以下参数:

  • storage.dbPath:这个参数指定了 MongoDB 存储数据的目录,默认为 /usr/local/var/mongodb。您可以根据您的磁盘空间和性能需求,修改这个参数为其他目录。
  • net.bindIp:这个参数指定了 MongoDB 服务绑定的 IP 地址,默认为 127.0.0.1,即只允许本地的连接请求。如果您想让 MongoDB 服务可以被其他机器访问,您可以修改这个参数为 0.0.0.0,或者指定一个具体的 IP 地址。
  • security.authorization:这个参数指定了 MongoDB 服务是否启用用户认证,默认为 disabled,即不需要用户名和密码就可以连接数据库。如果您想增加数据库的安全性,您可以修改这个参数为 enabled,并创建一个管理员用户和一个普通用户,分别用于管理数据库和访问数据。

修改配置文件后,您需要重启 MongoDB 的服务,以使配置生效。您可以使用以下命令重启服务:

brew services restart mongodb-community

设置初始密码

如果您启用了 MongoDB 的用户认证,您需要设置一个初始密码,以便于登录数据库。请按照以下步骤操作:

  1. 打开终端应用程序,输入以下命令,以连接到本地的 MongoDB 服务:

    mongo
    

    这个命令会启动一个交互式的 shell,您可以在其中输入各种 MongoDB 的命令。

  2. 输入以下命令,以切换到 admin 数据库:

    use admin
    

    这个命令会将当前的数据库切换为 admin,这是 MongoDB 的默认的管理员数据库,用于存储用户和角色的信息。

  3. 输入以下命令,以创建一个管理员用户:

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

    这个命令会在 admin 数据库中创建一个名为 admin,密码为 admin123,角色为 root 的用户。root 角色是 MongoDB 中最高的权限,可以对任何数据库进行任何操作。您可以根据您的需要,修改用户名和密码,但请记住这些信息,以便于以后登录。

  4. 输入以下命令,以退出当前的 shell:

    exit
    

    这个命令会结束当前的 shell 会话,返回到终端。

  5. 输入以下命令,以重新连接到 MongoDB 服务,并使用刚刚创建的管理员用户登录:

    mongo -u admin -p admin123 --authenticationDatabase admin
    

    这个命令会使用 -u-p 参数指定用户名和密码,以及 --authenticationDatabase 参数指定认证数据库。如果登录成功,您会看到类似以下的输出:

    MongoDB shell version v4.4.6
    connecting to: mongodb://127.0.0.1:27017/?authSource=admin&compressors=disabled&gssapiServiceName=mongodb
    Implicit session: session { "id" : UUID("f9c4f3a3-8c4b-4c0d-9f8c-9c7a4f4f3a3a") }
    MongoDB server version: 4.4.6
    ---
    The server generated these startup warnings when booting:
            2024-01-15T23:32:50.123+0800: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem
            2024-01-15T23:32:51.123+0800: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
            2024-01-15T23:32:51.123+0800: You are running this process as the root user, which is not recommended
            2024-01-15T23:32:51.123+0800: This server is bound to localhost. Remote systems will be unable to connect to this server. Start the server with --bind_ip <address> to specify which IP addresses it should serve responses from, or with --bind_ip_all to bind to all interfaces. If this behavior is desired, start the server with --bind_ip 127.0.0.1 to disable this warning
    ---
    ---
            Enable MongoDB's free cloud-based monitoring service, which will then receive and display
            metrics about your deployment (disk utilization, CPU, operation statistics, etc).
    
            The monitoring data will be available on a MongoDB website with a unique URL accessible to you
            and anyone you share the URL with. MongoDB may use this information to make product
            improvements and to suggest MongoDB products and deployment options to you.
    
            To enable free monitoring, run the following command: db.enableFreeMonitoring()
            To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
    ---
    >
    
  6. 输入以下命令,以切换到您想要使用的数据库,例如 test

    use test
    

    这个命令会将当前的数据库切换为 test,这是 MongoDB 的默认的测试数据库,您可以在其中创建和操作数据。

  7. 输入以下命令,以创建一个普通用户:

    db.createUser({
      user: "test",
      pwd: "test123",
      roles: ["readWrite", "dbAdmin"]
    })
    

    这个命令会在 test 数据库中创建一个名为 test,密码为 test123,角色为 readWritedbAdmin 的用户。readWrite 角色可以对数据进行读写操作,dbAdmin 角色可以对数据库进行管理操作。您可以根据您的需要,修改用户名和密码,以及分配不同的角色。

  8. 输入以下命令,以退出当前的 shell:

    exit
    

    这个命令会结束当前的 shell 会话,返回到终端。

  9. 输入以下命令,以重新连接到 MongoDB 服务,并使用刚刚创建的普通用户登录:

    mongo -u test -p test123 --authenticationDatabase test
    

    这个命令会使用 -u-p 参数指定用户名和密码,以及 --authenticationDatabase 参数指定认证数据库。如果登录成功,您会看到类似以下的输出:

    MongoDB shell version v4.4.6
    connecting to: mongodb://127.0.0.1:27017/?authSource=test&compressors=disabled&gssapiServiceName=mongodb
    Implicit session: session { "id" : UUID("f9c4f3a3-8c4b-4c0d-9f8c-9c7a4f4f3a3a") }
    MongoDB server version: 4.4.6
    ---
    The server generated these startup warnings when booting:
            2024-01-15T23:32:50.123+0800: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem
            2024-01-15T23:32:51.123+0800: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
            2024-01-15T23:32:51.123+0800: You are running this process as the root user, which is not recommended
            2024-01-15T23:32:51.123+0800: This server is bound to localhost. Remote systems will be unable to connect to this server. Start the server with --bind_ip <address> to specify which IP addresses it should serve responses from, or with --bind_ip_all to bind to all interfaces. If this behavior is desired, start the server with --bind_ip 127.0.0.1 to disable this warning
    ---
    ---
            Enable MongoDB's free cloud-based monitoring service, which will then receive and display
            metrics about your deployment (disk utilization, CPU, operation statistics, etc).
    
            The monitoring data will be available on a MongoDB website with a unique URL accessible to you
            and anyone you share the URL with. MongoDB may use this information to make product
            improvements and to suggest MongoDB products and deployment options to you.
    
            To enable free monitoring, run the following command: db.enableFreeMonitoring()
            To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
    ---
    test>
    

操作 MongoDB

要操作 MongoDB,您可以使用 MongoDB 的 shell 命令,在终端中输入各种操作数据库的命令。以下是一些常用的命令:

  • show dbs:这个命令会显示当前 MongoDB 服务中存在的所有数据库的名称和大小。
  • use <database>:这个命令会切换到指定的数据库,如果数据库不存在,会自动创建一个新的数据库。
  • show collections:这个命令会显示当前数据库中存在的所有集合的名称,集合是 MongoDB 中存储数据的基本单位,类似于关系型数据库中的表。
  • db.createCollection(<name>):这个命令会在当前数据库中创建一个名为 <name> 的集合,如果集合已经存在,会报错。
  • db.<collection>.insert(<document>):这个命令会向指定的集合中插入一个文档,文档是 MongoDB 中存储数据的基本单位,类似于关系型数据库中的行,文档使用 JSON 格式表示,可以包含任意的键值对。
  • db.<collection>.find(<query>):这个命令会从指定的集合中查询符合条件的文档,<query> 参数是一个 JSON 对象,用于指定查询的条件,如果省略,会返回所有的文档。
  • db.<collection>.update(<query>, <update>):这个命令会更新指定的集合中符合条件的文档,<query> 参数是一个 JSON 对象,用于指定查询的条件,<update> 参数是一个 JSON 对象,用于指定更新的内容,可以使用一些特殊的操作符,如 $set$inc$push 等。
  • db.<collection>.remove(<query>):这个命令会删除指定的集合中符合条件的文档,<query> 参数是一个 JSON 对象,用于指定查询的条件,如果省略,会删除所有的文档。
  • db.<collection>.drop():这个命令会删除指定的集合,以及集合中的所有文档和索引。
  • db.dropDatabase():这个命令会删除当前的数据库,以及数据库中的所有集合和文档。

结论

本文介绍了如何在 MacOS 系统中安装和配置 MongoDB,以及如何使用一些基本的命令操作数据库。MongoDB 是一种灵活和强大的文档型数据库,可以应用于各种场景,您可以通过学习更多的 MongoDB 的特性和功能,来提高您的数据库技能和水平。