postgresql的基本使用

sql 复制代码
1 #创建用户并设置密码
CREATE USER "username" WITH PASSWORD "password";
create user test with password'test';

2 # 修改用户密码
ALTER USER "username" WITH PASSWORD 'password';
alter user 用户名 with password '设置密码'

3 # 数据库授权,赋予指定账户指定数据库所有权限
GRANT ALL PRIVILEGES ON DATABASE dbname TO "username";
grant all privileges on database dbname to '用户名';

4 # 将数据库 mydb 权限授权于 test12
GRANT ALL PRIVILEGES ON DATABASE mydb To test;
grant all privileges on database mydb to test;

5 # 但此时用户还是没有读写权限,需要继续授权表1a
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO Xxx;
grant all privileges on all tables in schema public to xxx;

6 # 注意,该sq1语句必须在所要操作的数据库里执行

7 # 移除指定账户指定数据库所有权限
REVOKE ALL PRIVILEGES ON DATABASE mydb from test
revoke all privileges on database mydb from test;

8 # 删除用户
drop user test

登录

shell 复制代码
#psql -h 服务器 -U 用户名  -d 数据库 -p 端口地址  // -U 是大写
psql -U dbuser -d exampledb -h 127.0.0.1 -p 5432


$ psql (连接数据库默认用户和数据库都是postgres)
#相当于系统用户postgres以同名数据库用户的身份登录数据库这是不用输入密码的。如果一切正常系统提示符会变为"postgres=#"表示这时已经进入了数据库控制台。

数据库操作

sql 复制代码
#创建数据库
CREATE DATABASE mydb;

#查看所有数据库
\l

#切换当前数据库
\c mydb


#删除数据库
drop database <dbname>

删除库可能会遇到的问题

SELECT pg_terminate_backend(pg_stat_activity.pid)

FROM pg_stat_activity

WHERE datname='testdb' AND pid<>pg_backend_pid();

执行上面的语句之后在执行DROP操作就可以删除数据库了。

上面语句说明

pg_terminate_backend用来终止与数据库的连接的进程id的函数。

pg_stat_activity是一个系统表用于存储服务进程的属性和状态。

pg_backend_pid()是一个系统函数获取附加到当前会话的服务器进程的ID

数据库表操作

创建表格时每列都必须使用数据类型。PotgreSQL中主要有三类数据类型

●数值数据类型

●字符串数据类型

●日期/时间数据类型

数值

常见数值类型包括

名字 存储长度 描述 范围

smallint 2 字节 小范围整数 -32768 到 +32767

integer 4 字节 常用的整数 -2147483648 到 +2147483647

bigint 8 字节 大范围整数 -9223372036854775808 到 +9223372036854775807

decimal 可变长 用户指定的精度精确 小数点前 131072 位小数点后 16383 位

numeric 可变长 用户指定的精度精确 小数点前 131072 位小数点后 16383 位

real 4 字节 可变精度不精确 6 位十进制数字精度

double 8 字节 可变精度不精确 15 位十进制数字精度

字符串字符串类型包括

●char(size)character(size)固定长度字符串size 规定了需存储的字符数由右边的空格补齐

●varchar(size)character varying(size)可变长度字符串size 规定了需存储的字符数

●text可变长度字符串。

日期/时间

表示日期或时间的数据类型有

●timestamp日期和时间

●date日期无时间

●time时间

其他数据类型类型还有布尔值 boolean true 或 false货币数额 money 和 几何数据等。

建表

sql 复制代码
#创建表
CREATE TABLE test(id int,body varchar(100));

#在表中插入数据
insert into test(id,body) values(1,'hello,postgresql');

#查看当前数据库下所有表
\d

#查看表结构相当于desc
\d test

控制台常用命令总结

sql 复制代码
\password 命令设置密码
\q  命令退出
\h  查看SQL命令的解释比如\h select。
\?  查看psql命令列表。
\l  列出所有数据库。
\c  [database_name]连接其他数据库。
\d  列出当前数据库的所有表格。
\d  [table_name]列出某一张表格的结构。
\du 列出所有用户。

给已存在用户赋予各种权限

赋予登录权限

sql 复制代码
postgres=# ALTER ROLE bella WITH LOGIN;
ALTER ROLE
postgres=# \du
                             List of roles
 Role name |                   Attributes                   | Member of 
-----------+------------------------------------------------+-----------
 bella     | Create DB                                      | {}
 david     |                                                | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}
 renee     | Create DB                                      | {}
 sandy     |                                                | {}

postgres=#

赋予renee 创建角色的权限

sql 复制代码
postgres=# ALTER ROLE renee WITH CREATEROLE;
ALTER ROLE
postgres=# \du
                             List of roles
 Role name |                   Attributes                   | Member of 
-----------+------------------------------------------------+-----------
 bella     | Create DB                                      | {}
 david     |                                                | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}
 renee     | Create role, Create DB                         | {}
 sandy     |                                                | {}

postgres=#

用户操作

sql 复制代码
#创建用户并设置密码
CREATE USER 'username' WITH PASSWORD 'password';
CREATE USER test WITH PASSWORD 'test';


#修改用户密码
$ ALTER USER 'username' WITH PASSWORD 'password';


#数据库授权,赋予指定账户指定数据库所有权限
$ GRANT ALL PRIVILEGES ON DATABASE 'dbname' TO 'username';
#将数据库 mydb 权限授权于 test
GRANT ALL PRIVILEGES ON DATABASE mydb TO test;
#但此时用户还是没有读写权限需要继续授权表
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO xxx;
#注意该sql语句必须在所要操作的数据库里执行



#移除指定账户指定数据库所有权限
REVOKE ALL PRIVILEGES ON DATABASE mydb from test

#删除用户
drop user test



# 查看用户
\du
相关推荐
辞旧 lekkk2 小时前
【Qt】信号和槽
linux·开发语言·数据库·qt·学习·mysql·萌新
2301_809204703 小时前
JavaScript中严格模式use-strict对引擎解析的辅助.txt
jvm·数据库·python
zjy277773 小时前
mysql如何选择合适的索引类型_mysql索引设计实战
jvm·数据库·python
笨蛋不要掉眼泪4 小时前
Mysql架构揭秘:update语句的执行流程
数据库·mysql·架构
万邦科技Lafite4 小时前
京东item_get接口实战案例:实时商品价格监控全流程解析
java·开发语言·数据库·python·开放api·淘宝开放平台
秋94 小时前
ruoyi项目更换为mysql9.7.0数据库
数据库
Andya_net5 小时前
MySQL | MySQL 8.0 权限管理实践-精确赋予库、表只读等权限
android·数据库·mysql
筑梦之路6 小时前
harbor数据库报错权限异常如何处理——筑梦之路
数据库·harbor
czlczl200209256 小时前
理解 MySQL 行锁:两阶段锁协议与热点更新优化
数据库·mysql
AllData公司负责人7 小时前
通过Postgresql同步到Doris,全视角演示AllData数据中台核心功能效果,涵盖:数据入湖仓,数据同步,数据处理,数据服务,BI可视化驾驶舱
java·大数据·数据库·数据仓库·人工智能·python·postgresql