MongoDB安装
# 什么是MongoDB ?
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
# 安装MongoDB
安装版本:3.4.24
系统:centos7
- 下载安装配置
#下载包3.4.24
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.4.24.tgz
#https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.22.tgz
#重命名,创建目录
tar zxvf mongodb-linux-x86_64-3.4.24.tgz -C /opt
mv /opt/mongodb-linux-x86_64-3.4.24/ /opt/mongodb
mkdir /opt/mongodb/{conf,db,logs}
#添加配置文件
cat >/opt/mongodb/conf/mongodb.conf<<EOF
dbpath=/opt/mongodb/db
logpath=/opt/mongodb/logs/mongodb.log
port=27017
fork=true
nohttpinterface=true
auth=false
EOF
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
- 命令行启动
/opt/mongodb/bin/mongod --bind_ip localhost -f /opt/mongodb/conf/mongodb.conf
- 添加systemd
#添加用户,授权
groupadd mongod
useradd -s /sbin/nologin -g mongod -M mongod
chown -R mongod:mongod /opt/mongodb
#添加systemd 启动文件
cat >/usr/lib/systemd/system/mongodb.service<<'EOF'
[Unit]
Description=mongodb database
[Service]
User=mongod
Group=mongod
Environment="OPTIONS=--quiet --bind_ip_all -f /opt/mongodb/conf/mongodb.conf"
ExecStart=/opt/mongodb/bin/mongod $OPTIONS run
PIDFile=/opt/mongodb/logs/mongod.pid
[Install]
WantedBy=multi-user.target
EOF
#如果是通过systemd 启动需要注释fork
sed -i 's@fork=true@#fork=true@g' /opt/mongodb/conf/mongodb.conf
#版本4.2需要执行下面的注释
sed -i 's@nohttpinterface=true@#nohttpinterface=true@g' /opt/mongodb/conf/mongodb.conf
systemctl daemon-reload
systemctl enable mongodb.service
systemctl start mongodb.service
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 基础操作
# 连接数据库
1.本地连接
shell > mongo
2.指定IP端口
shell > mongo 192.168.40.82:27017
3.指定IP端口连接
shell > mongo 192.168.40.85:27017/admin
# 创建用户
role: "dbOwner"代表数据库所有者角色,拥有最高该数据库最高权限。比如新建索引等当账号管理员和超级管理员,可以为自己的数据库创建用户了。
(坑)这时候一定,一定要切换到所在数据库上去创建用户,不然创建的用户还是属于admin。
如果是读写角色的话,权限设置为role: "readWrite"
use admin
db.createUser({
user: 'admin', // 用户名
pwd: '123456', // 密码
roles:[{
role: 'root', // 角色
db: 'admin' // 数据库
}]
})
2
3
4
5
6
7
8
9
10
11
1.创建管理员用户
db.createUser({ user: "admin", pwd: "password", roles: [{ role: "userAdminAnyDatabase", db: "admin" }] })
2.创建root用户
db.createUser({user: "root",pwd: "password", roles: [ { role: "root", db: "admin" } ]})
3.创建属于test库用户
use testdb db.createUser({user: "test",pwd: "testpassword",roles: [ { role: "dbOwner", db: "testdb" } ]})
# 开启验证登录
1.修改配置
#修改配置,auth为true
sed -i 's#auth=.*#auth=true#g' /opt/mongodb/conf/mongodb.conf
#重启
systemctl restart mongodb.service
2
3
4
2.登录及用户操作修改
#登录方式一:命令行
shell > mongo admin -u admin -p 123456 --host 127.0.0.1
#登录方式二:登录后,再验证
shell > mongo --host 127.0.0.1
db.auth('admin','123456') // 密码认证
show users // 查看当前库下的用户
db.dropUser('admin') // 删除用户
db.updateUser('admin', {pwd: '654321'}) // 修改用户密码
2
3
4
5
6
7
8
9
10
11
12
13
3.删除用户
删除用户必须由账号管理员来删,所以,切换到admin角色
use admin
db.auth("admin","123456")
#删除单个用户
db.system.users.remove({user:"testadmin"})
#删除所有用户
db.system.users.remove({})
2
3
4
5
6
7
8
# 库操作
1.存在就切换到dbname库,如果数据库不存在,则创建数据库
use dbname
2.查看当前所在哪个库
db
3.查看所有库,如果数据库内没有数据,则不会显示
show dbs
4.删除库dbname
删除库之前,注意一定要先检查当前在哪个库
use dbname
db.dropDatabase()
2
5.插入数据
插入数据到dbname
use dbname
db.dbname.insert({"title":"MongoDB 初学"})
show dbs
2
3
6.查找数据
db.dbname.find()
db.dbname.find({"title":"MongoDB 初学"})
2
7.查看表数据行
db.dbname.count()