一、前言
众所周知,postgres是一种比较先进的对象关系型数据库DBMS,支持SQL标准的扩展,包括事务、外键、子查询等一系列关系型数据库的特性。
二、常见的Postgres操作
1、基本操作
登录
#注意:登录时,默认使用postgres用户和postgres数据库
#首先确保系统中存在postgres用户和对应的用户组
su - postgres
psql
执行后,即可进入postgres界面
2、数据库操作
#1、列举数据库,相当于MySQL中的 show databases
\l
#2、切换数据库,相当于MySQL中的use db
\c <dbname>
#3、列出数据库中对应的表信息,相当于show tables;
\dt
#4、查看表结构,相当于 desc;
\d tdlname
#5、创建数据库
create database <database>
#6、删除数据库
drop database <dbname>
#7、创建表
create table ([字段名1] [类型1] ;,[字段名2] [类型2],......<,primary key (字段名m,字段名n,...)>;);
#8、在表中插入数据
insert into 表名 ([字段名m],[字段名n],......) values ([列m的值],[列n的值],......);
#9、备份数据库
pg_dump -U postgres -f /tmp/postgres.sql postgres #(导出postgres数据库保存为postgres.sql)
pg_dump -U postgres -f /tmp/postgres.sql -t test01 postgres #(导出postgres数据库中表test01的数据)
pg_dump -U postgres -F t -f /tmp/postgres.tar postgres #(导出postgres数据库以tar形式压缩保存为postgres.tar)
#10、恢复数据库
psql -U postgres -f /tmp/postgres.sql test01 # 恢复postgres.sql数据到test01数据库
pg_restore -U postgres -d test01 /tmp/postgres.tar # 恢复postgres.tar数据到test01数据库
3、用户操作
1、切换用户
\c - <username>
2、创建用户并设置密码
create user 'username' with password 'password';
create role 'username' createdb password 'password' login; # 创建角色并授予创建数据库及密码登录的属性
3、修改用户密码
alter user 'username' with password 'password';
4、修改用户权限
alter role 'username' createdb; # 授予某个用户创建数据库权限
alter role 'username' superuser; # 授予超级管理员权限
5、数据库授权
grant all privileges on database 'dbname' to 'username'
6、角色属性
属性 说明
login 只有具有 LOGIN 属性的角色可以用做数据库连接的初始角色名。
superuser 数据库超级用户
createdb 创建数据库权限
createrole 允许其创建或删除其他普通的用户角色(超级用户除外)
replication 做流复制的时候用到的一个用户属性,一般单独设定。
password 在登录时要求指定密码时才会起作用,比如md5或者password模式,跟客户端的连接认证方式有关
inherit 用户组对组员的一个继承标志,成员可以继承用户组的权限特性