MongoDB入门
程序员文章站
2022-05-08 14:54:31
...
MongoDB入门
什么是mongoDB?
是一种面向文档的数据库管理系统,它是介于一个关系型数据库和非关系型数据库的之间的一种产品,MongoDb的功能丰富,它是一种支持类似JSON和BSON数据格式,既可以支持简单的数据格式,也可以存储复杂的数据类型.MongoDB最大的特点是它支持的查询语言非常强大,并且还支持数据建立索引.总体来说,mongDB是一款应用相当广泛的nosql型数据库
MongoDB的安装
1.下载地址是
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.4.9.tgz
2.下载下来后解压缩
[aaa@qq.com mongodb]# tar -zxvf mongodb-linux-x86_64-3.4.9.tgz
3.进入mongodb根目录创建db和logs
mkdir db
mkdir logs
4.进入bin目录配置配置文件,在,里面可能没有配置文件,创建即可
vim mongodb.conf
5.配置文件内容
dbpath=/opt/mongodb/db #这个是自己的文件目录地址
logpath=/opt/mongodb/logs/mongodb.log #这个也是自己的文件目录地址
port=27017
fork=true
nohttpinterface=true
6.启动mongodb
./mongod -f mongodb.conf
启动成功标识
7.客户端访问
./mongo
访问成功界面
8.切换用户命令
use 用户名
#退出客户端访问必须在admin用户下
use admin
db.shutdownServer()
安全管理
上面我们所做的所有的操作都没有涉及到用户,我们在用 Oracle、MySQL 或者 MSSQL 时都有用户名密码需要登录才可以操作,MongoDB 中当然也有,但是需要我们手动添加。在添加之前,我们先来说说 MongoDB 中用户管理的几个特点:
- MongoDB 中的账号是在某一个库里边进行设置的,我们在哪一个库里边进行设置,就要在哪一个库里边进行验证。
- 创建用户时,我们需要指定用户名、用户密码和用户角色,用户角色表示了该用户的权限。
创建用户
给admin创建一个用户;
use admin
db.createUser({user:"root",pwd:"123",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
user 表示用户名,pwd 表示密码,role 表示角色,db 表示这个用户应用在哪个数据库上。用户的角色,有如下几种(参考资料):
角色名 | 备注 |
---|---|
Read | 允许用户读取指定数据库 |
readWrite | 允许用户读写指定数据库 |
dbAdmin | 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile |
userAdmin | 允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户 |
clusterAdmin | 只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。 |
readAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的读权限 |
readWriteAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的读写权限 |
userAdminAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限 |
dbAdminAnyDatabase | 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。 |
root | 只在admin数据库中可用。超级账号,超级权限 |
创建用户成功后需要关闭mongodb服务,以security的方式启动.然后进入.查看dbs
mongod -f /opt/mongodb/bin/mongodb.conf --auth
./mongo
show dbs
此时我们看到没有权限
此时我们需要先进入到 admin 数据库中,然后授权,操作如下:
use admin
db.auth("root","123")
auth 方法执行结果返回 1 表示认证成功。然后再去执行 show dbs 就可以看到预期结果了。此时我再在 sang 库下创建一个只读用户,如下:
use sang
db.createUser({user:"readuser",pwd:"123",roles:[{role:"read",db:"sang"}]})
创建成功之后,再按照上面的流程进入到 sang 库中,使用 readuser 用户进行认证,认证成功之后一切我们就可以在 sang 库中执行查询操作了,步骤如下:
use sang
db.auth("readuser","123")
做完这两步之后再执行查询操作就没有任何问题了,但是此时如果执行插入操作会提示没有权限,那我们可以创建一个有读写功能的用户执行相应的操作,这里就不再赘述。