没有无缘无故的爱,也没有无缘无故的恨,但有千差万别的利益,千万别高估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用户下,我们产生一个权限的文件,.pgpass文件,里面
存储服务器地址,端口,数据库名,用户名,密码
直接在执行命令会去寻找
如果.pgpass文件中没有相关的用户的情况下,或者文件没有找到的情况下,会报fe_sendauth无法找到.
上面的两种方法可能比较pop
下面第三种方法
pg_service.conf,通过定义服务文件的方法,可以对多个数据库备份进行定义
通过定义pg_service.conf文件,并在里面写入相关的模块,一个文件可以包含N个模块,每个模块代表一个连接,通过这样的方式,避免PG_DUMP输入密码如
[postgres
pg12pgdata]$exportPGSERVICE=backup[postgres
pg12pgdata]$pg_dump-Fc/pgdata/pg_dump.sql[postgres
pg12pgdata]$ll-ah好了到此为止标题*的内容就结束了,第三个方法也是偶然习的.
carol11