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
相关推荐
Elastic 中国社区官方博客3 分钟前
使用 ES|QL 变量控件将仪表板转变为调查工具
大数据·运维·服务器·数据库·elasticsearch·搜索引擎·全文检索
feng68_6 分钟前
Ansible还原数据库节点
linux·运维·数据库·ansible
乐hh10 分钟前
清理MySQL数据
数据库·mysql
EasyCVR13 分钟前
国标GB28181/RTSP/ONVIF/RTMP视频监控平台EasyCVR视频质量诊断花屏/蓝屏/画面模糊/冻结检测
网络·数据库·音视频
C^h16 分钟前
RTthread中的内存池理解
linux·数据库·c++·算法·嵌入式
fobwebs18 分钟前
wordpress 网站安装了Yoast SEO,并且做了内容的优化后,如果想重置Yoast SEO,并且删除所有的优化内容,应该如何操作?
数据库·yoast seo·重置yoast seo·清空yoast seo内容
路由侠内网穿透35 分钟前
本地部署开源 LLM 应用观测与调试平台 Langfuse 并实现外部访问
运维·服务器·数据库·物联网·开源
SPC的存折35 分钟前
1、Ansible之Ansible安装与入门
linux·数据库·ansible
qiumingxun40 分钟前
mysql的分区表
数据库·mysql
sxhcwgcy41 分钟前
Spring Boot中集成MyBatis操作数据库详细教程
数据库·spring boot·mybatis