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
相关推荐
三月七(爱看动漫的程序员)8 分钟前
LLM面试题六
数据库·人工智能·gpt·语言模型·自然语言处理·llama·milvus
追光天使1 小时前
Mac 上使用 mysql -u root -p 命令,出现“zsh: command not found: mysql“?
数据库·mysql·macos
高铭杰1 小时前
Citus源码(2)分布式读流程分析与基础概念梳理(shardid、placementid、groupid)
数据库·分布式·postgresql·citus
_GR2 小时前
rdiff-backup备份
数据库
Hi_Lyn4 小时前
MySQL表的增删改查基础版
数据库·mysql
Feng.Lee4 小时前
如何判断数据来源缓存还是数据库
数据库·缓存
随缘而动,随遇而安5 小时前
第四十篇 企业级数据仓库建模深度实践:从理论到落地的维度建模全攻略
大数据·数据库·数据仓库·数据分析·数据库架构
快来卷java6 小时前
MySQL篇(四)事务相关知识详解
java·数据库·mysql·链表
꧁坚持很酷꧂6 小时前
Qt实现鼠标右键弹出弹窗退出
数据库·qt·计算机外设
振鹏Dong6 小时前
MySQL系统库汇总
数据库·mysql