进入到数据库之后:
创建新用户
create user 新用户名 with password "你的密码"; 2790hhxL
查看有哪几个用户
\du
以超级用户进入到 db1 这个数据库中,将当前数据库下 public schema 的表都授权于 test
db1=# GRANT ALL PRIVILEGES ON all tables in schema public TO test;
db1=# grant all privileges on database db1 to test;
以新用户登录数据库
# 这里是 openguass, 所以是gsql
omm@9f0ef8c72382:~$ gsql -U 新用户名 # 不指定数据库名字时,默认连接与用户名同名的数据库
omm@9f0ef8c72382:~$ gsql -U test -d db1 # 以 test用户登录,指定连接 db1 数据库
db1=> insert into t_user1 values(12,'fdsf'); # 插入数据, postgresql中不可以双引号
报错
普通用户创建数据库时报错:ERROR: permission denied to create database
登陆超级用户进入数据库
ALTER ROLE 新用户 CREATEROLE CREATEDB;
创建表时报错:ERROR: permission denied for schema public DETAIL: N/A
解决办法:超级用户登录数据库,然后进行授权。
GRANT ALL PRIVILEGES TO 新用户;
postgreSQL 创建用户并授权
openGauss : 新用户权限
postgres数据库查看用户权限
ERROR: permission denied to create database
查看postgresql数据库用户系统权限
Docker容器中导入sql文件
将 sql 文件 导入 docker 中
docker cp FileRecv\employees_data.sql opengauss:/tmp/
查看是否导入成功
在 opengauss 中 执行 sql文件
# su - omm
omm@9f0ef8c72382:~$ gsql -U test -d employees
employees=> \i /tmp/employees_data.sql
登陆进数据库时,发现 \dt, No relations found.
以及在使用存储过程中,relation “department” does not exist on gaussdb
发现是模式不对,
SHOW search_path;
SET search_path TO myschema;
需要进一步了解的内容,视图,触发器,存储过程,索引,事务,查询进一步掌握
权限控制
删除用户:
-- 有的时候,用户身上有一些权限,这个时候需要先撤回权限, 然后才能删除
revoke all on database databasename from username;
revoke all on table tablename from username;
revoke all on SCHEMA schemaname from username; -- 都是类似的
revoke all on SEQUENCE sequence from username;
DROP user username;(现在删除就不会有任何权限受限而删除失败)
-- grant 和 revoke 是类似的
-- 想指定某项权限时, 就将 all 替换掉
GRANT ALL PRIVILEGES ON DATABASE databasename TO username;
GRANT ALL PRIVILEGES ON table tablename TO username;
GRANT SELECT ON SEQUENCE id_employee_seq TO role1;
GRANT USAGE ON SCHEMA employees TO role1;