作者:qiuyaji4379 | 来源:互联网 | 2023-10-12 12:58
欢迎关注我的微信公众号“人小路远”哦,在这里我将会记录自己日常学习的点滴收获与大家分享,以后也可能会定期记录一下自己在外读博的所见所闻,希望大家喜欢,感谢支持!
自己在家捣鼓数据库玩的时候发现MongoDB使用起来还是有很多需要注意和值得学习的地方的,怕自己鼓捣两天就玩忘了,所以写下这篇文章备忘并和大家共享。
目录
1、MongoDB安装
1.1、下载安装包
1.2、安装
1.3、进入安装目录
1.4、启动MongoDB
2、添加用户权限和身份验证
2.1、创建管理员
2.1.1、创建用户名和密码
2.1.2、开启身份验证
2.1.3、用户身份验证
2.2、 创建普通用户
2.3、 内建角色
3、常用命令
4、连接远程MongoDB数据库
4.1、配置远程数据库
4.2、连接远程数据库
5、连接数据库
1、MongoDB安装
1.1、下载安装包
点击官网community版下载地址,选择系统和版本号后下载ZIP或MSI版本均可。此处以MSI版本为例:
1.2、安装
需要注意两个地方,选择Custom版本,取消compass复选框以节约时间。
如果是安装在了默认的C盘,那就记得在C盘的根目录下新建data文件夹,然后再data文件夹下再新建一个db文件夹以存储数据库数据。如果是D盘那就在D盘的根目录下新建。
1.3、进入安装目录
解压或者安装完成后,需找到安装目录,在bin文件夹下打开命令行窗口。因为MongoDB不会默认将工具添加至系统变量,所以为以后方便使用建议自行将常用的mongo.exe和mongod.exe添加至系统变量。
1.4、启动MongoDB
在任务管理器中启动MongoDB服务即可,一般会自动启动。默认端口为27017。
在bin目录下打开命令行窗口,输入mongo进入MongoDB shell,即可进入数据库。
2、添加用户权限和身份验证
为提高数据库的安全性,防止被恶意篡改数据或操作失误导致数据丢失,建议添加用户权限和身份认证。
参考文章:
- MongoDB 设置用户名密码登录
- 设置远程连接访问mongodb数据库
- MongoDB authentication failed
2.1、创建管理员
2.1.1、创建用户名和密码
在bin目录下另外打开一个命令行窗口,输入mongo进入MongoDB shell,然后使用MongoDB shell进入默认的admin数据库。
use admin
输入以下命令,添加root超级管理员。设置管理员root为用户名,rootPass为密码,admin为数据库名,
db.createUser({user: "root",pwd: "rootPass",roles: [ { role: "root", db: "admin" } ]}
)
注意一定要先在默认的admin数据库中添加root用户。如果admin库没有任何用户的话,即使在其他数据库中创建了用户,启用身份验证,默认的连接方式依然会有超级权限。如果admin数据库中未添加root用户,其他用户身份验证连接可能会失败。
创建成功后按下Ctrl+C键以断开数据库连接。
2.1.2、开启身份验证
(1)在注册表regedit-> HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services->MongoDB 中添加-auth
(2)任务管理器中重启MongoDB服务即可。
2.1.3、用户身份验证
方法一:连接时直接指定用户名、密码和数据库名。
mongo -u "adminUser" -p "adminPass" "DATABASE_NAME"
方法二:先连接数据库,再验证身份。
mongouse admindb.auth("adminUser", "adminPass")
// 输出 1 表示验证成功
2.2、 创建普通用户
过程类似创建管理员账户,只是 role 有所不同。先在admin数据库中使用root账户登录,之后按需创建即可,例如:
- 用户名:simpleUser
- 密码:simplePass
- 权限:读写数据库 foo, 只读数据库 bar
db.createUser({user: "simpleUser",pwd: "simplePass",roles: [ { role: "readWrite", db: "foo" },{ role: "read", db: "bar" } ]}
)
2.3、 内建角色
- Read:允许用户读取指定数据库
- readWrite:允许用户读写指定数据库
- dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
- userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
- clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
- readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
- readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
- userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
- dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
- root:只在admin数据库中可用。超级账号,超级权限
3、常用命令
显示当前数据库
db
显示所有数据库(新建的数据库需要至少插入一条数据才可显示)
show dbs
新建或切换至数据库xxx
use DATABASE_NAME
当前数据库下新建表xxx
db.createCollection("TABLE_NAME")
显示当前数据库下的所有表
show collections
当前数据库下指定表里插入一行数据
db.TABLE_NAME.insertOne({name:'xxx'}) //字段名name 数据xxx
当前数据库下指定表里查找数据
db.TABLE_NAME.find()
删除当前数据库
db.dropDatabase()
删除指定表
db.TABLE_NAME.drop()
4、连接远程MongoDB数据库
如果无需连接远程数据库,则可直接跳至第5步。
4.1、配置远程数据库
当我们想要连接服务器上的MongoDB数据库时,需要先对其进行配置。
(1)找到远程数据库的安装目录后,用记事本打开bin文件夹下的mongod.cfg文件,将bindIp后面的"127.0.0.1"改为"0.0.0.0"。然后任务管理器中重启MongoDB服务即可。
(2)一定要记得打开服务器防火墙的27017端口,如果是云服务器,一般不用在系统内打开端口,只要在服务器控制台添加安全规则打开端口就可以了。
4.2、连接远程数据库
建议先使用Telnet工具测试一下远程服务器是否可以正常连接。用法详见百度经验 telnet用法 测试端口号
telnet your.machine.open.ip 27017
在本机MongoDB安装目录的bin文件下,使用命令行进行连接。
建议先连接再认证,直接输入用户名和密码以及数据库进行连接有时会认证失败,不清楚是什么原因。
.\mongo your.db.ip.addressuse DATABASE_NAMEdb.auth("username","password")
5、连接数据库
使用MongoDB shell 连接数据库或者在代码中使用以下URI 形式对数据库进行连接。
mongodb://your.db.ip.address:27017/DATABASE_NAME
添加用户名密码验证
mongodb://simpleUser:simplePass@your.db.ip.address:27017/DATABASE_NAME