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
相关推荐
指尖上跳动的旋律25 分钟前
shell脚本定义特殊字符导致执行mysql文件错误的问题
数据库·mysql
一勺菠萝丶36 分钟前
MongoDB 常用操作指南(Docker 环境下)
数据库·mongodb·docker
m0_748244831 小时前
StarRocks 排查单副本表
大数据·数据库·python
C++忠实粉丝2 小时前
Redis 介绍和安装
数据库·redis·缓存
wmd131643067122 小时前
将微信配置信息存到数据库并进行调用
数据库·微信
是阿建吖!2 小时前
【Linux】基础IO(磁盘文件)
linux·服务器·数据库
凡人的AI工具箱2 小时前
每天40分玩转Django:Django国际化
数据库·人工智能·后端·python·django·sqlite
ClouGence2 小时前
Redis 到 Redis 数据迁移同步
数据库·redis·缓存
m0_748236582 小时前
《Web 应用项目开发:从构思到上线的全过程》
服务器·前端·数据库
苏三说技术2 小时前
Redis 性能优化的18招
数据库·redis·性能优化