自研究区块链以来,就没再碰数据库了!博客就用Hive,代码就用github, 一般都够用,就不去折腾MySQL、MongoDB这些了。
但区块链的使用门槛比较高,要是服务国内的用户,那用区块链当数据库就不太合适,还是得用回MySQL、MongoDB。在选型上,MySQL、MongoDB都各有优势,但现阶段,MongoDB更适合些,那就它啰。
Ubuntu安装
Ubuntu 20.04.5 LTS
mongodb-org-server_6.0.5
mongosh_1.8.0
安装
//ubuntu
apt update
//服务器 直接下载安装包后安装
wget https://repo.mongodb.org/apt/ubuntu/dists/focal/mongodb-org/6.0/multiverse/binary-amd64/mongodb-org-server_6.0.5_amd64.deb
dpkg -i ./mongodb-org-server_6.0.5_amd64.deb
//dpkg -i --force-overwrite ./mongodb-org-server_6.0.5_amd64.deb 强制重装
//客户端 mongosh
wget https://downloads.mongodb.com/compass/mongodb-mongosh_1.8.0_amd64.deb
dpkg -i ./mongodb-mongosh_1.8.0_amd64.deb
Windows安装
1、安装好后添加环境变量
2、在默认的C盘下创建数据目录 c:/data/db
3、启动
cd C:\Program Files\MongoDB\Server\4.0\bin
mongod
//在默认的C盘下创建数据目录 c:/data/db
//使用另外的存储路径
mongod.exe --dbpath D:\MongoDB\Server\4.0\data
4、mongo 连接即可 exit退出
5、基本命令
show dbs //查看所有数据库
db //当前数据库
use dbname //切换指定数据库(没有则新建)
//直接可以放集合students(当前没有students则新建)中插入数据
db.students.insertOne({"name":"lemool"})
show collections //查看集合
db.students.find() //查看集合中的所有数据
运行服务端
/usr/bin/mongod --config /etc/mongod.conf //无权限
/usr/bin/mongod --config /etc/mongod.conf --auth //打开权限
//查看运行
ps -ef | grep mongo
//配置 /etc/mongod.conf
bindIp: 127.0.0.1 //只允许本机
bindIp: 0.0.0.0 //允许所有IP
后台运行
//mongod.service port: 27017
# cat /lib/systemd/system/mongod.service
vim /lib/systemd/system/mongod.service
//震要修改的地方
ExecStart=/usr/bin/mongod --config /etc/mongod.conf --auth //以权限的方式运行
User=root //User=mongodb
Group=root
systemctl daemon-reload
systemctl start mongod
systemctl stop mongod
systemctl restart mongod
systemctl status mongod //查看状态
ps -ef | grep mongo
基本操作
mongosh //服务端无权限时
mongosh "mongodb://localhost:27017" --username admin --password 589485 --authenticationDatabase admin
show dbs //显示所有数据库, 默认是test
show collections //显示所有集合
db //显示当前数据库名
use <database name> //更改数据库
user admin // 进入admin
//创建一个新账号 用户名admin 密码589485 权限root
db.createUser({user:"admin",pwd:"589485",roles:["root"]}) //{ ok: 1 }
//db.createUser({user:"admin",pwd:"589485",roles: [ {role:"dbOwner", db:"mydb"} ]})
//账号授权:用户名 密码。 回车,返回1,认证成功。
db.auth("admin","589485") //{ ok: 1 }
db.system.users.find().pretty() //查看
//创建集合
db.createCollection(name, options), eg: db.createCollection("runoob")
//删除集合
db.collection.drop(), eg: db.runoob.drop()
//插入记录
db.COLLECTION_NAME.insertOne(document)
eg: db.collection.insertOne({"a": 3})
db.collection.insertMany([{"b": 3}, {'c': 4}])
>db.test1.insertOne({title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
})
db.test1.find().pretty()
几个重点
- 运行的用户配置
MongoDB的默认用户和组是mongodb
, 虽然安装时也创建了,但就是运行不起来,就全部改成root
吧。 - IP限制
mongod.conf中设置IP限制:
bindIp: 127.0.0.1 //只允许本机
bindIp: 0.0.0.0 //允许所有IP - 用户权限
需要进user admin
中设置用户名和密码,MongoDB运行时也需要以权限的形式运行,这样安全系数最高。