在gp中取消或者中断某个用户的超长时间或者SQL存在问题的会话,如果无法拥有超级用户将无法执行该类操作。 首先我们创建两个用户t1、t2,并且使用t1登录到数据库。 [gpadmin@wx60 ~]$ psql gtlionspsql (8.2.15)Type help for help. gtlions=# select version
在gp中取消或者中断某个用户的超长时间或者SQL存在问题的会话,如果无法拥有超级用户将无法执行该类操作。首先我们创建两个用户t1、t2,并且使用t1登录到数据库。
[gpadmin@wx60 ~]$ psql gtlions psql (8.2.15) Type "help" for help. gtlions=# select version(); version ------------------------------------------------------------------------------------------------------------------------------------------------------ PostgreSQL 8.2.15 (Greenplum Database 4.2.7.2 build 1) on x86_64-unknown-linux-gnu, compiled by GCC gcc (GCC) 4.4.2 compiled on Feb 25 2014 18:05:04 (1 row) gtlions=# \du List of roles Role name | Attributes | Member of -----------+-----------------------------------+----------- gpadmin | Superuser, Create role, Create DB | gtlions=# \dn List of schemas Name | Owner --------------------+--------- gp_toolkit | gpadmin information_schema | gpadmin pg_aoseg | gpadmin pg_bitmapindex | gpadmin pg_catalog | gpadmin pg_toast | gpadmin public | gpadmin (7 rows) gtlions=# create user t1 ; NOTICE: resource queue required -- using default resource queue "pg_default" CREATE ROLE gtlions=# create user t2; NOTICE: resource queue required -- using default resource queue "pg_default" CREATE ROLE gtlions=# \c gtlions t1 You are now connected to database "gtlions" as user "t1". 接下来我们使用用户t2登录到数据库,检查当前会话并尝试取消或者中断用户t1的会话。
[gpadmin@wx60 ~]$ psql -U t2 gtlions psql (8.2.15) Type "help" for help. gtlions=> select * from pg_stat_activity ; datid | datname | procpid | sess_id | usesysid | usename | current_query | waiting | query_start | backend_start | client_addr | client_port | application_name | xact_start -------+---------+---------+---------+----------+---------+----------------------------------+---------+-------------------------------+------------------------------- +-------------+-------------+------------------+------------------------------- 16992 | gtlions | 3395 | 13 | 25881 | t2 | select * from pg_stat_activity ; | f | 2014-10-11 09:25:56.197394+08 | 2014-10-11 09:25:43.293684+08 | | -1 | psql | 2014-10-11 09:25:56.197394+08 16992 | gtlions | 3384 | 12 | 25880 | t1 | <insufficient privilege> | | | | | | psql | (2 rows) gtlions=> select pg_cancel_backend(3384); ERROR: must be superuser to signal other server processes gtlions=> 会发现非超级用户无法执行取消或者中断其他用户的会话操作。 解决办法是自定义一个函数,并授权给t2用户执行权限,这样就可以实现上述操作了。
create or replace function session_mgr(procpid integer, opertype character) returns boolean as $BODY$ declare ret boolean; begin if opertype = 'c' then ret := (select pg_catalog.pg_cancel_backend(procpid)); elsif opertype = 'k' then ret := (select pg_catalog.pg_terminate_backend(procpid)); end if; return ret; end; $BODY$ LANGUAGE plpgsql security definer; gtlions=# grant execute on function session_mgr(integer, character) to t2; GRANT gtlions=# \c gtlions t1 You are now connected to database "gtlions" as user "t1". gtlions=> 接着使用用户t2进行相关操作。
[gpadmin@wx60 ~]$ psql -U t2 gtlions psql (8.2.15) Type "help" for help. gtlions=> select * from pg_stat_activity ; datid | datname | procpid | sess_id | usesysid | usename | current_query | waiting | query_start | backend_start | client_addr | client_port | application_name | xact_start -------+---------+---------+---------+----------+---------+----------------------------------+---------+-------------------------------+------------------------------- +-------------+-------------+----------------------------+------------------------------- 16992 | gtlions | 4034 | 19 | 25881 | t2 | select * from pg_stat_activity ; | f | 2014-10-11 09:48:53.767859+08 | 2014-10-11 09:48:51.285594+08 | | -1 | psql | 2014-10-11 09:48:53.767859+08 16992 | gtlions | 3678 | 15 | 10 | gpadmin | <insufficient privilege> | | | | | | pgAdmin III - ????????? | 16992 | gtlions | 3704 | 16 | 10 | gpadmin | <insufficient privilege> | | | | | | pgAdmin III - ???????????? | 16992 | gtlions | 4023 | 18 | 25880 | t1 | <insufficient privilege> | | | | | | psql | (4 rows) gtlions=> select session_mgr(4023,'c'); session_mgr ------------- t (1 row) gtlions=> select * from pg_stat_activity ; datid | datname | procpid | sess_id | usesysid | usename | current_query | waiting | query_start | backend_start | client_addr | client_port | application_name | xact_start -------+---------+---------+---------+----------+---------+----------------------------------+---------+-------------------------------+------------------------------- +-------------+-------------+----------------------------+------------------------------- 16992 | gtlions | 4034 | 19 | 25881 | t2 | select * from pg_stat_activity ; | f | 2014-10-11 09:52:03.279186+08 | 2014-10-11 09:48:51.285594+08 | | -1 | psql | 2014-10-11 09:52:03.279186+08 16992 | gtlions | 4065 | 20 | 10 | gpadmin | <insufficient privilege> | | | | | | pgAdmin III - ???????????? | 16992 | gtlions | 3678 | 15 | 10 | gpadmin | <insufficient privilege> | | | | | | pgAdmin III - ????????? | 16992 | gtlions | 3704 | 16 | 10 | gpadmin | <insufficient privilege> | | | | | | pgAdmin III - ???????????? | 16992 | gtlions | 4023 | 18 | 25880 | t1 | <insufficient privilege> | | | | | | psql | (5 rows) gtlions=> select session_mgr(4023,'k'); session_mgr ------------- t (1 row) gtlions=> select * from pg_stat_activity ; datid | datname | procpid | sess_id | usesysid | usename | current_query | waiting | query_start | backend_start | client_addr | client_port | application_name | xact_start -------+---------+---------+---------+----------+---------+----------------------------------+---------+-------------------------------+------------------------------- +-------------+-------------+----------------------------+------------------------------- 16992 | gtlions | 4034 | 19 | 25881 | t2 | select * from pg_stat_activity ; | f | 2014-10-11 09:52:28.473137+08 | 2014-10-11 09:48:51.285594+08 | | -1 | psql | 2014-10-11 09:52:28.473137+08 16992 | gtlions | 4065 | 20 | 10 | gpadmin | <insufficient privilege> | | | | | | pgAdmin III - ???????????? | 16992 | gtlions | 3678 | 15 | 10 | gpadmin | <insufficient privilege> | | | | | | pgAdmin III - ????????? | 16992 | gtlions | 3704 | 16 | 10 | gpadmin | <insufficient privilege> | | | | | | pgAdmin III - ???????????? | 16992 | gtlions | 4189 | 21 | 25880 | t1 | <insufficient privilege> | | | | | | psql | (5 rows) gtlions=> 最后检查下t1当前进程。
gtlions=> select version(); FATAL: terminating connection due to administrator command server closed the connection unexpectedly This probably means the server terminated abnormally before or while processing the request. The connection to the server was lost. Attempting reset: Succeeded. -EOF-

Laravel扩展包管理:轻松集成第三方代码和功能引言:在Laravel开发中,我们经常使用第三方代码和功能来提高项目的效率和稳定性。而Laravel扩展包管理系统允许我们轻松地集成这些第三方代码和功能,使得我们的开发工作更加便捷和高效。本文将介绍Laravel扩展包管理的基本概念和使用方法,并通过一些实际的代码示例来帮助读者更好地理解和应用。什么是Lara

如何在麒麟操作系统上进行网络服务器的设置和管理?麒麟操作系统是中国自主开发的一种基于Linux的操作系统。它具有开源、安全、稳定等特点,在国内得到了广泛的应用。本文将介绍如何在麒麟操作系统上进行网络服务器的设置和管理,帮助读者更好地搭建和管理自己的网络服务器。一、安装相关软件在开始设置和管理网络服务器之前,我们需要先安装一些必要的软件。在麒麟操作系统上,可以

如何在麒麟操作系统上进行硬盘空间的管理和清理?麒麟操作系统是一个基于Linux的操作系统,相比其他操作系统,麒麟提供了更多的自由度和可定制性。在长期的使用过程中,我们经常会遇到硬盘空间不足的问题,这时候就需要进行硬盘空间的管理和清理。本文将介绍如何在麒麟操作系统上进行硬盘空间的管理和清理,包括查看硬盘空间使用情况、删除不必要的文件以及使用磁盘清理工具。首先,

MongoDB技术开发中遇到的事务管理问题解决方案分析随着现代应用程序变得越来越复杂和庞大,对数据的事务处理需求也越来越高。作为一种流行的NoSQL数据库,MongoDB在数据管理方面有着出色的性能和扩展性。然而,MongoDB在数据一致性和事务管理方面相对较弱,给开发人员带来了挑战。在本文中,我们将探讨在MongoDB开发中遇到的事务管理问题,并提出一些解

随着互联网的发展,越来越多的企业开始使用网络进行业务处理,这就要求企业必须有一套完善的审核流程管理系统来确保业务的安全和规范。在PHP开发中,ThinkPHP6框架提供了便捷的审核流程管理功能,本文将介绍如何在ThinkPHP6中实现审核流程管理。一、ThinkPHP6审核流程管理基本思路ThinkPHP6的审核流程管理基本思路是通过数据库记录来实现,一般需

在高可用性(HA)的系统中,集群是不可或缺的一部分。当一个单一节点不能提供足够的可用性或性能时,集群是一种实用的解决方案。Linux是非常流行的集群环境,它通过多种途径来提供集群的实现和支持。在本文中,我们将学习如何在Linux中进行集群管理。集群管理软件Linux使用许多集群管理软件来帮助管理员轻松地管理多台服务器的集群实例。有许多工具可供选择,其

随着互联网技术的快速发展,越来越多的应用程序将安全性放在首位,其中HTTPS证书的管理绑定显得越来越重要。在Vue应用中,HTTPS证书的绑定管理也是至关重要的一环,本文将介绍Vue应用中如何进行HTTPS证书的绑定管理。一、HTTPS证书的基础知识HTTPS证书(SSL/TLS证书)的作用是在网站与用户之间建立加密通道,确保用户的数据安全。当用户在浏览器中

麒麟操作系统如何提供多屏幕工作环境的扩展和管理?随着计算机技术的不断发展,多屏幕显示已经成为现代工作环境中的一个常见需求。为了满足用户对于多任务处理和工作效率的要求,麒麟操作系统提供了一套强大的多屏幕扩展和管理功能。本文将介绍麒麟操作系统如何实现多屏幕工作环境的扩展和管理,并附上相应的代码示例。多屏幕工作环境的扩展麒麟操作系统通过提供多屏幕工作环境的扩展功能


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

WebStorm Mac版
便利なJavaScript開発ツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ホットトピック









