一:下载并解压
在mongodb根目录下创建config、data/db、log文件夹。
二:启动服务
2.1 方式一
在命令行中指定启动参数。
cd ~/Softwares/mongodb-4.4.5
# 启动服务
./bin/mongod --dbpath ./data/db
# 查看是否启动成功
ps -ef | grep mongod
2.2 方式二(推荐)
在配置文件(mongodb-4.4.5/config/mongod.conf)中指定启动参数。
systemLog:
# MongoDB发送所有日志输出的目标指定为文件
destination: file
#mongod或mongos应向其发送所有诊断日志记录信息的日志文件的路径
path: "/Users/mengday/Softwares/mongodb-4.4.4/log/mongod.log"
#当mongos或mongod实例重新启动时,mongos或mongod会将新条目附加到现有日志文件的末尾
logAppend: true
storage:
#mongod实例存储其数据的目录。storage.dbPath设置仅适用于mongod。
#The directory where the mongod instance stores its data.Default Value is "/data/db".
dbPath: "/Users/mengday/Softwares/mongodb-4.4.4/data/db"
journal:
#启用或禁用持久性日志以确保数据文件保持有效和可恢复。
enabled: true
net:
#服务实例绑定的IP,默认是localhost,多个用逗号分隔
#bindIp: 127.0.0.1
#绑定的端口,默认是27017
port: 27017
setParameter:
enableLocalhostAuthBypass: false
./bin/mongod -f ./config/mongod.conf
或
./bin/mongod --config ./config/mongod.conf
# 查看是否启动成功
ps -ef | grep mongod
2.3 启动常见错误
IllegalOperation: Attempted to create a lock file on a read-only directory
// 删除锁的文件
rm -f ./data/db/*.lock
// data/db 目录不在bin目录下就必须先切换到bin目录里,然后修改文件夹权限
cd bin
sudo chmod -R 777 data/db
三:MongoDB Shell
MongoDB shell是一个基于javascript的解释器,故是支持js程序的,可以在shell中定义变量、定义函数等。
3.1 启动Shell
# 1. 启动MongoDB Shell
mongo
或
mongo --host=127.0.0.1 --port=27017
# 数据库 帮助命令
db.help()
# 集合 帮助命令
db.collection.help()
3.2 为数据库创建用户名
mongodb密码和传统数据如mysql等有些区别: mongodb的用户名和密码是基于每个数据库的,而不是基于整个数据库实例的。所以所有数据库db都需要设置自己的密码。
MongoDB 预定义的数据库:
- admin: 从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特
定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。 - local: 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
- config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。
# 2.查看所有数据库
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
# 3.切换数据库,进入admin数据库
> use admin
# 4.在admin数据库上创建管理员账户
# mongodb中的用户是基于身份role的,该管理员账户的role是userAdminAnyDatabase。
# admin用户用于管理账号,不能进行关闭数据库等操作。
> db.createUser({
user: "admin",
pwd: "admin",
roles: [{ role: "userAdminAnyDatabase", db: "admin" }]
})
# 5.在admin数据库上创建root用户
# 创建完admin管理员,创建一个超级管理员root。角色root, root角色用于关闭数据库 db.shutdownServer()。
> db.createUser({
user: "root",
pwd: "root",
roles: [ { role: "root", db: "admin" } ]
})
# 6. 切换到自己的test数据库,数据库可以存在也可以是不存在的
> use test
# 7. 为test数据库添加账号为test,密码为test
# role: "dbOwner"代表数据库所有者角色,拥有最高该数据库最高权限。
# 比如新建索引等当账号管理员和超级管理员,可以为自己的数据库创建用户了。
# 注意:在创建自定义用户时,一定要切换到所在数据库上去创建用户,不然创建的用户还是属于admin。
# 如果是读写角色的话,权限设置为role: "readWrite"
> db.createUser({
user: "mongo",
pwd: "123456",
roles: [ { role: "dbOwner", db: "test" } ]
})
# 8.查看用户
> show users
{
"_id" : "test.mongo",
"userId" : UUID("003e7cec-0d8a-4ce1-b09c-b6730be53570"),
"user" : "mongo",
"db" : "test",
"roles" : [
{
"role" : "dbOwner",
"db" : "test"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
# 退出mongo shell
> exit
四:MongoDB Compass
Compass是MongoDB退出的一款客户端工具,类似于MySQL中的Navicat一样, 可以创建数据库、创建集合、修改文档等操作。