一、安装
- 去官网下载
https://www.mongodb.com/download-center/community
选择版本下载 -
解压至/usr/local,并重命名为mongodb
- 添加环境变量
vi .bash_profile 添加:
# mongodb 4.2.3
export MONGODB_HOME=/usr/local/mongodb
export PATH=$MONGODB_HOME/bin:$PATH
刷新生效
source .bash_profile
- 创建数据库存储目录 /data/db
cd /usr/local/mongodb/bin
sudo mkdir -p ./data/db
二、启动
- 终端输入(使用sudo权限):
sudo mongod
- 如果没有创建全局路径 PATH,需要进入以下目录:
cd /usr/local/mongodb/bin
sudo ./mongod
- 打开浏览器,输入http://localhost:27017会出现:
It looks like you are trying to access MongoDB over HTTP on the native driver port.
三、使用数据库
- 再打开一个终端:
mongo
会出现版本信息:MongoDB shell version v4.2.3
终端上会一直显示一个 ‘>’ 符号,此时就可以输入mongodb的sql命令了:
# 输入命令试试
show dbs;
- 正确停止mongodb,一定要正确的退出,不然下次再次连接数据库会出现问题
use admin;
db.shutdownServer();
此时http://localhost:27017连不上,服务也已停止
四、生产环境-启动方式
- 1、推荐使用配置文件方式启动
cd /usr/local/mongodb/bin
mongod -f mongodb.conf - 2、另一种是参数方式启动
bin/mongod -dbpath /data/mongo/ -logpath /data/mongo/mongo.log -logappend -fork -port 27017 -auth
五、生产环境-用户权限
在生产环境是有权限的,创建/修改配置文件
- 创建用户时noauth = true,创建完成后auth = true
vi /usr/local/mongodb/bin/mongodb.conf
# mongodb.conf
# Where to store the data.
dbpath=/data/db
# where to log
logpath=/var/log/mongodb/mongodb.log
logappend=true
# 允许后台运行
fork=true
# 任意ip可访问
bind_ip = 0.0.0.0
# 端口号
port = 27017
# Enable journaling, http://www.mongodb.org/display/DOCS/Journaling
journal=true
# Enables periodic logging of CPU utilization and I/O wait
#cpu = true
# Turn on/off security. Off is currently the default
#noauth = true
auth = true
- 在createUser之前先use admin切换一下
use admin
db.createUser(
{
user:"username",
pwd:"password",
roles:[{role:"root",db:"admin"}]
}
);
附:添加用户时各个角色对应权限
1.数据库用户角色:read、readWrite;
2.数据库管理角色:dbAdmin、dbOwner、userAdmin;
3.集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4.备份恢复角色:backup、restore
5.所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6.超级用户角色:root
- 创建完成后修改配置为auth = true并重启,下次就需要使用账号登录了
use admin
db.auth('username','password')
show dbs
# 展示集合列表
show collections
# 查询user集合汇总username为admin的1条数据
db.user.find({username:'admin'}).limit(1)
# 统计user集合的总条数
db.user.count()
# 不带账号密码数据库
mongodb://127.0.0.1:27017
# 指定账号密码数据库
mongodb://username:password@127.0.0.1:27017/admin
六、其他常见问题
- telnet 27017不通时,检查防火墙状态放行端口
# 防火墙开启状态
systemctl status firewalld
# 放行端口列表(如果没有在里面则使用后面的命令加入放行)
iptables -nL
# 防火墙放行27017即可
iptables -I INPUT -p tcp --dport 27017 -j ACCEPT
网友评论