在前面的教程中,介绍了如何去启动一个 MongoDB 服务,下面将介绍怎样使用 MongoDB shell 来连接 MongoDB 服务器。
MongoDB shell 就是 MongoDB 安装主目录下,bin 目录中的 mongo 二进制命令。
运行 mongo --help 命令查看 mongo 命令的帮助信息,mongo 命令用法如下:
mongo [options] [db address] [file names (ending in .js)]
其中:
(1)db address 可以是:
foo 本地计算机上的 foo 数据库 192.168.0.5/foo 192.168.0.5 机器上的 foo 数据库 192.168.0.5:9999/foo 192.168.0.5 机器 9999 端口上的 foo 数据库 mongodb://192.168.0.5:9999/foo 也可以使用 URI 连接字符串
(2)file names:指要运行的文件列表。文件必须以 .js 结尾,除非指定 --shell,否则将在运行后退出
(3)options 选项可取值如下:
--ipv6 启用 IPv6 支持(默认禁用) --host arg 要连接到的服务器 --port arg 要连接的端口 -h [ --help ] 显示帮助信息 --version 显示版本信息 --verbose 开启输出详细模式 --shell 执行文件后运行 shell --nodb 在启动时不连接到 mongod - 预计没有 “db address” 参数 --norc 不会在启动时运行 “.mongorc.js” 文件 --quiet 开启安静模式 --eval arg 执行 javascript --apiVersion arg 设置 MongoDB API 版本 --apiStrict 禁用 MongoDB 版本 API 中未包含的所有功能 --apiDeprecationErrors 禁用 MongoDB 版本 API 中弃用的所有功能 --disableJavaScriptJIT 禁用 Javascript JIT 及时编译器 --enableJavaScriptJIT 启用 Javascript JIT 及时编译器 --disableJavaScriptProtection 允许自动 JavaScript 函数编组 --retryWrites 在暂时性网络错误时自动重试写入操作 --disableImplicitSessions 不会自动创建和使用隐式会话 --jsHeapLimitMB arg 设置 js 作用域的堆大小限制 --idleSessionTimeout arg (=0) 如果 Shell 会话已空闲这么多秒,则终止该会话
AWS IAM 选项:
--awsIamSessionToken arg 用于临时凭证的 AWS 会话令牌
TLS 选项:
--tls 所有连接均使用 TLS --tlsCertificateKeyFile arg 用于 TLS 的 PEM 证书/密钥文件 --tlsCertificateKeyFilePassword arg 用于 TLS 的 PEM 文件中密钥的密码 --tlsCAFile arg TLS 证书授权文件 --tlsCRLFile arg TLS 的证书吊销列表文件 --tlsAllowInvalidHostnames 允许连接到主机名不匹配的服务器 --tlsAllowInvalidCertificates 允许连接到具有无效证书的服务器 --tlsFIPSMode 启动时激活 FIPS 140-2 模式 --tlsCertificateSelector arg 系统存储中的 TLS 证书 --tlsDisabledProtocols arg 要禁用的 TLS 协议的逗号分隔列表 [TLS1_0,TLS1_1,TLS1_2,TLS1_3]
身份验证选项:
-u [ --username ] arg 用于身份验证的用户名 -p [ --password ] arg 用于身份验证的密码 --authenticationDatabase arg 用户源(默认为 dbname) --authenticationMechanism arg 身份验证机制 --gssapiServiceName arg (=mongodb) 使用 GSSAPI/Kerberos 进行身份验证时要使用的服务名称 --gssapiHostName arg 用于 GSSAPI/Kerberos 身份验证的远程主机名
FLE AWS 选项:
--awsAccessKeyId arg 用于 FLE Amazon KMS 的 AWS 访问密钥 --awsSecretAccessKey arg 用于FLE Amazon KMS的AWS密钥 --awsSessionToken arg 可选AWS会话令牌ID --keyVaultNamespace arg 数据库.集合存储加密后的FLE参数 --kmsURL arg 测试参数以覆盖KMS的URL
示例:
(1)连接到本地 MongoDB 服务
$ mongo
(2)连接到本地 MongoDB 服务,用户名为 test,密码为 aaaaaa
$ mongo -u test -p aaaaaa
(3)连接到远程 192.168.50.22 机器的 MongoDB 服务,用户名为 test,密码为 aaaaaa
$ mongo --host 192.168.50.22 --port 27017 -u test -p aaaaaa
MongoDB 标准的 URI 连接语法:
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
说明:
mongodb:// 必须指定,是固定的协议格式。
username:password@ 可选,如果设置了,在连接数据库服务器之后,驱动都会尝试登录这个数据库
host1 必须指定,指定至少一个 host, host1 是这个 URI 唯一要填写的,它指定了要连接服务器的地址。如果要连接复制集,请指定多个主机地址。
port1 可选,指定端口,如果不指定,默认为 27017。
/database 可选,如果指定 username:password@,连接并验证登录指定数据库。若不指定,默认打开 test 数据库。
?options 可选,连接选项。如果不使用 /database,则前面需要加上 /。所有连接选项都是键值对 name=value,键值对之间通过 & 或 ;(分号)隔开。标准的连接格式包含了多个选项(options),如下表所示:
(1)使用默认端口来连接 MongoDB 的服务,例如:
mongodb://localhost
通过 shell 连接 MongoDB 服务:
C:UsersAdministrator> mongo MongoDB shell version v5.0.20 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("bc598392-c493-4a0e-b773-fd114db86243") } MongoDB server version: 5.0.20 ... >
(2)使用用户名和密码连接到 MongoDB 服务器,你必须使用 “username:password@hostname/dbname” 格式,username 为用户名,password 为密码。使用用户 admin, 密码 123456 连接到本地的 MongoDB 服务上。例如:
C:UsersAdministrator> mongo mongodb://admin:123456@localhost/
(3)使用用户名和密码连接登录到指定数据库,格式如下:
C:UsersAdministrator> mongo mongodb://admin:123456@localhost/test
连接本地数据库服务器,端口是默认的,格式如下:
mongodb://localhost
使用用户名fred,密码foobar登录localhost的admin数据库,格式如下:
mongodb://fred:foobar@localhost
使用用户名fred,密码foobar登录localhost的baz数据库,格式如下:
mongodb://fred:foobar@localhost/baz
连接 replica pair, 服务器1 为 example1.com,服务器2 为 example2,格式如下:
mongodb://example1.com:27017,example2.com:27017
连接 replica set 三台服务器 (端口 27017, 27018, 和27019),格式如下:
mongodb://localhost,localhost:27018,localhost:27019
连接 replica set 三台服务器, 写入操作应用在主服务器 并且分布查询到从服务器,格式如下:
mongodb://host1,host2,host3/?slaveOk=true
直接连接第一个服务器,无论是replica set一部分或者主服务器或者从服务器,格式如下:
mongodb://host1,host2,host3/?connect=direct;slaveOk=true
安全模式连接到 localhost:
mongodb://localhost/?safe=true
以安全模式连接到 replica set,并且等待至少两个复制服务器成功写入,超时时间设置为2秒。格式如下:
mongodb://host1,host2,host3/?safe=true;w=2;wtimeoutMS=2000