postgreSQL数据库默认用户postgres常用命令分享
1、修改用户postgres的密码
#alteruserpostgreswithpassword‘xxxx';(其中xxxx是修改的密码)。
2、查看下当前schema的所有者:
//查看当前schema的所有者,相当于\du元命令 SELECTn.nspnameAS"Name", pg_catalog.pg_get_userbyid(n.nspowner)AS"Owner" FROMpg_catalog.pg_namespacen WHEREn.nspname!~'^pg_'ANDn.nspname<>'information_schema' ORDERBY1;
3、查询结果如图所示,模式“abc”的所有者为postgresql用户
针对模式“abc”,使用超级管理员postgresql给普通用户test授权,命令如下:
//最后一条命令就是授予初始权限 grantselectonalltablesinschemaabctotest; grantusageonschemaabctotest; alterdefaultprivilegesinschemaabc #将表mytable,授权给testUser; #GRANTSELECTONTABLEmytableTOtestUser;
4、查看默认权限
授权完成,通过pg_default_acl表查看默认权限:
//查看初始权限 select*frompg_catalog.pg_default_acl;
5、把模式“abc”的拥有者(owner)修改为dbadmin用户(可以事先创建好),执行以下命令:
//修改模式“abc”拥有者为:dbadmin ALTERSCHEMAabcOWNERTO"dbadmin"; //查看模式的拥有者,相当于\du元命令 SELECTn.nspnameAS"Name", pg_catalog.pg_get_userbyid(n.nspowner)AS"Owner" FROMpg_catalog.pg_namespacen WHEREn.nspname!~'^pg_'ANDn.nspname<>'information_schema' ORDERBY1;
6、postgre查询所有用户,postgre中查询用户所拥有的权限
select*frompg_roles; select*frompg_user;
权限查询:
select*frominformation_schema.table_privilegeswheregrantee='cc';
查看当前用户的所有权限
select*frominformation_schema.table_privilegeswheregrantee='user_name';
7、把适用于该对象的所有权限都赋予目标角色。
用特殊的名字PUBLIC把对象的权限赋予系统中的所有角色。在权限声明的位置上写ALL,表示把适用于该对象的所有权限都赋予目标角色。
beigang=#grantallonschemacsm_catopublic; GRANT beigang=#revokeallonschemacsm_cafrompublic; REVOKE
8、先创建一个角色xxx,再创建一个超级用户csm、普通用户csm_ca,csm用户创建一个数据库testdb,在这个数据库里创建一个schema:csm_ca,然后赋予普通用户csm_ca操作数据库testdb里schema:csm_ca里的表的权限。
#createrole: #createrolexxxwithsuperuser; #Createuser: #createusercsmwithsuperuserpassword'csm'; #createusercsm_cawithpassword'csm_ca';
9、超级用户csm给普通用户csm_ca授予操作schemacsm_ca的权限
beigang=#grantallonschemacsm_catocsm_ca; GRANT beigang=#grantallonalltablesinschemacsm_catocsm_ca; GRANT
10、创建用户
#创建普通用户 postgres=#createusertestencryptedpassword'test'; #创建超级用户 postgres=#createusertest2superuser; #创建一个普通用户,并且赋予相关权限 #createusertestcreatedbcreateroleinheritpassword'test'; #将超级用户修改为普通用户 #alterusertestnosuperuser; #修改用户为超级用户 postgres=#alterusertestsuperuser; #修改用户密码 postgres=#alterusertest2password'test'; #修改用户名 postgres=#alterusertest2renametotest3; #锁定/解锁用户,不允许/允许其登录 postgres=#alterusertestnologin; postgres=#alterusertestlogin; #设置用户的连接数,其中0表示不允许登录,-1表示无限制 postgres=#alterusertestconnectionlimit10;
11、授予用户数据库权限
GRANTALLPRIVILEGESONDATABASE数据库名TO用户名;
12、授予用户查看刚授权的数据库的里面的表的权限
GRANTALLPRIVILEGESONTABLE表名TO用户名;
13、附带一条:修改的表的类型
altertable表名alter字段名type类型;
14、附带一条:增加表新的字段
altertable表名addcolumn字段名text(字段类型);
15、新增:设置主键自增
CREATESEQUENCEuser_id_seq STARTWITH1 INCREMENTBY1 NOMINVALUE NOMAXVALUE CACHE1; altertablesys_useralterCOLUMNidsetDEFAULTnextval('user_id_seq');
16、新增:postgres创建B-Tree索引
--createindex'索引名'on'表名'('需要索引的字段') CREATEINDEXip_store_indeonip_store(ip_network);
添加各种约束
(1)、添加主键
altertablegoodsaddprimarykey(sid);
(2)、添加外键
altertableordersaddforeignkey(goods_id)referencesgoods(sid)onupdatecascadeondeletecascade;
onupdatecascade:被引用行更新时,引用行自动更新;
onupdaterestrict:被引用的行禁止更新;
ondeletecascade:被引用行删除时,引用行也一起删除;
ondelleterestrict:被引用的行禁止删除;
(3).删除外键
altertableordersdropconstraintorders_goods_id_fkey;
(4).添加唯一约束
altertablegoodsaddconstraintunique_goods_sidunique(sid);
(5).删除默认值
altertablegoodsaltercolumnsiddropdefault;
(6).修改字段的数据类型
altertablegoodsaltercolumnsidtypecharactervarying;
(7).重命名字段
altertablegoodsrenamecolumnsidtossid;
17、创建唯一键约束
constraintuser_info_unique_useridunique(userid)
扩展
编辑配置文件
文件:postgresql.conf
位置:/var/lib/pgsql/data/postgresql.conf
添加/修改:在所有IP地址上监听,从而允许远程连接到数据库服务器:
listening_address:'*'
文件:pg_hba.conf
位置:/var/lib/pgsql/data/pg_hba.conf
添加/修改:允许任意用户从任意机器上以密码方式访问数据库,把下行添加为第一条规则:
hostallall0.0.0.0/0md5
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。