Think Deep,Work Lean

postgres数据库基本操作

Posted on By zack

导出数据库及具体表

标准语句:

pg_dump --host xxxxx.com --port 3434 --username cs  > cs.sql cs
  1. 导出数据库:

pg_dump  -U username -d db_name > /tmp/zk.sql

  1. 导出表:

pg_dump -U username -t table_name db_name > db.sql

  1. 导出并压缩

pg_dump -d db_name | gzip > db.gz

导入数据库及表

  • 导入数据库
    createdb dbname  
    psql -U username -d db_name < db.sql
    
  • 导入具体表(不用指定表名)
    psql  -d zone  -f /opt/zone.sql
    

将数据库重命名

ALTER DATABASE name RENAME TO new_name

将表重命名

alter table quota rename to quotabak 注意,如果上述quotabak是quota-bak就会失败

创建新用户并给所有权限

CREATE USER zack WITH PASSWORD 'Zhu88jie'; GRANT ALL PRIVILEGES ON DATABASE zone TO zack; GRANT ALL PRIVILEGES ON TABLE zone TO zack;

REVOKE CONNECT ON DATABASE zone from public; grant connect on database zone to zack; REVOKE ALL ON ALL TABLES IN SCHEMA public FROM PUBLIC; GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO zack;

设置允许远程连接

参考

  1. 修改postgresql.conf

/etc/postgresql/9.x/main/postgresql.conf listen_addresses = '*'

  1. 修改pg_hba.conf

pg_hba.conf,位置与postgresql.conf相同,虽然上面配置允许任意地址连接PostgreSQL,但是这在pg中还不够,我们还需在pg_hba.conf中配置服务端允许的认证方式。任意编辑器打开该文件,编辑或添加下面一行。

# TYPE  DATABASE  USER  CIDR-ADDRESS  METHOD
host  all  all 0.0.0.0/0 md5

默认pg只允许本机通过密码认证登录,修改为上面内容后即可以对任意IP访问进行密码验证。对照上面的注释可以很容易搞明白每列的含义,具体的支持项可以查阅文末参考引用。

完成上两项配置后执行sudo service postgresql restart重启PostgreSQL服务后,允许外网访问的配置就算生效了。

附:

mysql> SHOW TABLE STATUS LIKE 'testalter_tbl'\G