Maison base de données tutoriel mysql 非superuser管理会话

非superuser管理会话

Jun 07, 2016 pm 04:04 PM
中断 会话 取消 用户 管理

在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的会话。
Copier après la connexion
[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用户执行权限,这样就可以实现上述操作了。
Copier après la connexion
create or replace function session_mgr(procpid integer, opertype character)
	returns boolean
	as
$BODY$
declare
	ret boolean;
begin
	if opertype = &#39;c&#39; then
		ret := (select pg_catalog.pg_cancel_backend(procpid));
	elsif opertype = &#39;k&#39; 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进行相关操作。
Copier après la connexion
[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,&#39;c&#39;);
 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,&#39;k&#39;);
 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当前进程。
Copier après la connexion
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-
Copier après la connexion
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment utiliser le compte Xiaohongshu pour trouver des utilisateurs ? Puis-je retrouver mon numéro de téléphone portable ? Comment utiliser le compte Xiaohongshu pour trouver des utilisateurs ? Puis-je retrouver mon numéro de téléphone portable ? Mar 22, 2024 am 08:40 AM

Avec le développement rapide des médias sociaux, Xiaohongshu est devenue l'une des plateformes sociales les plus populaires. Les utilisateurs peuvent créer un compte Xiaohongshu pour montrer leur identité personnelle et communiquer et interagir avec d'autres utilisateurs. Si vous avez besoin de trouver le numéro Xiaohongshu d’un utilisateur, vous pouvez suivre ces étapes simples. 1. Comment utiliser le compte Xiaohongshu pour trouver des utilisateurs ? 1. Ouvrez l'application Xiaohongshu, cliquez sur le bouton « Découvrir » dans le coin inférieur droit, puis sélectionnez l'option « Notes ». 2. Dans la liste des notes, recherchez la note publiée par l'utilisateur que vous souhaitez rechercher. Cliquez pour accéder à la page de détails de la note. 3. Sur la page de détails de la note, cliquez sur le bouton « Suivre » sous l'avatar de l'utilisateur pour accéder à la page d'accueil personnelle de l'utilisateur. 4. Dans le coin supérieur droit de la page d'accueil personnelle de l'utilisateur, cliquez sur le bouton à trois points et sélectionnez « Informations personnelles »

Connectez-vous à Ubuntu en tant que superutilisateur Connectez-vous à Ubuntu en tant que superutilisateur Mar 20, 2024 am 10:55 AM

Dans les systèmes Ubuntu, l'utilisateur root est généralement désactivé. Pour activer l'utilisateur root, vous pouvez utiliser la commande passwd pour définir un mot de passe, puis utiliser la commande su- pour vous connecter en tant que root. L'utilisateur root est un utilisateur disposant de droits d'administration système illimités. Il dispose des autorisations nécessaires pour accéder et modifier les fichiers, la gestion des utilisateurs, l'installation et la suppression de logiciels et les modifications de la configuration du système. Il existe des différences évidentes entre l'utilisateur root et les utilisateurs ordinaires. L'utilisateur root possède la plus haute autorité et des droits de contrôle plus étendus sur le système. L'utilisateur root peut exécuter des commandes système importantes et modifier des fichiers système, ce que les utilisateurs ordinaires ne peuvent pas faire. Dans ce guide, j'explorerai l'utilisateur root Ubuntu, comment se connecter en tant que root et en quoi il diffère d'un utilisateur normal. Avis

Comment annuler une commande avec Meituan Comment annuler une commande avec Meituan Mar 07, 2024 pm 05:58 PM

Lorsqu'ils passent des commandes avec Meituan, les utilisateurs peuvent choisir d'annuler les commandes qu'ils ne souhaitent pas. De nombreux utilisateurs ne savent pas comment annuler les commandes Meituan. Les utilisateurs peuvent cliquer sur la page Mon pour saisir la commande à recevoir, sélectionner la commande qui doit être reçue. être annulé et cliquez sur Annuler. Comment annuler une commande avec Meituan 1. Tout d'abord, cliquez sur Meituan My Page pour saisir la commande à recevoir. 2. Cliquez ensuite pour saisir la commande qui doit être annulée. 3. Cliquez sur Annuler la commande. 4. Cliquez sur OK pour annuler la commande. 5. Enfin, sélectionnez le motif de l'annulation en fonction de votre situation personnelle et cliquez sur Soumettre.

Étapes détaillées pour annuler le symbole de l'oreille sur WeChat Étapes détaillées pour annuler le symbole de l'oreille sur WeChat Mar 25, 2024 pm 05:01 PM

1. Le symbole de l'oreille est le mode récepteur vocal. Tout d'abord, nous ouvrons WeChat. 2. Cliquez sur moi dans le coin inférieur droit. 3. Cliquez sur Paramètres. 4. Recherchez le chat et cliquez pour entrer. 5. Décochez Utiliser l'écouteur pour écouter la voix.

Où résilier le renouvellement automatique Mango TV ? Où résilier le renouvellement automatique Mango TV ? Feb 28, 2024 pm 10:16 PM

Lorsque de nombreux utilisateurs découvrent Mango TV, un logiciel vidéo, ils choisissent de devenir membres afin de profiter de davantage de ressources cinématographiques et télévisuelles et de services plus complets. Lors de l'utilisation des services d'abonnement Mango TV, certains utilisateurs choisiront d'activer la fonction de renouvellement automatique pour profiter des réductions afin de s'assurer qu'ils ne manqueront aucun contenu passionnant. Cependant, lorsque les utilisateurs n'ont plus besoin des services d'adhésion ou souhaitent changer de mode de paiement, l'annulation de la fonction de renouvellement automatique est une chose très importante pour protéger la sécurité des biens. Comment annuler le service de renouvellement automatique des utilisateurs de Mango TV qui souhaitent savoir ? Venez suivre cet article pour en savoir plus ! Comment annuler le renouvellement automatique de l'abonnement sur Mango TV ? 1. Entrez d'abord [Mon] dans l'application mobile Mango TV, puis sélectionnez [Adhésion VIP]. 2. Recherchez ensuite [Tube

Comment annuler le renouvellement automatique sur iQiyi Comment annuler le renouvellement automatique sur iQiyi Comment annuler le renouvellement automatique sur iQiyi Comment annuler le renouvellement automatique sur iQiyi Feb 22, 2024 pm 04:46 PM

Vous pouvez ouvrir la fonction de gestion du renouvellement automatique dans l'interface My Gold VIP Member pour annuler. Didacticiel Modèle applicable : Huawei P50 Système : HarmonyOS2.0 Version : Analyse iQiyi 12.1.0 1 Ouvrez l'application iQiyi sur votre téléphone, puis accédez à la page Ma. 2 Cliquez ensuite sur le membre VIP Gold en haut de ma page, puis cliquez sur l'option Gérer le renouvellement automatique. 3. Cliquez sur Annuler le renouvellement automatique dans la fenêtre contextuelle. Si vous n'êtes pas intéressé, continuez à annuler. 4Enfin, confirmez pour désactiver le renouvellement automatique et cliquez sur Je comprends, il suffit de le rejeter cruellement. Supplément : Comment annuler la fonction de renouvellement automatique d'iQiyi sur un téléphone mobile Apple 1. Ouvrez les paramètres du téléphone, puis cliquez sur [AppleID] en haut de l'interface des paramètres. 2Cliquez sur [S'abonner] sur l'interface AppleID pour sélectionner

Étapes opérationnelles pour annuler le paiement d'un abonnement sur WeChat Étapes opérationnelles pour annuler le paiement d'un abonnement sur WeChat Mar 26, 2024 pm 08:21 PM

1. Cliquez sur l'option [iTunesStore et AppStore] dans les paramètres du téléphone. 2. Cliquez sur [Afficher AppleID], puis saisissez le mot de passe de connexion. 3. Accédez à l'interface [Paramètres du compte] et cliquez sur [Informations de paiement]. 4. Vérifiez le mode de paiement comme [Aucun] et cliquez sur [Terminer]. Une fois terminé, revenez à l'interface WeChat. À ce moment, vous recevrez le message [Notification de résiliation réussie] et WeChat ne déduira plus automatiquement les frais.

Comment annuler le paiement par reconnaissance faciale sur Alipay ? Tutoriel Alipay sur l'annulation du paiement par reconnaissance faciale Comment annuler le paiement par reconnaissance faciale sur Alipay ? Tutoriel Alipay sur l'annulation du paiement par reconnaissance faciale Mar 16, 2024 pm 03:07 PM

Alipay est une plateforme de services de vie très pratique. Ce logiciel est très puissant. Il offre aux utilisateurs des fonctions telles que le paiement de la vie, les voyages, l'assurance médicale, etc., apportant du confort à la vie de chacun. La plateforme Alipay dispose de nombreuses fonctions qui attendent que tout le monde les débloque. Alors, comment annuler le paiement par visage sur Alipay Tutoriel détaillé sur l'annulation du paiement par visage sur Alipay : 1. Ouvrez d'abord Alipay 2. Cliquez sur Mon dans le coin inférieur droit ? 3. Cliquez sur Paramètres dans le coin supérieur droit 4. Cliquez sur les paramètres de paiement 5, cliquez sur paiement biométrique 6, recherchez le paiement facial par téléphone mobile 7, décochez les fonctionnalités du logiciel 1. Prend en charge diverses relations de scène, le chat de groupe et le paiement de groupe sont plus pratique ; 2. Établir des comptes familiaux pour les enfants et les parents ; 3. Virements interbancaires longue distance et remboursements par carte de crédit gratuits ;

See all articles