--创建临时表存储用户当前使用的密码(创建表执行一次)
CREATE GLOBAL TEMPORARY TABLE SYSDBA.T_PWD(LOGINID INTEGER, NEW_PWD varchar(512),MODIFIED_TIME TIMESTAMP(6));
COMMIT;
DECLARE
V_SQL VARCHAR;--存临时SQL
V_COUNT INT;--记录用户ID数量
V_UID INTEGER;--遍历用户ID
BEGIN
V_COUNT:=(SELECT COUNT(U.ID) FROM SYS.SYSOBJECTS U WHERE U.SUBTYPE$ ='USER' AND U.NAME <>'SYS');
FOR I IN 1..V_COUNT LOOP
V_SQL:='SELECT TOP ('||I||'-1),1 U.ID FROM SYS.SYSOBJECTS U WHERE U.SUBTYPE$ =''USER'' AND U.NAME <>''SYS''';
EXECUTE IMMEDIATE V_SQL INTO V_UID;
INSERT INTO SYSDBA.T_PWD SELECT TOP 1 LOGINID,NEW_PWD,MODIFIED_TIME FROM SYS.VSYSPWDCHGS WHERE LOGINID = V_UID ORDER BY MODIFIED_TIME DESC;
END LOOP;
-- 查询达梦数据库用户密码加密值
-- 查询达梦数据库用户密码修改时间
SELECT U.NAME,U.ID,U.CRTDATE,U.VALID,P.NEW_PWD,P.MODIFIED_TIME
FROM SYSDBA.T_PWD P
LEFT JOIN (SELECT * FROM SYS.SYSOBJECTS) U
ON U.ID=P.LOGINID
ORDER BY NEW_PWD DESC;
--查询数据库密码相同的用户
SELECT U.NAME,U.ID,P.NEW_PWD
FROM SYSDBA.T_PWD P
INNER JOIN (SELECT * FROM SYS.SYSOBJECTS) U
ON U.ID=P.LOGINID
AND P.NEW_PWD IN
(SELECT NEW_PWD FROM SYSDBA.T_PWD
GROUP BY NEW_PWD HAVING COUNT(NEW_PWD)>1)
ORDER BY NEW_PWD DESC;
END;
-- 查询达梦数据库用户密码加密值
-- 查询达梦数据库用户密码修改时间
文章
阅读量
获赞