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 に答える