gpt4 book ai didi

Perl - DBI 和 .pgpass

转载 作者:行者123 更新时间:2023-11-29 09:02:52 25 4
gpt4 key购买 nike

我可以使用以下方法成功创建到 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 模块中留下了有值(value)的登录凭据(是的,我更改了它们)。目前,我使用 psql 以交互方式发出查询。为了省去记住我的用户名/密码的麻烦,我将凭据放在一个权限为 600 的文件 (~/.pgpass) 中。该文件如下所示:

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

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

最佳答案

是的! 更好的方法。

轻松在测试服务器和实时服务器之间切换。

  • 将密码保存在 ~/.pgpass 中(用于 psqlpg_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,
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

关于Perl - DBI 和 .pgpass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16579013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com