C++
编写的非关系型数据库,为WEB
应用提供可扩展的高性能数据库存储解决方案。MongoDB
是最想关系型数据库的非关系型数据库,具备关系型数据的查询方式。json
的bson
格式,可以存储非常复杂的数据类型。优势:
适用存储的数据:
在使用MongoDB
前我们首先需要安装一下MongoDB
,所以我们必须到官网下载一下MongoDB
,下载地址如下:
https://www.mongodb.com/download-center/community/releases
因为笔者是要部署在阿里云服务器上,所以选择了下面这个版本,读者可以按需下载:
完成下载后,将其放到服务器上,以笔者为例,我将文件上传到/app/soft/
这个文件夹下,然后进行解压
tar -zxvf mongodb-linux-x86_64-rhel62-4.4.18.tgz
为了方便使用,我们将解压后的文件夹重命名为mongoDB
mv mongodb-linux-x86_64-rhel62-4.4.18 mongoDB
然后在进入mongoDB
文件夹,创建数据目录
和日志目录
:
cd mongoDB/
mkdir -p ./data/db
mkdir -p ./log
完成后的文件结构如下图所示:
然后在mongoDB
根目录创建mongodb.conf
这个配置文件,进行数据库目录和日志目录的配置
vim mongodb.conf
内容如下,可以看到systemLog
的path
执行日志位置,storage
的dbPath
即我们刚刚数据目录
systemLog:
# 日志目录
destination: file
path: "/app/soft/mongoDB/log/mongodb.log"
logAppend: true
storage:
# 数据存储文件配置
dbPath: "/app/soft/mongoDB/data/db"
journal:
enabled: true
processManagement:
fork: true
net:
bindIp: 0.0.0.0
port: 27017
到此我们的MongoDB
差不多安装完成了,我们不妨启动测试一下,首先进入MongoDB
的bin
目录运行mongod
文件,命令如下
cd bin/
./mongod -f /app/soft/mongoDB/mongodb.conf
如果输出下方所示内容,则说明安装成功了
The server generated these startup warnings when booting:
2023-02-10T13:44:09.421+08:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem
2023-02-10T13:44:10.525+08:00: You are running this process as the root user, which is not recommended
2023-02-10T13:44:10.525+08:00: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never'
---
---
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()
---
>
为了方便后续的使用,我们不妨对MongoDB
配置环境变量,所以我们必须使用vim
编辑一下profile
文件:
vim /etc/profile
添加下面这段内容,可以看到PATH
为MongoDB
的bin
目录路径
export PATH=$PATH:/app/soft/mongoDB/bin
配置完成后,使用下面这条命令使其生效
source /etc/profile
为了保证数据库安全,我们必须开启权限认证模式,所以我们需要再次登录MongoDB
,使用admin
数据库,创建一个管理员账号,如下所示,使用use
命令切换数据库(如果数据库不存在则会创建)
。
完成后使用db.createUser
创建一个名为root
管理员用户,可以看到笔者让这个名为root
的用户角色为root
。
一旦成功后则会输出Successfully added user
。
> use admin
switched to db admin
> db.createUser({user:"root",pwd:"xxxxxx",roles:[{role:"root",db:"admin"}]})
此时我们在配置文件中开启认证,即在mongodb.conf
添加下面这段配置
security:
authorization: enabled
然后我们就可以以账户密码的方式直接登录mongoDB
,由于我们已经为MongoDB
配置了环境变量,所以我们可以在任意位置使用如下命令进行登录:
mongo admin -u root -p xxxxxx
我们不妨使用show users
查看一下当前数据库的用户,如下所示,可以看到我们刚刚的root用户,并且加密方式采用SCRAM-SHA-1
、SCRAM-SHA-256
。
> show users;
{
"_id" : "admin.root",
"userId" : UUID("xxxxxx-584a-4041-a02c-134c274473cc"),
"user" : "root",
"db" : "admin",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
为了进一步测试功能的可用性,我们不妨创建一个accesslog
的数据库,如下所示,使用use
创建accesslog
。再使用createUser
为accesslog
创建一个名为accesslog
的用户,角色为readWrite
即具备读写权限的角色。
> use accesslog
switched to db accesslog
> db.createUser({
user: 'accesslog', //用户名
pwd: 'xxxxxx', //密码
roles:[{
role: 'readWrite', //角色
db: 'accesslog' //数据库
}]
})
更多角色
1. 数据库用户角色:read、readWrite
2. 数据库管理角色:dbAdmin、dbOwner、userAdmin
3. 集群管理角色(admin):clusterAdmin、clusterManager、clusterMonitor、hostManager
4. 备份恢复角色(admin):backup、restore
5. 所有数据库角色(admin): readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、 dbAdminAnyDatabase
6. 超级用户角色(admin):root
关于MongoDB
的增删改查,可以参考下面这篇文章,写的比较详细了。
MongoDB快速入门,掌握这些刚刚好!
完成后我们尝试使用本地数据库终端连接一下数据库,以笔者为例,笔者使用管理员账号登录,输入连接信息后,点击连接测试
可以看到连接成功了,就说明可以进行正常连接,自此我们就可以连接MongoDB
进行下一步工作了
打开database
,可以看到笔者之前创建了两个数据库。
为了演示我们不妨创建一个名为log
的数据库,如下图点击新建一个database
,起名为log
完成后我们就可以看到databases
中就会显示我们刚刚创建的log
数据库。
我们希望能够存储用户登录日志,所以我们在这个log
数据库中创建一个userLog
的collection(这个collection我们可以理解为MongoDB的数据表)
点击后输出collection
名称。
都完成创建之后,我们对着log
数据库点击新建SQL
编辑器即可开始操作数据库了
我们的键入下面这条SQL
尝试进行插入操作。
db.userLog.insert({'id':'001','name':'xiaoming'})
如果看到console输出下面这样一段话就说明插入成功了。
我们不妨使用命令进行查询一下,输入find
命令:
db.userLog.find();
可以看到,查询结果输出了我们刚刚插入的数据
当然MongoDB
也支持条件查询,如下图所示,感兴趣的读者可以看看:
MongoDB超详细教程(保姆级)
MongoDB快速入门,掌握这些刚刚好!
实战 | MongoDB的安装配置
MongoDB超详细教程(保姆级)