linux yum安装mongodb
mongodb简介MongoDB 是一个基于分布式文件存储的数据库,由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。MongoDB 在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。Mon
mongodb简介
MongoDB 是一个基于分布式文件存储的数据库,由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成,MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
MongoDB 官网地址:https://www.mongodb.com/
MongoDB 官方英文文档:https://docs.mongodb.com/manual/
MongoDB 各平台下载地址:https://www.mongodb.com/try/download/community
mongodb安装
以在CentOS7中安装mongodb4.4为例。
参考文档:
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/
https://mirrors.tuna.tsinghua.edu.cn/help/mongodb/
配置国内清华yum源
cat > /etc/yum.repos.d/mongodb.repo <<'EOF'
[mongodb-org]
name=MongoDB Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mongodb/yum/el$releasever/
gpgcheck=0
enabled=1
EOF
官方yum源(建议使用国内yum源)
cat > /etc/yum.repos.d/mongodb-org-4.4.repo <<'EOF'
[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
EOF
安装mongodb
yum install -y mongodb-org
或者安装指定版本
yum install -y mongodb-org-4.4.4 mongodb-org-server-4.4.4 mongodb-org-shell-4.4.4 mongodb-org-mongos-4.4.4 mongodb-org-tools-4.4.4
查看mongodb版本
mongo --version
MongoDB社区版包含以下官方支持的软件包:
包名 | 描述 |
---|---|
mongodb-org | 一个元数据包,将自动安装下面列出的四个组件软件包 |
mongodb-org-server | 包含mongod守护进程和相关的配置以及init脚本 |
mongodb-org-mongos | 包含mongos守护进程 |
mongodb-org-shell | 包含mongo shell命令行解释器 |
mongodb-org-tools | 其他工具 |
默认情况下,MongoDB使用mongod
用户帐户运行,并使用以下默认目录:
/var/lib/mongo
(数据目录)/var/log/mongodb
(日志目录)/etc/mongod.conf
(配置目录)
启动mongodb服务并设为随系统启动
systemctl enable --now mongod
mongodb默认监听27017端口
ss -antlp | grep 27017
mongodb主进程为mongod
ps -aux | grep mongod
或者使用docker快速部署mongodb:
docker run -d --name mongo \
--restart=always \
-e TZ=Asia/Shanghai \
-e MONGO_INITDB_ROOT_USERNAME=root \
-e MONGO_INITDB_ROOT_PASSWORD=123456 \
-p 27017:27017 \
-v mongo_data:/data/db \
mongo
mongodb基本操作
连接到mongodb
mongo
查看所有数据库
> show dbs;
admin 0.000GB
config 0.000GB
local 0.000GB
切换到admin数据库
> use admin;
新建数据库同时切换到该数据库,空数据库默认无法使用show dbs
查看到:
> use testdb;
查看当前所在数据库
> db;
在testdb数据库中创建一个集合
db.createCollection("users")
通过向一个集合中直接插入一条数据来创建这个集合
db.myuser.insert({"name":"yutao", age:24})
查看当前库里的集合(表)
> show tables;
> show collections;
再次查看创建的数据库
> show dbs;
admin 0.000GB
config 0.000GB
local 0.000GB
testdb 0.000GB
删除集合
db.users.drop()
删除数据库,需要先进到库里
> db.dropDatabase()
启用远程连接
mongodb配置文件中默认监听127.0.0.1地址,修改绑定地址,允许远程连接:
# cat /etc/mongod.conf | grep bindIp
bindIp: 0.0.0.0
重新启动mongodb服务
systemctl restart mongod
远程连接mongodb
mongo 192.168.92.20:27017
启用认证
不需要认证的远程连接方式具有很大的安全风险,所以一般远程连接都采用认证的方式。Mongo 安装好后,authorization默认是 disabled 的,修改配置文件启用认证,然后重启mongodb服务:
# cat /etc/mongod.conf |grep security -A1
security:
authorization: enabled
要想启用认证,必须先创建一个用户管理员账号,并且该用户拥有 userAdmin 或 userAdminAnyDatabase 角色,这个账号专门用于创建用户,包括给这些用户赋予不同的角色,并且可以针对不同的数据库赋予不同的角色。
连接到mongo shell 中,在 admin 数据库中添加一个具有 userAdminAnyDatabase 角色以及readWriteAnyDatabase 角色的用户:
use admin
db.createUser(
{
user: "useradmin",
pwd: "admin@123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)
使用用户认证机制连接 Mongo 可以用两种方式:
- 在连接 Mongo 时,传入用户的认证信息和已有认证权限的数据库
- 先连接 Mongo, 之后切换到已有认证权限的数据库,使用 db.auth(“user_name”, “password”) 进行认证。
方式1
mongo --port 27017 -u "useradmin" -p "admin@123" --authenticationDatabase "admin"
方式2
mongo --port 27017
use admin
db.auth("useradmin", "admin@123" )
为某个数据库创建用户,用户名为user1,密码为pass123,授予readWrite角色,获得testdb数据库的读写权限
db.createUser({
'user': 'user1',
'pwd': 'pass123',
'roles': [{
'role': 'readWrite',
'db': 'testdb'
}]
})
更新用户密码及权限:更新user1用户,密码为pass321。获得testdb和newdb数据库的读取权限
db.updateUser(
"user1",
{
pwd: 'pass321',
customData: {
title: "Senior Manager"
},
roles: [{
role: "readWrite",
db: "testdb"
}, {
role: "readWrite",
db: "newdb"
}]
}
)
更新用户权限,增加readWriteAnyDatabase权限
db.grantRolesToUser(
"useradmin",
[ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
)
说明:
- db.updateUser() 更新用户权限,覆盖原有权限
- db.grantRolesToUser() 为用户追加权限,保留原有权限
删除用户权限
db.revokeRolesFromUser("user1", [{role:"readWriteAnyDatabase", db:"testdb"}])
删除用户
db.dropUser("user1")
查看全局所有用户
use admin
db.system.users.find().pretty()
查看当前库下的用户
use test
show users
system.users集合保存的就是创建的用户账号信息。
use admin
db.getCollection('system.users').find({})
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)