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) 例如: #!/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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |