- 安装
- 使用
- mongod.conf
- for documentation of all options, see:
- http://docs.mongodb.org/manual/reference/configuration-options/">http://docs.mongodb.org/manual/reference/configuration-options/
- where to write logging data.
- Where and how to store data.
- engine:
- wiredTiger:
- how the process runs
- network interfaces
- operationProfiling:
- replication:
- sharding:
- auditLog:
- snmp:
- 创建账户
- 报错
- Using the XFS filesystem is strongly recommended with the WiredTiger storage engine.
- Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
- /sys/kernel/mm/transparent_hugepage/enabled is ‘always’. We suggest setting it to ‘never’
- /sys/kernel/mm/transparent_hugepage/defrag is ‘always’. We suggest setting it to ‘never’
- ERROR: child process failed, exited with 14
- ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=14)
安装
安装依赖
yum install libcurl openssl
安装 Server
点击 访问 MongoDB 下载地址,依次点击下图所示红框位置
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
rpm -ivh 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 版本,命令行工具需要单独安装
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
rpm -ivh mongodb-org-shell-5.0.6-1.el7.x86_64.rpm
#即将弃用,直接删除
rpm -e mongodb-org-shell-5.0.6-1.el7.x86_64
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
创建YUM
源,vi /etc/yum.repos.d/mongodb-org-5.0.repo
[mongodb-org-5.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/5.0/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc
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
即可。
cp ~/.mongorc.js ~/.mongoshrc.js
网上一溜的的mongo --norc
,不去加载.mongorc.js
也是醉了,完全的逃避问题,不加载就没事了吗?
基本命令
systemctl enable mongod
systemctl start mongod
systemctl restart mongod
systemctl stop mongod
数据目录
MongoDB
启动后会初始化以下目录和文件,并赋予mongod:mongod
权限:
- 默认配置文件:/etc/mongod.conf
- 数据存储目录:/var/lib/mongo
- 日志文件目录:/var/log/mongodb
- 运行文件目录:/var/run/mongodb
使用
修改配置
使用vi /etc/mongod.conf
根据需要修改,更改端口、开启授权等等: ```jsonmongod.conf
for documentation of all options, see:
http://docs.mongodb.org/manual/reference/configuration-options/
where to write logging data.
systemLog: destination: file logAppend: true path: /var/log/mongodb/mongod.log
Where and how to store data.
storage: dbPath: /var/lib/mongo journal: enabled: true
engine:
wiredTiger:
how the process runs
processManagement: fork: true # fork and run in background pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile timeZoneInfo: /usr/share/zoneinfo
network interfaces
net: port: 27017 bindIp: 127.0.0.1 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
security: authorization: enabled
operationProfiling:
replication:
sharding:
Enterprise-Only Options
auditLog:
snmp:
<a name="xWPCP"></a>
## Shell 命令
如果安装了 Shell 工具的话,直接`mongo`或`mongosh`即可打开工具
```bash
Current Mongosh Log ID: 6232f88f78db3f40f006cfa2
Connecting to: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.2.3
Using MongoDB: 5.0.6
Using Mongosh: 1.2.3
For mongosh info see: https://docs.mongodb.com/mongodb-shell/
test>
常用命令
show dbs #显示数据库列表
show collections #显示当前数据库中的集合(类似关系数据库中的表)
show users #显示用户
use <db name> #切换当前数据库,如果数据库不存在则创建数据库。
db.help() #显示数据库操作命令,里面有很多的命令
db.foo.help() #显示集合操作命令,同样有很多的命令,foo指的是当前数据库下,一个叫foo的集合,并非真正意义上的命令
db.foo.find() #对于当前数据库中的foo集合进行数据查找(由于没有条件,会列出所有数据)
db.foo.find( { a : 1 } ) #对于当前数据库中的foo集合进行查找,条件是数据中有一个属性叫a,且a的值为1
db.dropDatabase() #删除当前使用数据库
db.cloneDatabase("127.0.0.1") #将指定机器上的数据库的数据克隆到当前数据库
db.copyDatabase("mydb", "temp", "127.0.0.1") #将本机的mydb的数据复制到temp数据库中
db.repairDatabase() #修复当前数据库
db.getName() #查看当前使用的数据库,也可以直接用db
db.stats() #显示当前db状态
db.version() #当前db版本
db.getMongo() #查看当前db的链接机器地址
db.serverStatus() #查看数据库服务器的状态
创建账户
MongoDB 安装完成后,数据库admin
中没有任何用户账户,MongoDB 向从本地主机发起的连接提供全面的数据库管理权限;因此配置 MongoDB 新实例时,首先需要创建用户管理员和数据库管理员:用户管理员可在 admin 和其他数据库中创建用户账户,数据库管理员将其作为管理数据库、集群、复制和 MongoDB 其他方面的超级用户
db.createUser
db.createUser(
{
user: "$USERNAME",
pwd: "$PASSWROD",
roles: [
{ role: "$ROLE_NAME", db: "$DBNAME" }
]
}
)
mongosh
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:所有操作权限 | 内部 |
登录
重启后重新登录,需要授权登录
use admin
db.auth("admin","12345678")
或者直接进入 shell 时:mongosh -u "admin" -p "12345678" --authenticationDatabase admin
报错
Using the XFS filesystem is strongly recommended with the WiredTiger storage engine.
See http://dochub.mongodb.org/core/prodnotes-filesystem
系统使用的是 EXT4 文件系统,官方建议:WiredTiger 存储引擎使用 XFS 文件系统,以避免在使用 EXT4 与 WiredTiger 时可能发生的性能问题;如果不能重新安装系统忽略即可,不影响正常使用
MMAPV1:MongoDB 的原始存储引擎,在第一个版本中引入,从 4.0 版本开始被弃用 WiredTiger:在 3.0 版本中引入插件式引擎,从 3.2 版本开始变成了默认的存储引擎
Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
/sys/kernel/mm/transparent_hugepage/enabled is ‘always’. We suggest setting it to ‘never’
echo "never" > /sys/kernel/mm/transparent_hugepage/enabled
/sys/kernel/mm/transparent_hugepage/defrag is ‘always’. We suggest setting it to ‘never’
echo "never" > /sys/kernel/mm/transparent_hugepage/defrag
ERROR: child process failed, exited with 14
rm -rf /var/lib/mongo/mongod.lock
/usr/bin/mongod --repair --dbpath=/var/lib/mongo
ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=14)
用户mongod
没有对必需文件的写权限,导致数据库服务不能启动
chmod 777 /etc/mongod.conf
chown -R mongod:mongod /var/lib/mongo
chown -R mongod:mongod /var/log/mongodb
chown mongod:mongod /tmp/mongodb*.sock