postgresql的基本使用

2023-12-13 17:33:30
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

登录

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


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

数据库操作

#创建数据库
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 和 几何数据等。

建表

#创建表
CREATE TABLE test(id int,body varchar(100));

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

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

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

控制台常用命令总结

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

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

赋予登录权限

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 创建角色的权限

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=#

用户操作

#创建用户并设置密码
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

文章来源:https://blog.csdn.net/weixin_44145338/article/details/134846806
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。