一:下载并解压

MongoDB从入门到实战(二):MongoDB安装_数据库

在mongodb根目录下创建config、data/db、log文件夹。

MongoDB从入门到实战(二):MongoDB安装_创建用户_02

二:启动服务

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一样, 可以创建数据库、创建集合、修改文档等操作。

MongoDB从入门到实战(二):MongoDB安装_创建用户_03

MongoDB从入门到实战(二):MongoDB安装_mongodb_04