openldap ldapadd导入ldap数据库问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了openldap ldapadd导入ldap数据库问题相关的知识,希望对你有一定的参考价值。
我在虚拟机上尝试安装openldap并配置,使用linux red hat 6.2
首先,openldap是运行着的,ldapadd能够用,在/usr/local/openldap/bin下
1、服务器名:www.local.com (hotsname)
2、hosts文件添加了www.local.com 192.168.38.134
3、/usr/local/openldap/etc/openldap/slapd.conf这个文件我修改了如下地方(不显示include)
database bdb
suffix "dc=local,dc=com"
rootdn "cn=www,dc=local,dc=com"
...
rootpw SSHAgj5NCOR1zekMnprS2gbbpK3C+bBn+NiE
4、init.ldif文件内容:(/root/init.ldif)
dn: dc=local,dc=com
objectClass: dcObject
objectClass: organization
dc: local com
o: Example Company
description: d Corporation
dn: cn=www,dc=local,dc=com
objectClass:organizationalRole
objectClass: top
cn: www
现在,我输入命令
[root@www bin]# /usr/local/openldap/bin/ldapadd -x -D "cn=www,dc=local,dc=com" -f /root/init.ldif
当我回车的时候,没有提示错误,也没有提示成功信息
就返回[root@www bin]#
我输入/usr/local/openldap/bin/ldapsearch –x –b "dc=local,dc=com"
返回的却是:
# extended LDIF
#
# LDAPv3
# base <dc=local,dc=com> (default) with scope subtree
# filter: (objectclass=*)
# requesting: –x –b dc=local,dc=com
#
# search result
search: 2
result: 32 No such object
# numResponses: 1
请问什么原因呢?
成功会有提示的,
首先应该提示你输入密码
多加个参数 -h 192.168.38.134
看看什么情况。
还有最好出一下openldap服务端的syslog看一下更有助于你解决问题。 参考技术A 尝试用 ldapsearch –x -D "cn=www,dc=local,dc=com" –w “你的密码”
我之前和你碰到的问题一摸一样,后来看到一个地方说,创建的时候用的-D,查询也需要,但我也不知道是为什么,反正就成功了。 参考技术B 把init.ldif中的内容,分成两个文件试试,一个文件可能有问题
使用 Java 类更新 OpenLDAP
【中文标题】使用 Java 类更新 OpenLDAP【英文标题】:Updating OpenLDAP using a Java class 【发布时间】:2010-09-16 04:19:39 【问题描述】:我需要能够 上的属性。
我尝试过创建一个 LDAP 条目,但它看起来像一个 Java 对象,而不是一个正确的 LDAP 条目。 (咕噜)
导入 javax.naming.Context; 导入 javax.naming.InitialContext; 导入 javax.naming.NamingException; 导入 javax.naming.NameAlreadyBoundException; 导入 javax.naming.directory.*; 导入 java.util.*; 公共类 TestLDAP 静态最终长序列版本UID = -1240113639782150930L; 最终静态字符串 ldapServerName = "localhost:636"; final static String rootdn = "cn=The Manager,ou=mydept,o=mycompany"; 最终静态字符串 rootpass = "密码"; final static String rootContext = "ou=mydept,o=mycompany"; 公共静态无效主要(字符串[]参数) System.setProperty("javax.net.ssl.trustStore", "C:\\cacerts"); 属性 env = new Properties(); env.put("com.sun.jndi.ldap.trace.ber", System.out); env.put(Context.INITIAL_CONTEXT_FACTORY, “com.sun.jndi.ldap.LdapCtxFactory”); env.put(Context.SECURITY_PROTOCOL, "ssl"); env.put(Context.PROVIDER_URL, "ldap://" + ldapServerName + "/" + rootContext ); env.put(Context.SECURITY_PRINCIPAL, rootdn); env.put(Context.SECURITY_CREDENTIALS, rootpass); 尝试 // 使用环境获取初始目录上下文 DirContext ctx = new InitialDirContext( env ); // 添加 LDAP 条目 属性 myAttrs = new BasicAttributes(true); 属性 oc = new BasicAttribute("objectclass"); oc.add("inetOrgPerson"); oc.add("组织人员"); oc.add("人"); oc.add("top"); myAttrs.put(oc); myAttrs.put("cn","test996"); myAttrs.put("sn","test 996"); ctx.bind("cn=test997", myAttrs); 捕捉(NameAlreadyBoundException nabe) System.err.println("值已经被绑定!"); 捕捉(异常 e) e.printStackTrace();请帮忙!
【问题讨论】:
您使用了错误的方法。您需要致电DirContext.createSubcontext()
。
【参考方案1】:
我使用 LDAP 已经有一段时间了,但是查看 Javadoc 我认为您使用了错误的方法。尝试类似:
ctx.bind("cn=test997", null, myAttrs);
你读过LDAP tutorial吗?当我不得不做一些 LDAP 工作时,我发现这很有帮助。
【讨论】:
LDAP 教程...是的。谷歌最早提出的地方之一。不幸的是,没有快乐。没有解决问题的信息。无论如何,我非常接近解决问题。完成后将发布解决方案。以上是关于openldap ldapadd导入ldap数据库问题的主要内容,如果未能解决你的问题,请参考以下文章