热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

postgres数据库的运维常用操作

1.查看指定数据库内用户关联表权限2.查看当前登录用户名3.切换数据库4.查看当前数据库查询schema模式路径5.查看当前数据库所有schema模式6.查看当前数据库表信息7.查
  • 1.查看指定数据库内用户关联表权限
  • 2.查看当前登录用户名
  • 3.切换数据库
  • 4.查看当前数据库查询schema模式路径
  • 5.查看当前数据库所有schema模式
  • 6.查看当前数据库表信息
  • 7.查看当前数据库某表结构
  • 8.查看当前数据库有哪些schema模式
  • 9.查看当前数据库指定表权限
  • 10.创建指定数据库的只读账号
  • 11.手动同步主postgresql文件
  • 12.创建用户、删除用户
  • 13.创建数据库、删除数据库
  • 14.查询正在执行的SQL操作
  • 15.杀死SQL进程
  • 16.使用表pg_stat_all_tables查看autovacuum执行记录
  • 17.查看所有数据库事务ID目前值
  • 18.vacuum重置事务ID
  • 19.PG进入单用户模式
  1. 查看指定数据库内用户关联表权限

sms=> select * from information_schema.table_privileges where grantee = 'seal_rw';
grantor | grantee | table_catalog | table_schema | table_name | privilege_type | is_grantable | with_hierarchy
---------+---------+---------------+--------------+------------+----------------+--------------+----------------
(0 rows)

  1. 查看当前登录用户名

sms=> select current_user;
current_user
--------------
sms_rw
(1 row)

  1. 切换数据库

sms=> \c db_name db_user
sms=> \c - db_user
sms=> \c db_name -

  1. 查看当前数据库查询schema模式路径

sms=> show search_path;
search_path
-----------------
"$user", public
(1 row)

  1. 查看当前数据库所有schema模式

sms=> select current_schemas(true);
current_schemas
---------------------
{pg_catalog,public}
(1 row)

  1. 查看当前数据库表信息

sms=> \d
List of relations
Schema | Name | Type | Owner
--------+-----------------------+----------+----------
public | pg_stat_statements | view | postgres
public | sms_black_list | table | sms_rw
public | sms_black_list_id_seq | sequence | sms_rw
public | sms_send_log | table | sms_rw
public | sms_send_log_id_seq | sequence | sms_rw
public | sms_sending | table | sms_rw
public | sms_sending_id_seq | sequence | sms_rw
public | sms_template | table | sms_rw
public | sms_template_id_seq | sequence | sms_rw
(9 rows)
sms=> \d+
List of relations
Schema | Name | Type | Owner | Size | Description
--------+-----------------------+----------+----------+------------+----------------
public | pg_stat_statements | view | postgres | 0 bytes |
public | sms_black_list | table | sms_rw | 16 kB | 黑名单
public | sms_black_list_id_seq | sequence | sms_rw | 8192 bytes |
public | sms_send_log | table | sms_rw | 3080 kB | 已短信发送记录
public | sms_send_log_id_seq | sequence | sms_rw | 8192 bytes |
public | sms_sending | table | sms_rw | 16 kB | 待短信发送记录
public | sms_sending_id_seq | sequence | sms_rw | 8192 bytes |
public | sms_template | table | sms_rw | 64 kB | 短信模板
public | sms_template_id_seq | sequence | sms_rw | 8192 bytes |

  1. 查看当前数据库某表结构

sms=> \d+ sms_black_list
Table "public.sms_black_list"
Column | Type | Modifiers | Storage | Stats target | Description
---------+--------+-------------------------------------------------------------+----------+--------------+-------------
id | bigint | not null default nextval('sms_black_list_id_seq'::regclass) | plain | |
mobiles | jsonb | | extended | | 手机号码
Indexes:
"sms_black_list_pkey" PRIMARY KEY, btree (id)

  1. 查看当前数据库有哪些schema模式

sms=> \dn
List of schemas
Name | Owner
--------+----------
public | postgres
(1 row)

  1. 查看当前数据库指定表权限

sms=# \dp sms_black_list
Access privileges
Schema | Name | Type | Access privileges | Column privileges | Policies
--------+----------------+-------+-----------------------+-------------------+----------
public | sms_black_list | table | sms_rw=arwdDxt/sms_rw+| |
| | | sms_read=r/sms_rw | |
(1 row)

  1. 创建指定数据库的只读账号

创建指定数据库相对应的只读账号,需要先切换到指定数据库,在执行下面命令

此处以创建p2p_activity_r 只读账号为例
postgres=# create role p2p_activity_r LOGIN NOSUPERUSER NOCREATEDB NOCREATEROLE encrypted password 'xxxx';
postgres=# \c p2p_activity p2p_activity_rw;
Password for user p2p_activity_rw:
You are now connected to database "p2p_activity" as user "p2p_activity_rw".
p2p_activity=> grant connect on database p2p_activity to p2p_activity_r;
GRANT
p2p_activity=> grant usage on schema public to p2p_activity_r;
WARNING: no privileges were granted for "public"
GRANT
p2p_activity=> grant select on all tables in schema public to p2p_activity_r;
WARNING: no privileges were granted for "pg_stat_statements"
GRANT
p2p_activity=> ALTER DEFAULT PRIVILEGES IN SCHEMA public grant select on tables to p2p_activity_r;
ALTER DEFAULT PRIVILEGES
p2p_activity=> \q
----------------------------------------------------------
说明:
查看当前用户下的schema,一般情况都是public
sms=> select current_schema;
current_schema
----------------
public
(1 row)

  1. 手动同步主postgresql文件

-bash-4.1$ pg_basebackup -D $PGDATA -Fp -Xs -v -h 192.168.6.54 -p 5432 -U postgres

  1. 创建用户、删除用户

postgres=# create user zhangshan with login encrypted password '100abcd';
postgres=# drop user user_name;

13.创建数据库、删除数据库

postgres=# create database db_name owner user_name;
postgres=# drop database db_name;

14.查询正在执行的SQL操作

postgres=# show track_activities ;
track_activities
------------------
off
(1 row)
postgres=# set track_activities=on;
postgres=# select datname,usename,state,query from pg_stat_activity where state='active';

15.杀死SQL进程

kill有两种方式,第一种是:
SELECT pg_cancel_backend(PID);
这种方式只能kill select查询,对update、delete 及DML不生效)
第二种是:
SELECT pg_terminate_backend(PID);
这种可以kill掉各种操作(select、update、delete、drop等)操作

16.使用表pg_stat_all_tables查看autovacuum执行记录

postgres=# select schemaname,relname,last_autovacuum,last_autoanalyze from pg_stat_all_tables;

17.查看所有数据库事务ID目前值

postgres=# SELECT datname,age(datfrozenxid) FROM pg_database ;

18.vacuum重置事务ID

需使用超级管理员登录PG,并使用超级管理员用户切换到重置数据库中,才能有效重置
psql
postgres=# \c channel;
postgres=# vacuum freeze;

19.PG进入单用户模式

PG必须停机才能进入单用户模式,流复制模式下,只需主库进行事务ID重置,从库不需要重置操作。

postgres --single -D $PGDATA loanapply
> vacuum freeze;

推荐阅读
  • Oracle seg,V$TEMPSEG_USAGE与Oracle排序的关系及使用方法
    本文介绍了Oracle seg,V$TEMPSEG_USAGE与Oracle排序之间的关系,V$TEMPSEG_USAGE是V_$SORT_USAGE的同义词,通过查询dba_objects和dba_synonyms视图可以了解到它们的详细信息。同时,还探讨了V$TEMPSEG_USAGE的使用方法。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 1.官网下载了mysql-5.7.17-win64.zip包,配置遇到很多麻烦,记录一下;2.解压后放到指定的文件夹,修改mysql-5.7.17的配置文件my-default.i ... [详细]
  • 浅析Mysql数据回滚错误的解决方法_PHP教程:MYSQL的事务处理主要有两种方法。1、用begin,rollback,commit来实现begin开始一个事务rollback事 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • mysql-cluster集群sql节点高可用keepalived的故障处理过程
    本文描述了mysql-cluster集群sql节点高可用keepalived的故障处理过程,包括故障发生时间、故障描述、故障分析等内容。根据keepalived的日志分析,发现bogus VRRP packet received on eth0 !!!等错误信息,进而导致vip地址失效,使得mysql-cluster的api无法访问。针对这个问题,本文提供了相应的解决方案。 ... [详细]
  • 本文介绍了禅道作为一款国产开源免费的测试管理工具的特点和功能,并提供了禅道的搭建和调试方法。禅道是一款B/S结构的项目管理工具,可以实现组织管理、后台管理、产品管理、项目管理和测试管理等功能。同时,本文还介绍了其他软件测试相关工具,如功能自动化工具和性能自动化工具,以及白盒测试工具的使用。通过本文的阅读,读者可以了解禅道的基本使用方法和优势,从而更好地进行测试管理工作。 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • TiDB | TiDB在5A级物流企业核心系统的应用与实践
    TiDB在5A级物流企业核心系统的应用与实践前言一、业务背景科捷物流概况神州金库简介二、现状与挑战神州金库现有技术体系业务挑战应对方案三、TiDB解决方案测试迁移收益问题四、说在最 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有