postgreSQL | 数据库管理
数据库管理1、Rolelogin role:拥有数据库的登录权限 member role:一个role继承其他role的权限,从而成为member role group role:拥有member role的role
1.1 创建、删除、查询创建可login role 创建group role 删除role 查询role du 1.2 Role属性一个数据库角色可以有一系列属性,这些属性定义他的权限,以及与客户认证系统的交互。 1.3 Role权限数据库对象在被创建时都会被赋予一个owner,owner就是执行对象创建语句的角色。对于大多数类型的对象,其初始状态是只有owner(或superuser)可以对该对象做任何事情。如果要允许其它用户可以使用该对象,必须赋予适当的权限。PostgreSQL中预定义了许多不同类型的内置权限,如:SELECT、INSERT、UPDATE、DELETE、RULE、REFERENCES、TRIGGER、CREATE、TEMPORARY、EXECUTE、USAGE。 使用GRANT命令来赋予权限: 其含义为:将tbl_name表的update权限赋予role_0角色。 GRANT UPDATE ON tbl_name TO role_0; 使用REVOKE命令撤销权限: 其含义为:对所有角色(PUBLIC)撤销在tbl_name对象上的所有权限(ALL)。 REVOKE ALL ON tbl_name FROM PUBLIC; 2、DataBase2.1 创建、删除创建数据库。 CREATE DATABASE database_name; 删除数据库。 drop database database_name; 2.2数据库访问2.2.1 登录psql命令登录数据库 参数含义如下:-U指定用户,-d指定数据库,-h指定服务器,-p指定端口 psql -U dbuser -d exampledb -h 127.0.0.1 -p 5432 2.2.2 修改数据库默认帐号的密码以Linux用户"postgres"的身份(此时只有该用户有psql命令)执行psql客户端。如果PostgreSQL内部存在“dbname”和“username”同名,则dbname可省略(系统用户名、数据库用户名、数据库名都为postgres,故简写) sudo -u postgres psql 修改该管理员密码,可用命令: postgres=# alter user postgres with password '123456'; 删除该管理员的密码,可用命令: sudo -u postgres psql -d postgres 2.2.3 实战 ### 创建一个角色 create user springboot with password '222221'; ### 给这个角色创建专属数据库 create database pgdb_test owner springboot; ### 用这个角色登录这个数据库 ###### 一、peer authentication failed for user "springboot" tu@ddouble:~$ psql -U springboot -d pgdb_test psql: FATAL: Peer authentication failed for user "springboot" 解决方法:参看链接 Open /etc/postgresql/9.5/main/pg_hba.conf with root access sudo nano /etc/postgresql/9.5/main/pg_hba.conf Change peer to md5 in these lines. Before changing # "local" is for Unix domain socket connections only local all all peer # IPv4 local connections: host all all 127.0.0.1/32 peer # IPv6 local connections: host all all ::1/128 peer After your change # "local" is for Unix domain socket connections only local all all md5 # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5 Save the file with pressing Ctrl-O. Exit nano with Ctrl-X Restart postgresql using sudo service postgresql restart 2.3 database、 table 、schema 的三者关系
schema对database中的table进行逻辑分组管理。
schema(架构)是指定的表集合。 它还可以包含视图,索引,序列,数据类型,运算符和函数。
DB之间互相独立,故而DB各自的schema、table也独立 DB下属schema(nums >=1),初始有一个public schema schema下属“相关table” 2.4 schema管理2.4.1添加/删除schema### 添加 | 语法 CREATE SCHEMA schema_name; ### 添加 | 指定拥有的user CREATE SCHEMA schema_name AUTHORIZATION user_name; ### 添加 | 确保模式被创建 CREATE SCHEMA IF NOT EXISTS schema_name; ### 删除 | 语法 DROP SCHEMA schema_name; ### 删除 | 级联删除 DROP SCHEMA schema_name CASCADE; 2.4.2 schema间对象移动### 单个对象移动 ALTER TABLE table_name SET SCHEMA another_schema_name; ### 所有对象移动 应用条件:第二模式不存在同名对象。如果存在,则为每个对象执行alter table ALTER SCHEMA first_schema_name RENAME TO second_schema_name; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |