达梦数据库新创建用户登录报错“登录失败次数超过限制”

article/2025/10/14 20:39:10

问题描述

   最近遇到数据库新创建A用户,登录失败的情况。创建后使用A用户第一次登录报错:”登录失败次数超过限制“的问题。多次登录用户被锁定后,解锁后登录还是相同的错提示。数据库版本:DM8 1-1-156

排查步骤

1、新建实例,创建A用户进行测试

新建实例,并创建A用户测试,测试登录正常。(创建A用户相关语句与原实例相同)

说明数据库软件创建实例,新建用户登录功能均正常

2、在原实例上使用现有其他用户登录和创建其他新用户登录测试

使用现有其他用户登录和创建其他用户并登录测试,测试登录正常。(创建用户、授权等相关语句除了用户名和密码以外其他均和创建A用户相同)

说明现有实例创建用户、用户登录等功能均正常

3、检查数据库当前会话信息以及用户信息

(1)查看数据库当前会话信息

SQL语句如下(可以多查询几次):

select user_name,state,clnt_ip,count(*)
from v$sessions
group by user_name,state,clnt_ip
;

image-20220113134058975

从查询结果来看,在192.168.15.70这台机器上有应用程序一直在尝试连接数据库,且通过会话状态观察,并未成功登录到数据库。

(2)查看数据库用户状态信息

SELECTB.USERNAME       ,B.ACCOUNT_STATUS ,   /*用户状态*/A.FAILED_ATTEMPS ,   /*用户自创建之后或者是用户自上一次成功登录以来的失败登录次数,企业版中只要用户成功登录或解锁,该值就会清零*/A.FAILED_NUM     ,   /*用户登录失败次数限制*/A.LASTEST_LOCKED     /*用户最后一次的锁定时间,与FAILED_ATTEMPS相同,企业版中只要用户成功登录或解锁,该值就会清空*/
FROMSYSUSERS A,DBA_USERS B
WHEREA.ID      =B.USER_IDAND B.USERNAME= 'xxx' ;

image-20220114153411244

从上图查询结果可以发现,用户已经被锁,到目前失败登录的次数是190次。

通过多查询几次,然后观察失败登录的次数有没有增加,如果应用程序使用错误的密码不断的连接数据库,FAILED_ATTEMPS列的值会不断变化。

(3)另外,还可以开启SQL日志进行查看,会发现SQL日志中不断打印除有连接会话“LOGIN FAIL 、ALLOC SESSION”等信息。

(4)验证

i. 通过将使用的数据库端口修改并重启数据库服务后解锁,使用新的端口可以正常连接

ii. 使用数据库源端口,关闭不断重连数据库的应用服务器上的所有应用,解锁后可以正常登录

解决办法

1、临时解决办法

(1)修改该用户的“登录失败次数”资源限制为UNLIMITED,然后解锁该用户。相关语句如下:

/*企业版使用SYSDBA用户登录进行操作*/
/*修改用户“登录失败次数”资源限制为UNLIMITED*/
alter user 用户名 limit FAILED_LOGIN_ATTEMPS UNLIMITED;
/*解锁用户*/
ALTER USER 用户名 ACCOUNT UNLOCK;
---或者
CALL SP_UNLOCK_USER('用户名');

如果修改上面资源限制,然后解锁用户后还是无法登录,建议重启数据库服务,检查用户状态如果是锁定状态需要执行解锁。

但是需要注意的是,应用不断重连数据库,虽然没有成功创建会话,但是在重连期间也会占用数据库的会话数。如果过多可能会达到MAX_SESSIONS设置的会话数上线,这时新的正常的会话连接请求会失败,日志也会有报错信息:“Reached the max session limit.”

(2)创建并使用其他新的用户名或者更换现有应用使用的数据库端口。

2、永久解决办法

根据上面排查步骤3中的SQL语句查询找到对应的应用服务器,然后检查应用服务器上相关应用程序数据源配置以及应用日志文件,更改正确的用户密码。

总结

   该报错主要原因是由于使用错误的用户密码登录导致达到设置失败登录次数限制,常见的场景是有应用程序使用了该用户在不断尝试连接数据库且使用了错误的密码,导致用户创建之后直接报错。

   正常的排查步骤只需要进行步骤3的检查即可,前两步测试验证主要是针对本次遇到的情况。本次遇到修改了资源限制为UNLIMITED然后解锁用户,但是还是无法登录的情况,而且根据当时应用厂商的反馈是没有应用使用该用户连接数据库,所以才有了前两步的测试验证,排除数据库软件实例本身的问题。经过最后第3步排查并验证,应用厂商检查那台应用服务器上有应用程序中配置多个数据库用户连接数据库,其中包括了新创建的用户,将数据源配置文件中关于该用户的配置注释掉重启应用后正常。


http://chatgpt.dhexx.cn/article/0QDyQGTH.shtml

相关文章

Android 连接数据库实现登录注册功能(SQLite)

什么是SQLite SQLite 是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是在世界上最广泛部署的 SQL 数据库引擎。SQLite 源代码不受版权限制。 以下是一些关于SQLite学习的有用的网站: 1、SQLite Home Page - …

达梦数据库入门

测试版本:达梦6 主要内容:数据库登录、数据库创建、用户创建、授权等。 说明:数据库有两种方式常用的使用方式,有达梦自带的比较友好的达梦管理工具,比较适用于新手。这里主要介绍的是第二种方式,命令行方式。 一、达梦…

登录页面连接数据库

壹 如果每一款APP的登录界面审核机制为 " admin".equles(username)&&"123456".equles(password)那么局限性太高,数据成本高,我们之所以连接数据库,是因为APP对应着多个用户,而不是一个用户。 贰 &a…

java完成登录页面+连接数据库

java完成登录页面连接数据库 所用的包简单介绍: 部分资料来自网上,如有侵权联系删除。 ActionEvent:处理东、南、西、北四个按钮,以及文本框的actionevent事件。当事件发生,,监视器计算字符的长度,并在命…

Java实现登录[数据库]

和上篇的随机点名系统一样,都是使用MySQL数据库来实现,因为刚学所以写点简单例子满足下自己; 需求分析: 1、输入用户名和密码 2、与数据库中的记录进行比较 原理比较 简单,直接贴代码吧。 import java.sql.Connec…

sql数据库身份验证登录

工具:SQL Server(我使用的是SQL Server) 步骤: 1、打开SQL Server,先选择Windows身份验证登录 2、定位到[服务器/安全性/登录名],可以选择其中有的登录来登录,也可以自己创建登录名来登录。 3、[自建登录…

禅道登录数据库方法

1、登录zentao数据库 先付权限给/opt/zbox/auth/users(命令:sudo chmod -R 777 users) 然后在路径下执行/opt/zbox/auth ./adduser.sh ,添加admin账密 2、进入到数据库管理界面 3、进入后登录数据库 系统:MySQL&am…

Oracle数据库登录报错 ORA-12541:TNS:no listener(记录)

重启虚机的时候,有时会变更数据库的tns配置,导致数据库连接报错,导致自己的服务启动失败 解决方案:重启数据库,重启TNS监听 (1) 登录oracle数据库,命令:su - oracle (如果登录失败,尝试切换root用户后登录) (2&#…

达梦:如何登录数据库(基础篇)

登录达梦数据库有两种方式,包括使用disql命令行工具登录和DM管理工具登录。 1.disql命令行工具登录 dIsql 是 DM 数据库自带的工具,只要安装了 DM 数据库,就可以在应用菜单和安装目录中 找到。 查看方式: ps -ef|grep dmse…

达梦数据库登录账户限制说明

前言 密码太多?总是忘记,尝试登录,结果账户被锁定。为防止别人恶意破解登录,输入密码错误多少次就锁定账号、锁定多长时间、全都由我们自己来定! 今天我们就来详细剖析DM数据库登录账户的限制方式。 测试 我们先建立…

达梦数据库——数据库登录 / 连接失败原因整理..

在数据库的使用过程中,不可避免的会遇到数据库连接不上,数据库登录失败等等等等....问题。 以下是我个人遇到的一些相关问题的整理。 常见问题:连接数据库异常排查思路报错信息网络通信异常、创建socket连接失败、用户名密码错误、用户被锁…

命令行登录数据库

命令行登录数据库 登录自己数据库 命令说明mysql -u 用户名 -p 密码使用指定用户名和密码登录当前计算机中的MySQL数据库 登录本机:mysql -uroot -p123456 登录别人数据库 命令说明mysql -h 主机IP -u 用户名 -p 密码-h 指定IP 方式,进行 登录 登录其它设备数…

人大金仓数据库登录、查看数据库

启动数据库服务测试 ​ 1、查看数据存储目录 [rootnode1 ~]# su - kingbase Last login: Mon Mar 1 18:00:48 CST 2021 on pts/2 [kingbasenode1 ~]$ cd /data/kingbase/v8/data/ [kingbasenode1 data]$ ls -lh 登录后复制 [kingbasenode1 bin]$ ./ksql -U system -W t…

数据库服务的运行与登录

一、打开数据库服务 1、数据库服务 :SQL Server(MSSQLServer) 1)运行在服务器端的应用程序,提供数据的存储、处理和事物等。 2)在使用DBMS客户端之前,必须首先打开该服务。 2、打开与关闭的方式 1&#xf…

登录数据库详解

登录数据库 1 . 双击以下: 2 . 进入数据库输入密码点击连接: 3 . 连接成功的话进入这个页面就代表完成了;要是连接不成功请动动你的小手往下拉; 不成功连接一 4 . 连接不成功的情况下万一出现以下这状况 : 5 . 先关闭这个“无法连…

python3.8.2使用web.py做web开发

web.py是适用于Python的Web框架,功能强大而又简单。web.py是公共领域;您可以毫无限制地将其用于任何目的。 一、安装方式 PIP方式 pip install web.py0.51最新0.51版本同时支持Python 2.7和Python> 3.5。 从GitHub获取最新的开发版本 解压&#xf…

web—2

2.基础入门——数据包拓展 网站解析对应 攻击层面? 源码,搭建平台,系统,网络层等 安全问题? 目录,敏感文件,弱口令,IP以及域名 HTTP/S—数据包 • https协议需要到ca申请证书&#…

Python 3 web开发

文章目录 web开发发展历程HTTP协议简介实验环境HTTP内容简介HTTP请求HTTP格式推荐文档 HTML简介CSS简介JavaScript简介小结 WSGI接口简介运行WSGI服务小结 web框架常见Python web框架小结 使用模板小结 总结推荐文档实验文件 web开发发展历程 Python有上百种web开发框架&#x…

WEB:web2

背景知识 代码审计 题目 由上述可知,这段代码定义了一个函数encode,接受一个字符串参数$str,并返回对其进行加密后的结果 加密算法包括: 使用strrev函数将字符串进行翻转;对翻转后的每个字符,将其ASCII值…

Web3.py 学习(一)

一、什么是Web3.py Web3.py is a python library for interacting with Ethereum. Its API is derived from the Web3.js Javascript API and should be familiar to anyone who has used web3.js. Web3.py是连接以太坊的python库,它的API从web3.js中派生而来。如果…