加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl – DBI和.pgpass

发布时间:2020-12-15 21:47:02 所属栏目:大数据 来源:网络整理
导读:我可以使用以下命令成功创建与Postgres数据库的连接: my $settings = { host = 'myhost',db = 'mydb',user = 'myuser',passwd = 'mypasswd'};my $connection = DBI-connect( 'DBI:Pg:dbname=' . $settings-{'db'} . ';host=' . $settings-{'host'},$setting
我可以使用以下命令成功创建与Postgres数据库的连接:
my $settings = {
    host => 'myhost',db => 'mydb',user => 'myuser',passwd => 'mypasswd'
};

my $connection = DBI->connect(
    'DBI:Pg:dbname=' . $settings->{'db'} . ';host=' . $settings->{'host'},$settings->{'user'},$settings->{'passwd'},{
        RaiseError => 1,ShowErrorStatement => 0,AutoCommit => 0
    }
) or die DBI->errstr;

但是我在Perl模块中留下了有价值的登录凭据(是的,我更改了它们).目前,我使用psql以交互方式发出查询.为了节省必须记住我的用户名/密码,我已将凭据放在具有权限600的文件(?/ .pgpass)中.文件如下所示:

# host:port:database:user:passwd
myhost:5432:mydb:myuser:mypasswd

如何安全地使用此文件(“$ENV {HOME} /.pgpass”)和DBI模块来隐藏我的凭据?可以吗?什么是最佳做法?

解决方法

是!有一个更好的办法.

测试与测试之间的变化直播服务器.

>将密码保存在?/ .pgpass中(对于psql& pg_dump)
>?/ .pg_service.conf(或/etc/pg_service.conf)中的其他配置信息

例如:

#!/usr/bin/perl -T
use strict;
use warnings;
use DBI;

my $dbh = DBI->connect
(
    #"dbi:Pg:service=live","dbi:Pg:service=test",undef,{
        AutoCommit => 0,RaiseError => 1,PrintError => 0
    }
) or die DBI->errstr;

?/ .pg_service.conf:

# http://www.postgresql.org/docs/9.2/static/libpq-pgservice.html
# /usr/local/share/postgresql/pg_service.conf.sample
# http://search.cpan.org/dist/DBD-Pg/Pg.pm
#

[test]
dbname=hotapp_test
user=hotusr_test
# localhost,no TCP nonsense needed:
host=/tmp

[live]
dbname=hotapp_live
user=hotusr_live
host=pgsql-server.example.org

?/ .pgpass:

# http://www.postgresql.org/docs/9.2/static/libpq-pgpass.html
# hostname:port:database:username:password
localhost:5432:hotapp_test:hotusr_test:kq[O2Px7=g1
pgsql-server.example.org:5432:hotapp_live:hotusr_live:Unm£a7D(H

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读