聆听 沉淀 传播 … 关注微信公众号【架构技术之美】,了解更多技术和学习资料
Mongo 相关文章
标题 | 文章连接 |
---|---|
Windows 环境下安装 MongoDB | https://blog.csdn.net/chenlixiao007/article/details/107968119 |
Mongodb 配置文件详解 | 编写中 |
文章目录
一、演示环境
- Linux CentOS 7
- mongodb-linux-x86_64-rhel70-4.0.21.tgz
二、安装包下载
三、软件安装和启动
3.1 将下载好的安装包上传到Linux服务器,并解压
tar -zxvf mongodb-linux-x86_64-rhel70-4.0.21.tgz
3.2 将解压后的目录移动到/usr/local
目录下,并将目录改名为mongodb
mv mongodb-linux-x86_64-rhel70-4.0.21 /usr/local/mongodb
3.3 进入mongodb目录,并创建文件夹data
,在data文件夹下,再创建db文件夹
(用于存放数据库数据)和log文件夹
(存放mongo日志);然后为其设置可读写权限。
# 创建文件夹
mkdir data
mkdir data/db
mkdir data/log
# 设置可读写权限
sudo chmod 777 data/db
sudo chmod 777 data/log
3.4 再mongodb目录下新建配置文件mongodb.conf
(可选,但建议配置),使用vi mongodb.conf
命令新建文件,输入以下内容:
# 数据库数据存放目录
dbpath=/usr/local/mongodb/data/db
# 日志文件存放目录
logpath=/usr/local/mongodb/data/log/mongodb.log
# 日志追加方式
logappend=true
# 端口
port=27017
# 是否认证
auth=true
# 以守护进程方式在后台运行
fork=true
# 远程连接要指定ip,否则无法连接;0.0.0.0代表不限制ip访问
bind_ip=0.0.0.0
3.5 配置环境变量,使用sudo vi /etc/profile
命令打开系统文件,并在末尾加入以下内容后保存,最后使用source /etc/profile
命令重启系统配置。
export MONGODB_HOME=/usr/local/mongodb
export PATH=$PATH:$MONGODB_HOME/bin
3.6 启动Mongo服务
# -f 等同于--config
mongod -f /usr/local/mongodb/mongodb.conf
3.7 验证,连接和访问MongoDB。要进入 mongodb 后台管理,可以使用 mongodb/bin 目录下的 mongo 命令。MongoDB Shell 是 MongoDB 自带的交互式 Javascript shell,用来对 MongoDB 进行操作和管理的交互式环境。当进入 mongoDB 后台后,它默认会链接到 test 文档(数据库)
四、其他配置
4.1 开放端口
CentOS 7 版本对防火墙进行了加强,不再使用原来的 iptables,而是启用 firewall。默认情况下,不开放任何端口。如果需要远程连接服务器上的mongodb服务,则要开放mongodb的端口,即27017。
# 开放27017端口
firewall-cmd --zone=public --add-port=27017/tcp --permanent
# 使配置生效
firewall-cmd --reload
# 查看开放的端口,验证是否成功
firewall-cmd --zone=public --list-ports
4.2 检查mongodb服务状态
# 查看mongodb进程状态
ps aux | grep mongo
# 检查端口是否启动
netstat -lanp | grep 27017
4.3 关闭mongodb
# 通过kill命令杀死mongodb服务
kill -9 PID
# 通过mongod命令关闭mongodb服务
mongod -f /usr/local/mongodb/mongodb.conf --shutdown
4.4 开机自启动
使用
vi /lib/systemd/system/mongodb.service
命令创建开机配置文件,输入以下内容:
[Unit]
Description=mongodb
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongodb.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/local/mongodb/bin/mongod --shutdown -f /usr/local/mongodb/mongodb.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target
执行命令,使之生效
# 启动mongodb
systemctl start mongodb.service
# 查看服务状态
systemctl status mongodb.service
# 开机自启动
systemctl enable mongodb.service
# 修改mongodb.service文件,需要重新加载文件
systemctl daemon-reload
五、设置用户和密码
因为我们启动mongodb的配置文件中,指定了auth=true,即开启认证。
默认情况下,mongod也是没有管理员账户的
。因此需要在admin数据库中使用db.createUser()
命令添加管理员帐号或其他角色。
5.1 mongodb内置角色
- 数据库用户角色:read、readWrite
- 数据库管理角色:dbAdmin、dbOwner、userAdmin
- 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager
- 备份恢复角色:backup、restore
- 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
- 超级用户角色:root
- 内部角色:__system
5.2 创建管理员账号
切换到admin数据库,使用以下命令创建管理账号,拥有操作所有数据库权限。
db.createUser({user:"admin",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
5.3 验证
使用mongo命令进入mongo命令模式,如果不进行
db.auth("用户名","密码")
进行用户验证的话,是执行不了任务命令的,只有通过认证才可以。
5.4 演示对单个数据库创建用户和密码
平常开发中,我们会创建新的数据库,而且需要用新的用户进行操作数据库,那就需要创建新的用户和密码,并设置对此数据库的操作权限。
例如,以下演示创建nobody用户,密码为123456,并设置对nobody数据库用读写的权限。
db.createUser({user:'nobody',pwd:'123456',roles:[{role:'readWrite',db:'nobody'}]})
5.5 可视化工具连接
我们用Mongo可视化工具(例如
Studio 3T For MongoDB
)连接数据库,不同用户名和密码进行登录的时候,其可操作的数据库范围也是不同的(角色设置原因)。
注意,当连接的数据库没有设置用户认证时,连接时不需要填写用户名和密码。