PostgreSQL数据库pg_dump命令行不输入密码的方法

对于PostgreSQL数据库的备份按照官方手册的方法之一就是采用“SQL Dump”的方式(另一种方式是直接备份文件系统中的文件,可参考官方手册)。

基本用法如下:

pg_dump dbname > outfile

首先,正如命令行所展示的,pg_dump是将命令结果输出到标准输出中。

其次,pg_dump并不影响数据库工作过程中的其他操作(主要是关心pg_dump会不会产生读写锁(read lock、write lock)),但也有例外,那就是哪些需要使用互斥锁(exclusive lock)的操作,如ALTER TABLE。

由于对于运维而言,通常需要使用脚本来执行数据库备份,而不是每天手动执行命令行并输入密码备份,因此特地查了一下文档,根据文档“31.15. The Password File”节的说明,可以在用户目录下建一个配置文件,提前将密码写入这个配置文件中,配置文件的格式如下:

hostname:port:database:username:password

需要将此文件放在执行pg_dump命令的用户目录下,保存成.pgpass 文件,并且权限为600,否则PostgreSQL就会报

WARNING: password file "/root/.pgpass" has group or world access; permissions should be u=rw (0600) or less

注意:如果PostgreSQL数据库的数据库表结构(database schema)依赖OIDs(例如外键),则pg_dump需要加-o选项。

PostgreSQL数据库的导出速度还是比较快的,导出3万多行不到1s。

PostgreSQL导出数据库命令行实例:

pg_dump -U confluence -d confluence -h 127.0.0.1 -o >/tmp/tmp_confluence_postgresql.sql

其中,

-U表示执行用户

-d表示数据库

-h表示主机

-o表示支持OLDs

注:如果不想使用.pgpass 文件,则可以在命令行中添加-W选项,意思是输入密码再执行。

附录:PostgreSQL数据库一些适合运维的基本操作

登录PostgreSQL数据库:

psql -U dbuser -d exampledb -h 127.0.0.1 -p 5432

如果也不想输入密码,则可以执行:

psql "host=127.0.0.1 hostaddr=127.0.0.1 port=5432 user=yourloginname password=yoursecret"

列出数据库:

\l

退出数据库console:

\q

tag:PostgreSQL数据库备份,PostgreSQL命令行不输入密码,PostgreSQL数据库基本操作,PostgreSQL数据库导出,PostgreSQL运维教程

--end--

时间: 2024-10-27 19:32:54

PostgreSQL数据库pg_dump命令行不输入密码的方法的相关文章

Python 标准库 -> Getpass 模块 -> 命令行下输入密码的方法.

getpass 模块 getpass 模块提供了平台无关的在命令行下输入密码的方法. getpass(prompt) 会显示提示字符串, 关闭键盘的屏幕反馈, 然后读取密码. 如果提示参数省略, 那么它将打印出 "Password:". getuser() 获得当前用户名, 如果可能的话. 使用 getpass 模块 1 import getpass 2 3 usr = getpass.getuser() 4 pwd = getpass.getpass("enter pass

MySQL数据库使用命令行备份

一.MySQL数据库使用命令行备份 例如: 数据库地址:127.0.0.1 数据库用户名:root 数据库密码:pass 数据库名称:myweb 备份数据库到D盘跟目录 mysqldump -h127.0.0.1 -uroot -ppass myweb > d:/backupfile.sql 备份到当前目录 备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库 mysqldump --add-drop-table -h127.0.0.1 -uroot -pp

第二百九十节,MySQL数据库-MySQL命令行导出导入数据库,数据库备份还原

MySQL命令行导出导入数据库,数据库备份还原 MySQL命令行导出数据库:1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录如我输入的命令行:cd C:\Program Files\MySQL\MySQL Server 4.1\bin(或者直接将windows的环境变量path中添加该目录) 2,导出数据库:mysqldump -u 用户名 -p 数据库名 > 导出的文件名 如我输入的命令行:mysqldump -u root -p news > news.sql

浅析postgresql数据库事务及行锁特征

开源数据库领域,postgresql以其优越的性能.功能及良好的稳定性排名首位可谓当之无愧,尤其是对高并发的支持可谓匠心独具.而优越的性能和稳定性,究其根本无非是良好的基础架构,本文将对其性能和稳定性有着良好支撑的事务及锁机制进行探讨,并结合实际测试,以真切说明和证明其特点. 1.可在事务中的DDL postgresql中,DDL语句可以在事务中,既可以提交,也可以回滚,这在实际工作中,不然具备很大的实际意义,也会给工作带来方便和安全,如下图所示: 2.mvcc postgresql中,很好的实

Postgresql数据库实用命令

Postgresql 命令 pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start 启动数据库 createuser charblus -P 创建用户 createdb zx-internal-db -O charblus -E UTF8 -e 创建数据库 POSTGRESQL 数据库导入导出 导入整个数据库?psql -U postgres(用户名)? 数据库名(缺省时同用户名) < /data

Linux学习之命令行获取公网IP方法详解

本文和大家分享的主要是主要是linux命令行获取公网IP相关内容,一起来看看吧,希望对大家学习linux有所帮助. curl ipinfo.io $ curl ipinfo.io { "ip": "36.10.25.4", "city": "Hangzhou", "region": "Zhejiang", "country": "CN", &quo

Unbun命令行运行后台程序方法

假设要用命令运行easystroke程序,并且不依赖命令行进程,有如下2种方法: 法一: $easystroke & $exit 法二: $nohup easystroke 以上2种方法中,法一在手动广播shell窗口时,会使程序退出;法二在<ctrl-c>时,会使程序退出. 若想程序不受以上2种可能退出的操作影响,可如下使用: $nohup easystroke &

Java或者PHP 执行命令行操作的快捷方法

有些Cli业务需要在第三方应用系统所在的服务器中运行.按照常用操作方法,这时候通常会搭建本业务需要的环境, 比如安装某些软件.配置环境变量等.有时候可能Java或PHP的版本不同,有时候本地服务器没有相关环境.这样操作,会对第三方应用系统的环境带来污染(程度可能有所不同). 按照下述方式操作,可以避免产生污染. 提取必要的DLL文件放置到某一指定文件夹下,解压缩Java或PHP后放置到相关文件夹下. 定义一个批处理文档,将上面两个文件夹加入环境变量(此时仅当前命令行进程下有效) 例如: titl

php使用PDO_OCI连接oracle,php-fpm下乱码,命令行正常的解决方法

屁颠屁颠本地环境 win7+nginx1.5.9+php5.4.15+pdo_oci 做完,结果正常. 上传测试. centos5.9+nginx1.5.9+php5.4.14+pdo_oci 结果:命令行能够正常,fast_cgi模式正常 故升级php版本到最新 php5.4.33 重装 结果:命令行正常并且不乱码,fast_cgi连接正常,但是乱码. 各种google,baidu,都没找到解决方法. 又安装一个和正式环境一致的php版本 php5.4.19 结果:依旧fast_cgi连接正常