MongoDB简介:
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。MongoDB最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
查看可用的 MongoDB 版本:
访问DokcerHub中的MongoDB镜像库地址:https://hub.docker.com/_/mongo/tags
可以通过 Sort by 查看其他版本的MongoDB,查看最新版本MongoDB镜像(mongo:latest<span class="ne-text">):<a href="https://hub.docker.com/_/mongo/tags?page=1&name=latest" rel="noopener">https://hub.docker.com/_/mongo/tags?page=1&name=latest</a></span>

此外,我们还可以用
<span class="ne-text">docker search mongo</span>
命令来查看可用版本:
拉取最新版本的MongoDB镜像:
docker pull mongo:latest
注意:tag是可选的,tag表示标签,多为软件的版本,默认是latest版本(最新版)

验证MongoDB镜像是否成功拉取到本地:
使用以下命令来查看MongoDB镜像是否成功拉取到本地:
docker images

创建并运行一个 MongoDB 容器:
docker run -itd --name mongo-test -p 27017:27017 mongo --auth
参数说明:
- -itd:其中,i是交互式操作,t是一个终端,d指的是在后台运行。
- –name mongo-test:容器名称
- -p 27017:27017 :映射容器服务的 27017 端口到宿主机的 27017 端口。外部可以直接通过 宿主机 ip:27017 访问到 mongo 的服务。
- –auth:需要密码才能访问容器服务(注意:安全问题,MongoDB默认是不开启权限验证的,不过设置了这里就相当于修改MongoDB的配置auth=ture启用权限访问)。


解决无法正常执行mongo命令问题
进入容器:
docker exec -it mongo-test mongo

异常原因:
OCI runtime exec failed: exec failed: unable to start container process: exec: “mongo”: executable file not found in $PATH: unknown
官网解决方案:
https://github.com/docker-library/mongo/issues/558
mongo5.0以上的版本使用mongo来执行mongodb命令已经不支持了,你需要改用mongosh来替代mongo!

进入创建的MongoDB容器
docker exec -it mongo-test mongosh

MongoDB默认是不需要用户密码就可以连接的,如果使用命令报错”ongoServerError: not authorized on admin to execute command “,则表示当前登陆用户不具备相应权限。

解决办法:在admin数据库中通过创建一个用户,赋予用户root权限。
# 进入admin数据库
use admin
# 创建一个超级用户
db.createUser(
{
user:"root",
pwd:"123456",
roles:[{role:"root",db:"admin"}]
}
);#授权登录db.auth('root','123456')

MongoDB用户权限管理:
MongoDB添加用户命令说明
- user字段,为新用户的名字。
- pwd字段,用户的密码。
- cusomData字段,为任意内容,例如可以为用户全名介绍。
- roles字段,指定用户的角色,可以用一个空数组给新用户设定空角色。在roles字段,可以指定内置角色和用户定义的角色。
- 超级用户的role有两种,userAdmin或者userAdminAnyDatabase(比前一种多加了对所有数据库的访问,仅仅是访问而已)。
- db是指定数据库的名字,admin是管理数据库。
- 不能用admin数据库中的用户登录其他数据库。注:只能查看当前数据库中的用户,哪怕当前数据库admin数据库,也只能查看admin数据库中创建的用户。
首先切换到admin数据库中
# 进入admin数据库
use admin
创建admin超级管理员用户
指定用户的角色和数据库:
(注意此时添加的用户都只用于admin数据库,而非你存储业务数据的数据库)
(在cmd中敲多行代码时,直接敲回车换行,最后以分号首尾)
db.createUser(
{ user: "admin",
customData:{description:"superuser"},
pwd: "admin",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
创建一个不受访问限制的超级用户
拥有所有权限,不受任何限制
db.createUser(
{
user:"root",
pwd:"123456",
roles:[{role:"root",db:"admin"}]
}
);
创建一个业务数据库管理员用户
只负责某一个或几个数据库的増查改删
db.createUser({
user:"user001",
pwd:"123456",
customData:{
name:'jim',
email:'jim@qq.com',
age:18,
},
roles:[
{role:"readWrite",db:"db001"},
{role:"readWrite",db:"db002"},
'read'// 对其他数据库有只读权限,对db001、db002是读写权限
]
})
MongoDB数据库角色说明
- 数据库用户角色:read、readWrite;
- 数据库管理角色:dbAdmin、dbOwner、userAdmin;
- 集群管理角色:clusterAdmin、clusterManager、4. clusterMonitor、hostManage;
- 备份恢复角色:backup、restore;
- 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
- 超级用户角色:root
- 内部角色:__system
MongoDB中的role详解
- Read:允许用户读取指定数据库
- readWrite:允许用户读写指定数据库
- dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
- userAdmin:允许用户向system.users集合写入,可以在指定数据库里创建、删除和管理用户
- clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限
- readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
- readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
- userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
- dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限
- root:只在admin数据库中可用。超级账号,超级权限
服务器配置27017的开放端口:

1.连接MongoDB点击这个位置
2、连接参数介绍:
stand alone:独立的
shard cluster:分片集群
replica set:复制集
SRV record:
SRV记录是DNS服务器的数据库中支持的一种资源记录的类型,它记录了哪台计算机提供了哪个服务这么一个简单的信息。
SRV 记录:一般是为Microsoft的活动目录设置时的应用。DNS可以独立于活动目录,但是活动目录必须有DNS的帮助才能工作。
为了活动目录能够正常的工作,DNS服务器必须支持服务定位(SRV)资源记录,资源记录把服务名字映射为提供服务的服务器名字。
活动目录客户和域控制器使用SRV资源记录决定域控制器的IP地址。
一般情况下,我们连接只需要连接主库查数据,所以选择独立的这个连接方式就可以,填写好常规参数可以点击测试连接是否正常,即可连接!


参考文章:
https://blog.csdn.net/zhanghongshuang/article/details/117461225
Original: https://www.cnblogs.com/Can-daydayup/p/16653882.html
Author: 追逐时光者
Title: Docker安装MongoDB并使用Navicat连接
相关阅读
Title: 基于Opencv的车牌识别系统想必大家都会了,那么识别后计费系统会了吗?
概述
车牌识别脚本我相信大家都见过很多,最多的应该就是基于Opencv来实现的,这个小编也是写过几篇,如果有感兴趣的可以关注小编去查看一下。最近听学弟讲,毕业设计是越来越难了。以前毕设只需要实现车牌识别即可,但是现在不行,车牌识别后是不是要计算他什么时候停进来的。
然后是怎么收费的,五块一小时还是三块,三小时怎么计算,相对而言比单纯的识别车牌又增加了一定的难度,那么今天也是实现大部分停车场的一个计费系统原理。可能它不是Python写的,但是肯定是一门编程语言来实现的。所以今天就教大家如果实现后续的计费系统。附完整代码,需要的拉到文末即可。

项目结构

说明:
- datefile文件夹:保存车辆信息表的xlsx文件
- file文件夹:保存图片文件夹。ic_launcher.jpg是窗体的右上角图标文件;income.png是实现收入统计的柱状图(下一篇文章实现);key.txt是使用百度的图片识别AI接口申请的key;test.jpg保存的是摄像头抓取的图片
- venv文件夹:项目所需要的各种模块,即项目运行环境
- btn.py文件:按钮模块
- main.py文件:程序主文件
- ocrutil.py文件:车牌识别模块
- timeutil.py文件:时间处理模块
主要代码
# 车位文字
def text1(screen):
# 剩余车位
k = Total - carn
if k < 10:
# 剩余车位
sk = '0' + str(k)
else:
sk = str(k)
# 使用系统字体
xtfont = pygame.font.SysFont('SimHei', 20)
# 重新开始按钮
textstart = xtfont.render('共有车位:' + str(Total) + ' 剩余车位:' + sk, True, WHITE)
# 获取文字图像位置
text_rect = textstart.get_rect()
# 设置文字图像中心点
text_rect.centerx = 820
text_rect.centery = 30
# 绘制内容
screen.blit(textstart, text_rect)
# 停车场信息表头
def text2(screen):
# 使用系统字体
xtfont = pygame.font.SysFont('SimHei', 15)
# 重新开始按钮
textstart = xtfont.render(' 车号 时间 ', True, WHITE)
# 获取文字图像位置
text_rect = textstart.get_rect()
# 设置文字图像中心点
text_rect.centerx = 820
text_rect.centery = 70
# 绘制内容
screen.blit(textstart, text_rect)
pass
# 停车场车辆信息
def text3(screen):
# 使用系统字体
xtfont = pygame.font.SysFont('SimHei', 12)
# 获取文档表信息
cars = pi_table[['carnumber', 'date', 'state']].values
# 页面就绘制10辆车信息
if len(cars) > 10:
cars = pd.read_excel(path + '停车场车辆表.xlsx', skiprows=len(cars) - 10, sheet_name='data').values
# 动态绘制y点变量
n = 0
# 循环文档信息
for car in cars:
n += 1
# 车辆车号 车辆进入时间
textstart = xtfont.render(str(car[0]) + ' ' + str(car[1]), True, WHITE)
# 获取文字图像位置
text_rect = textstart.get_rect()
# 设置文字图像中心点
text_rect.centerx = 820
text_rect.centery = 70 + 20 * n
# 绘制内容
screen.blit(textstart, text_rect)
pass
实现效果

结语
是不是也没有你们想的那么难,还是比较简单容易上手的吧,如果你会识别这个计费系统对你来讲是很简单的一件事,完整项目代码太多就没有一一发上来了,需要完整项目源代码的 点这里获取或关注下方公众号即可
Original: https://blog.csdn.net/weixin_43881394/article/details/124458155
Author: 爬遍天下无敌手
Title: 基于Opencv的车牌识别系统想必大家都会了,那么识别后计费系统会了吗?
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/363393/
转载文章受原作者版权保护。转载请注明原作者出处!