SQL30082N 尝试建立连接失败,安全性原因为 "19"
数据库 2009-11-18 14:14:45 阅读183 评论0 字号:大中小 订阅
今天解决了一个DB2数据库连接的问题。
问题的现象是,Windows 2003 Server,安装了DB2 8.x数据库,使用administrator账号通过远程桌面登录到操作系统。在CLP中直接 db2 connect to mydb,是可以成功连接的。但如果改成 db2 connect to mydb user administrator using xxxxxx,则会报错: SQL30082N 尝试建立连接失败,安全性原因为 "19"("USERID DISABLED or RESTRICTED")。 SQLSTATE=08001。
我改用其他数据库账号,现象也是一样的,不加 user xxx using xxxx 时可以连接成功,加了就报上面的错误。我先检查了一下db2 get dbm cfg | find /i "GROUP",发现SYSADM组没有设定,那么对于windows操作系统来说默认的就是administrator组,我到 administrator组下检查了一下,发现这几个数据库账号都在该组下,所以应该没什么问题。
再db2 get dbm cfg | find /i "AUTH",看到身份认证模式是SERVER,这正好回答了为什么不加user xxx using xxxx时可以连接上数据库,因为这时候我已经成功登录操作系统了,所以不带这些参数时DB2会认为该用户已经验证通过了,可以直接访问数据库。那为什么加上 user xxx using xxxx 以后就不行了呢,因为此时 DB2 会调用 Windows 自己的验证机制来做身份认证。对于windows 2003 server,到控制面板-->管理工具-->本地安全策略-->本地策略-->用户权限分配 中,可以看到两个策略:从网络访问此计算机、拒绝从网络访问这台计算机。检查了一下,数据库账号所在组确实包含在“从网络访问此计算机”策略中,没有问题,再检查一下“拒绝从网络访问这台计算机”策略,发现其中有个组包含了数据库帐户(因为数据库帐户不仅在 administrator组中,也还在其它组中存在)。从该策略中删除这些组,然后 db2stop、db2start,重新 db2 connect to mydb user administrator using xxxxxx,连接成功!
问题解决了,但深层的原因还需要继续挖掘和学习,比如为什么这些账号可以从远程桌面登录,说明这些账号是可以从网络访问此计算机的,但却不能访问DB2数据库?这里并不需要db2comm参数和services来支持远程客户端连接阿。另外一个心得是,最好给db2建立独立的用户组,而不是直接用 administrator组,这样安全性没有保障,而且安全策略也不好分配。
分享到:
相关推荐
【MyEclipse(Java)连接SQLServer 2008 R2 失败多次的经验】 在使用MyEclipse进行Java开发时,与SQLServer 2008 R2数据库的连接是一个常见的需求。本文主要介绍了一位开发者在经历多次失败后,成功连接SQLServer ...
在企业管理器或查询分析器中尝试建立连接。 - **企业管理器**: 1. 右键点击“SQL Server 组” -> “新建 SQL Server 注册” -> “下一步” -> 输入远程IP -> “下一步” -> 选择“SQL Server 登录” -> “下一步...
如果连接失败,可能的原因包括: - SQL Server 2000服务未启动,需要启动服务。 - 服务器未启用TCP/IP协议,需要在服务器网络实用工具中启用。 - 服务器的TCP/IP配置不正确,确保默认端口设置为1433,且未勾选...
**目的**:尝试使用企业管理器或查询分析器建立与远程SQL Server 2000服务器的连接。 **操作步骤**: 1. **企业管理器**: - 右键点击 “SQL Server组” -> “新建SQL Server注册”。 - 输入远程服务器IP地址,...
这里,`mysql_real_connect()`函数尝试建立连接。如果失败,它会返回`NULL`,并通过`mysql_error()`函数返回错误信息。 3. 执行SQL查询: ```c const char *query = "SELECT * FROM your_table"; if (mysql_query...
ADO(ActiveX Data Objects)是Microsoft提供的一种用于数据库应用程序开发的接口,它建立在底层的OLE DB之上,为开发者提供了一种高级且易于使用的数据库访问技术。即使对OLE DB和COM不熟悉,开发者也能轻松上手,...
总的来说,MySQL的权限系统提供了一套复杂且灵活的机制,用于管理和控制用户对数据库资源的访问,确保了数据的安全性和合规性。理解并正确配置这些权限对于数据库管理员来说至关重要,以防止未经授权的访问和潜在的...
在成功建立连接后,可以使用PDO对象执行SQL查询。`prepare()`方法用于准备一个SQL语句,并返回一个PDOStatement对象。然后使用`execute()`方法执行该语句。使用`fetch()`方法可以获取查询结果集中的下一行,并可以...
服务器端验证则是在服务器上进行,确保数据的安全性,即使客户端验证失败也能提供第二道防线。 4. **电子邮件工作原理**:E-mail并不直接放在收件人的电脑收件箱中,而是通过邮件服务器进行传递,当收件人连接到...
这段代码首先建立到MySQL服务器的连接,然后选择`RUNOOB`数据库,并尝试执行删除`runoob_tbl`的SQL语句。如果操作成功,将输出“数据表删除成功”。最后,关闭数据库连接以释放资源。 ### 注意事项 在实际应用中,...
- 默认情况下,Spring 不保证 Bean 的线程安全性。 - 开发者需自行处理并发访问的问题。 5. **ApplicationContext和BeanFactory的区别** - `ApplicationContext` 继承自 `BeanFactory`,提供了更多高级特性,如...
netstat -n 查看端口的网络连接情况,常用netstat -an netstat -v 查看正在进行的工作 netstat -p 协议名 例:netstat -p tcq/ip 查看某协议使用情况 netstat -s 查看正在使用的所有协议使用情况 nbtstat -A ip ...
用来建立数据库连接的唯一服务名。如果要在没有调度程序的情况下仍能连接到数据库, 请将该值设置为与例程名相同。此参数自 8.1.3 版起已废弃。 值范围: 根据操作系统而定。 默认值 :0 mts_sessions: 说明 : 指定...
转到“目录安全性”窗口,单击“IP地址及域名限制”下的“编辑”按钮,点选中“授权访问”以能接受客户端从本机之外的地方对IIS进行管理;最后单击“确定”按钮。 3.则在任意计算机的浏览器中输入如...
Console.WriteLine("连接失败:" + ex.Message); } } } } class Program { static void Main() { DatabaseManager manager = new DatabaseManager(); manager.Connect(); } } ``` 这里展示的是一个简单的...
令是?(C)A. ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; B. UPDATE USER SET password=PASSWORD('new_...在实际工作中,应注重代码规范,避免错误,提高效率,同时确保数据库的安全性和性能。