POSTGRESQL 从PG_DUMP 说起到我没有密码也能工作

2021-01-04 00:00:00 数据库 命令 文件 密码 方法

没有无缘无故的爱, 也没有无缘无故的恨, 但有千差万别的利益,千万别高估humanity, 那会让你很失望,做事别做绝,因为利益关系很灵活. 近抖音上不少人在重复上面的话,不过想想也对,有多少人在生日那天收到的的祝福是,XX银行祝您生日快乐!! 一条及时但却很利益的祝福。


言归正传:

这期有点标题党, 但实际上PG的不少命令对于密码来说,还是挺有意思, 举例如果是MYSQL 我们可以在 -p后跟上密码,而对于PG,我总不能在-W 后面跟密码,如果这点你不懂的话, 那就还是需要在看看 PG_DUMP 的命令以及使用他,便于理解后面的文字.

虽然重点不是PG_DUMP 但还是要写一写,否则真成标题党了.

PG_DUMP 是用来导入导出,备份POSTGRESQL 的一个工具,当然这个工具的存在可以比对成 mysqldump 这个工具, 实际上用这个工具去备份大的数据库,那只能说,真的吗?   你是认真的吗?


实际上pg_dump,可以被明确为一个导入导出的工具可能更合适他的位置.好处是pg_dump 在使用的时候并不会阻塞其他用户对数据库的访问.实际上他们备份出的数据,是逻辑的,而不是物理,这也就确认了,他作为导出工具对于接受方是很灵活的,尤其对于一些版本不同的PG 来说, PG_DUMP 是必须存在的.



PG 导出的数据,都是可以看懂的


下面我们就要来到今天标题党中的 关键问题, 到底怎么在不输入密码的前提下,让PG_DUMP 来进行工作的问题.


看到上图的人,估计会说一句,你傻呀,在-W 后面写密码不就完了, 


好了不行,已经证明了. 那还有同学说, 你不会变通,你执行命令的时候,直接输入密码不就完了.


呵呵 ,那我要是自动化,定期运行pg_dump 怎么办?

啊, 难道回答   臣妾做不到?


方法1 变量法



在执行命令前,通过变量的方法将默认的密码设置成你下一步要使用的密码,然后直接执行pg_dump  ,这样的方法来解决有些命令需要输入密码,自动化的问题.


方法2 .password 法


这个方法的确应该是人尽皆知的,在操作数据库的默认LINUX 用户下,我们产生一个 600权限的文件, .pgpass 文件,里面

存储服务器地址, 端口, 数据库名, 用户名 , 密码

 

直接在执行命令会去寻找

如果.pgpass 文件中没有相关的用户的情况下,或者文件没有找到的情况下, 会报fe_sendauth 无法找到.


上面的两种方法可能比较pop


下面第三种方法


pg_service.conf ,通过定义服务文件的方法,可以对多个数据库备份进行定义

通过定义 pg_service.conf 文件,并在里面写入相关的模块, 一个文件可以包含N个模块,每个模块代表一个连接,通过这样的方式,避免PG_DUMP 输入密码如


[postgres@pg12 pgdata]$ export PGSERVICE=backup

[postgres@pg12 pgdata]$ pg_dump -Fc > /pgdata/pg_dump.sql

[postgres@pg12 pgdata]$ ll -ah


好了到此为止标题党的内容就结束了,第三个方法也是偶然习的.



相关文章