MongoDB 入门
安装
安装依赖
1 | yum install libcurl openssl |
安装 Server
点击 访问 MongoDB 下载地址,依次点击下图所示红框位置
1 | wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/5.0/x86_64/RPMS/mongodb-org-server-5.0.6-1.el7.x86_64.rpm |
Created symlink from /etc/systemd/system/multi-user.target.wants/mongod.service to /usr/lib/systemd/system/mongod.service.
安装 Shell
mogo
Linux 版本,命令行工具需要单独安装
1 | wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/5.0/x86_64/RPMS/mongodb-org-shell-5.0.6-1.el7.x86_64.rpm |
Warning: the “mongo” shell has been superseded by “mongosh”,
which delivers improved usability and compatibility.The “mongo” shell has been deprecated and will be removed in
an upcoming release.
For installation instructions, see
https://docs.mongodb.com/mongodb-shell/install/
卸载安装mongosh
即可解决报错
mongosh
创建 YUM
源,vi /etc/yum.repos.d/mongodb-org-5.0.repo
1 | [mongodb-org-5.0] |
1 | yum install -y mongodb-mongosh |
Warning: Found ~/.mongorc.js, but not ~/.mongoshrc.js. ~/.mongorc.js will not be loaded.
You may want to copy or rename ~/.mongorc.js to ~/.mongoshrc.js.
新的 mongosh
在启动时读取 .mongoshrc.js
文件,传统的 mongo
读取 .mongorc.js
文件;只需要把 .mongorc.js
重命名或者复制一份改名为 .mongoshrc.js
即可。
1 | cp ~/.mongorc.js ~/.mongoshrc.js |
网上一溜的的mongo --norc
,不去加载.mongorc.js
也是醉了,完全的逃避问题,不加载就没事了吗?
源码安装:
1 | wget -c https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.4.19.tgz |
使用 vi/etc/profile.d/mongodb.sh
命令添加全局变量:
1 | exportPATH=$PATH:/usr/local/mongodb/bin |
基本命令
1 | systemctl enable mongod |
数据目录
MongoDB
启动后会初始化以下目录和文件,并赋予mongod:mongod
权限:
- 默认配置文件:/etc/mongod.conf
- 数据存储目录:/var/lib/mongo
- 日志文件目录:/var/log/mongodb
- 运行文件目录:/var/run/mongodb
使用
修改配置
使用vi /etc/mongod.conf
根据需要修改,更改端口、开启授权等等:
1 | # mongod.conf |
Shell 命令
如果安装了 Shell 工具的话,直接 mongo
或 mongosh
即可打开工具
1 | Current Mongosh Log ID: 6232f88f78db3f40f006cfa2 |
常用命令
1 | show dbs #显示数据库列表 |
创建账户
MongoDB 安装完成后,数据库admin
中没有任何用户账户,MongoDB 向从本地主机发起的连接提供全面的数据库管理权限;因此配置 MongoDB 新实例时,首先需要创建用户管理员和数据库管理员:用户管理员可在 admin 和其他数据库中创建用户账户,数据库管理员将其作为管理数据库、集群、复制和 MongoDB 其他方面的超级用户
db.createUser
1
2
3
4
5
6
7
8
9db.createUser(
{
user: "$USERNAME",
pwd: "$PASSWROD",
roles: [
{ role: "$ROLE_NAME", db: "$DBNAME" }
]
}
)1
2
3
4
5
6
7
8
9
10
11mongosh
test> use admin
switched to db admin
db.createUser(
{
user: "admin",
pwd: "12345678",
roles: [
{ role: "userAdminAnyDatabase", db: "admin" }
]
}{ ok: 1 }
预定义角色
| 详细角色 | 角色 | 数据库 |
| —- | —- | —- |
| read:用户可以读取当前数据库的数据
readWrite:用户可以读写当前数据库的数据 | 数据库用户 | 所有数据库 |
| dbAdmin:管理员用户但不能对用户和角色管理授权
dbOwner:数据库所有者可进行任何管理任务
userAdmin:可以管理当前数据的用户和角色 | 数据库管理 | 所有数据库 |
| clusterAdmin:集群所有管理权限
clusterManager:集群管理和监控
clusterMonitor:集群监控,只读
hostManager:监控和管理服务器 | 集群管理 | admin 数据库 |
| backup:数据库的备份权限
restore:数据库的恢复权限 | 备份恢复 | admin 数据库 |
| readAnyDatabase:读取所有数据库
readWriteAnyDatabase:读写所有数据库
userAdminAnyDatabase:所有数据库的 userAdmin 权限
dbAdminAnyDatabase:所有数据库的 dbAdmin 权限 | 所有数据库 | admin 数据库 |
| root:超级用户 | 超级 | admin 数据库 |
| __system:所有操作权限 | 内部 | |登录
重启后重新登录,需要授权登录
1 | use admin |
或者直接进入 shell 时:mongosh -u "admin" -p "12345678" --authenticationDatabase admin