2

我使用过 Postgres,并且喜欢它处理数据库连接的方式。我现在必须使用 Matlab 和 Physionet 的平面数据库系统来检索数据。但是,在某些情况下,我不理解逻辑,例如ptbdb

如何检查 Matlab 中是否存在与数据库的连接?

连接数据库时如何监控系统在做什么? 能够 ping 系统或类似的东西以了解问题所在将是非常好的。我现在没有得到任何信息是什么问题。

4

1 回答 1

0

我的连接不断断开,因为它不安全。主题是关于 Matlab 和 PostgreSQL 之间的安全连接,它没有被广泛记录,例如,这里讨论了关于Matlab 和 PostgreSQL 之间的安全 SSL 连接

文摘要

进行适当的更改

  1. 为服务器生成证书;diseserver.csr,root.crt;postgreSQL 目录(diseserver.key、diseserver.crt 和 root.crt);请在此处更准确地查看
  2. postgresql.conf
  3. pg_hba.conf
  4. 生成客户端证书
  5. 将密钥转换为pkcs8格式
  6. 检查JDBC 驱动程序的正确版本
  7. 检查客户证书
  8. dbtest.m

服务器证书

$openssl req -out diseserver.csr -new -newkey rsa:2048 -nodes -keyout diseserver.key

postgresql.conf

ssl = on
ssl_cert_file = 'diseserver.crt'  # (change requires restart)
ssl_key_file  = 'diseserver.key'  # (change requires restart)
ssl_ca_file   = 'root.crt'        # (change requires restart)

pg_hba.conf

hostnossl  all    all   0.0.0.0/0   reject
hostssl  mytable  all   0.0.0.0/0   cert map=ssl clientcert=1

生成客户端证书

$mkdir ~/.postgresql
$cd ~/.postgresql
$openssl req -out postgresql.csr -new -newkey rsa:2048 -nodes -keyout postgresql.key

将密钥转换为pkcs8格式

$openssl pkcs8 -topk8 -inform PEM -outform DER -in postgresql.key -out postgresql.pk8 -nocrypt

检查客户端证书

jdbc:postgresql://diseserver.mydomain.org/mytable?ssl=true&sslfactory=org.postgresql.ssl.jdbc4.LibPQFactory&sslmode=verify-full&

dbtest.mmatlab函数

function dbtest
   driver = 'org.postgresql.Driver';
   [~,username] = system('whoami');
   url = 'jdbc:postgresql://diseserver.mydomain.org/mytable?ssl=true&sslfactory=org.postgresql.ssl.jdbc4.LibPQFactory&sslmode=verify-full&';
   myconn = database('mytable', username, '', driver, url);
   if ~isempty(myconn.Message)
      fprintf(2,'%s\n', myconn.Message);
   else
      fprintf(1, 'Connected!\n');
   end
end
于 2016-04-23T10:22:11.003 回答