导出数据库及具体表
标准语句:
pg_dump --host xxxxx.com --port 3434 --username cs > cs.sql cs
- 导出数据库:
pg_dump -U username -d db_name > /tmp/zk.sql
- 导出表:
pg_dump -U username -t table_name db_name > db.sql
- 导出并压缩
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;
设置允许远程连接
- 修改postgresql.conf
/etc/postgresql/9.x/main/postgresql.conf
listen_addresses = '*'
- 修改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