繁体   English   中英

通过Qt5连接到位于VM内的数据库

[英]Connect to a Database located inside a VM through Qt5

我正在使用MacParallel Desktop 在我的Win7安装中(并行),我有pgAdmin和一个简单的测试数据库和表。

我想做的是使用Qt Creator附带的名为Qt SQL Browser的示例来连接到该数据库。

由于数据库位于Parallels内部,因此我不知道如何连接。 为此,我应该在Qt SQL Browser的配置屏幕中输入什么?

访问该数据库需要发生一些事情。

  1. 该数据库需要可在localhost外部访问。

  2. 您需要在正确的plugins文件夹(或exe旁边的相对路径)中构建正确的数据库访问插件。

数据库可访问

运行数据库的端口(postgres的默认端口为5432 )需要通过该计算机上的防火墙(Win7安装)。

http://windows.microsoft.com/en-us/windows/open-port-windows-firewall#1TC=windows-7

为了使生活更轻松,您还应该通过防火墙对Windows 7计算机执行ping操作。

http://www.sysprobs.com/enable-ping-reply-windows-7

您需要获取Parallels在另一台计算机上看到的IP地址。 (要找到此地址,请在Windows 7计算机的命令提示符下,键入ipconfig并查看网卡的地址。它可能类似于192.168.1.X

如果从Mac上可以看到该计算机,则在键入时应该得到答复:

ping 192.168.1.6

假设6是您的Parallels网络驱动程序选择的数字。

因此,完成上述所有操作后,数据库位置可能将变为:

192.168.1.6

这是您要在Qt SQL Browser配置屏幕中的Hostname:名下输入的内容Hostname:

并确保该端口代表您在设置中使用的端口(修改Port:以反映此设置,例如5432 )。

使Qt PostGres SQL驱动程序正常工作

包括qt SQL模块。

QT += sql

获取已构建的插件,该插件可用于您的构建。

https://www.google.com/search?q=qt+build+postgresql+driver

http://qt-project.org/doc/qt-5/sql-driver.html#qpsql

基本上,您会找到用于构建示例项目或插件项目的示例项目,然后将其放在可执行文件期望找到的文件夹中。 如果插件是在常规文件夹中构建的,则qtmacdeploy应该对此提供帮助。

正确安装驱动程序后,在代码中运行以下命令时应列出该驱动程序:

qDebug() << QSqlDatabase::drivers();

看起来在Qt 5中,默认情况下会构建并包含更多驱动程序。 您可以在qsqlconnectiondialog.cpp的顶部看到ui.comboDriver->addItems(drivers);

http://qt-project.org/doc/qt-5/qsqldatabase.html#drivers

有关安全性的注意事项

通常,将数据库公开为可通过网络直接访问不是最佳实践。 取决于数据库的类型,它不会安全发送,并且容易受到攻击。

通常,访问数据库的程序使用服务器端服务,例如可以访问数据库的php后端,并使用少量命令。 只有服务器上运行的php脚本才能直接访问该数据库,并且php提供了到数据库的公共接口,并具有所需的安全性。 然后,您可以限制登录尝试,只允许特定类型的查询,这样通常可以更好地进行用户管理等。这在MySQL中很常见。

https://www.google.com/search?q=database+security+best+practices+postgres

希望能有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM