[Date Prev][Date Next] [Chronological] [Thread] [Top]

LDAP with MySQL as backend



Hello,

I am trying to run LDAP with MySQL as backend. I created the sample 
database using scripts in rdbms-depend/mysql, created an appropriate DSN 
and changed the slapd.conf file to refer to this DSN. The LDAP server 
comes up properly but ldapsearch doesn't give any results. Records do 
exist in the MySQL database tables.


--------------------------------------------------------------------------
Here is the trace that LDAP server produces while coming up:
--------------------------------------------------------------------------

daemon_init: <null>
daemon_init: listen on ldap:///
daemon_init: 1 listeners to open...
ldap_url_parse(ldap:///)
daemon: initialized ldap:///
daemon_init: 1 listeners opened
slapd init: initiated server.
==>backsql_initialize()
<==backsql_initialize()
==>backsql_db_init()
==>backsql_init_db_env()
<==backsql_init_db_env()
<==backsql_db_init()
==>backsql_db_config()
<==backsql_db_config(): dbname=ldap_db
==>backsql_db_config()
<==backsql_db_config(): dbuser=anandi
==>backsql_db_config()
<==backsql_db_config(): dbpasswd=anandi123
==>backsql_db_config()
<==backsql_db_config(): subtree_cond=ldap_entries.dn LIKE CONCAT('%',?)
==>backsql_db_config()
<==backsql_db_config(): insentry_query=INSERT INTO ldap_entries 
(dn,oc_map_id,parent,keyval) VALUES (?,?,?,?)
slapd startup: initiated.
==>backsql_db_open(): testing RDBMS connection
backsql_db_open(): objectclass mapping SQL statement not specified (use 
oc_query directive in slapd.conf)
backsql_db_open(): setting 'SELECT 
id,name,keytbl,keycol,create_proc,delete_proc,expect_return FROM 
ldap_oc_mappings' by default
backsql_db_open(): attribute mapping SQL statement not specified (use 
at_query directive in slapd.conf)
backsql_db_open(): setting 'SELECT 
name,sel_expr,from_tbls,join_where,add_proc,delete_proc,param_order,expect_return FROM ldap_attr_mappings WHERE oc_map_id=?' by default
backsql_db_open(): entry deletion SQL statement not specified (use 
delentry_query directive in slapd.conf)
backsql_db_open(): setting 'DELETE FROM ldap_entries WHERE id=?' by 
default
==>backsql_get_db_conn()
==>backsql_open_db_conn()
backsql_open_db_conn(): connected, adding to tree
<==backsql_open_db_conn()
backsql_get_db_conn(): first call -- reading schema map
==>load_schema_map()
load_schema_map(): objectclass 'inetOrgPerson': keytbl='persons' 
keycol='id' create_proc='insert into persons (name) values ('');
 select last_insert_id();' delete_proc='(null)' expect_return=0; 
attributes:
load_schema_map(): autoadding 'objectClass' and 'ref' mappings
********'cn'
name='cn',sel_expr='persons.name' from='persons' 
join_where='',add_proc='' delete_proc=''load_schema_map(): preconstructed 
query 'SELECT persons.name AS cn FROM persons WHERE persons.id=?'
********'telephoneNumber'
name='telephoneNumber',sel_expr='phones.phone' from='persons,phones' 
join_where='phones.pers_id=persons.id',add_proc='' delete_proc=''
load_schema_map(): preconstructed query 'SELECT phones.phone AS 
telephoneNumber FROM persons,phones WHERE persons.id=? AND 
phones.pers_id=persons.id'
********'sn'
name='sn',sel_expr='persons.name' from='persons' 
join_where='phones.pers_id=persons.id',add_proc='' delete_proc=''
load_schema_map(): preconstructed query 'SELECT persons.name AS sn FROM 
persons WHERE persons.id=?'
********'documentDN'
name='documentDN',sel_expr='ldap_entries.dn' 
from='ldap_entries,documents,authors_docs,persons' 
join_where='ldap_entries.keyval=documents.id AND ldap_entries.oc_map_id=2 
AND authors_docs.doc_id=documents.id AND 
authors_docs.pers_id=persons.id',add_proc='' delete_proc=''
load_schema_map(): preconstructed query 'SELECT ldap_entries.dn AS 
documentDN FROM ldap_entries,documents,authors_docs,persons WHERE 
persons.id=? AND ldap_entries.keyval=documents.id AND 
ldap_entries.oc_map_id=2 AND authors_docs.doc_id=documents.id AND 
authors_docs.pers_id=persons.id'
load_schema_map(): objectclass 'document': keytbl='documents' keycol='id' 
create_proc='(null)' delete_proc='(null)' expect_return=0; attributes:
load_schema_map(): autoadding 'objectClass' and 'ref' mappings
********'description'
name='description',sel_expr='documents.abstract' from='documents' 
join_where='',add_proc='
' delete_proc=''
load_schema_map(): preconstructed query 'SELECT documents.abstract AS 
description FROM documents WHERE documents.id=?'
********'documentTitle'
name='documentTitle',sel_expr='documents.title' from='documents' 
join_where='',add_proc='' delete_proc=''
load_schema_map(): preconstructed query 'SELECT documents.title AS 
documentTitle FROM documents WHERE documents.id=?'
********'documentAuthor'
name='documentAuthor',sel_expr='ldap_entries.dn' 
from='ldap_entries,documents,authors_docs,persons' 
join_where='ldap_entries.keyval=persons.id AND ldap_entries.oc_map_id=1 
AND authors_docs.doc_id=documents.id AND 
authors_docs.pers_id=persons.id',add_proc='' delete_proc=''
load_schema_map(): preconstructed query 'SELECT ldap_entries.dn AS 
documentAuthor FROM ldap_entries,documents,authors_docs,persons WHERE 
documents.id=? AND ldap_entries.keyval=persons.id AND 
ldap_entries.oc_map_id=1 AND authors_docs.doc_id=documents.id AND 
authors_docs.pers_id=persons.id'
load_schema_map(): objectclass 'organization': keytbl='institutes' 
keycol='id' create_proc='(null)' delete_proc='(null)' expect_return=0; 
attributes:
load_schema_map(): autoadding 'objectClass' and 'ref' mappings
********'o'
name='o',sel_expr='institutes.name' from='institutes' 
join_where='',add_proc='' delete_proc=''
load_schema_map(): preconstructed query 'SELECT institutes.name AS o FROM 
institutes WHERE institutes.id=?'
<==load_schema_map()
<==backsql_get_db_conn()
==>backsql_free_db_conn()
backsql_free_db_conn(): closing db connection
==>backsql_close_db_conn()
<==backsql_close_db_conn()
<==backsql_free_db_conn()
<==backsql_db_open(): test succeeded, schema map loaded
slapd starting


 
------------------------------------------------------------------------------
Here is the ldapsearch command I am using and the output it produces
------------------------------------------------------------------------------

./ldapsearch -x -D "o=sql, c=RU" -s sub "(telephoneNumber=22*)"
version: 2

#
# filter: (telephoneNumber=22*)
# requesting: ALL
#

# search result
search: 2
result: 32 No such object

# numResponses: 1


-----------------------------------------------------------------------------------
Server output when ldapsearch is executed
----------------------------------------------------------------------------------

connection_get(9)
connection_get(9): got connid=7
connection_read(9): checking for input on id=7
ber_get_next
ber_get_next: tag 0x30 len 23 contents:
do_bind
ber_get_next
ber_get_next on fd 9 failed errno=11 (Resource temporarily unavailable)
ber_scanf fmt ({iat) ber:
ber_scanf fmt (o}) ber:
do_bind: version=2 dn="o=sql, c=RU" method=128
send_ldap_result: conn=7 op=0 p=2
send_ldap_result: 0::
send_ldap_response: msgid=1 tag=97 err=0
ber_flush: 14 bytes to sd 9
do_bind: v2 anonymous bind
connection_get(9)
connection_get(9): got connid=7
connection_read(9): checking for input on id=7
ber_get_next
ber_get_next: tag 0x30 len 49 contents:
do_search
ber_scanf fmt ({aiiiib) ber:
SRCH "" 2 0    0 0 0
ber_scanf fmt ({o) ber:
ber_scanf fmt (O) ber:
    filter: (telephoneNumber=22*)
ber_scanf fmt ({v}}) ber:
    attrs:
send_ldap_result: conn=7 op=1 p=2
send_ldap_result: 10::
send_ldap_response: msgid=2 tag=101 err=32
ber_get_next
ber_get_next on fd 9 failed errno=11 (Resource temporarily unavailable)
ber_flush: 14 bytes to sd 9
connection_get(9)
connection_get(9): got connid=7
connection_read(9): checking for input on id=7
ber_get_next
ber_get_next: tag 0x30 len 5 contents:
do_unbind
==>backsql_unbind()
send_ldap_result: conn=7 op=2 p=2
send_ldap_result: 0::
send_ldap_response: msgid=0 tag=48 err=0
ber_get_next
ber_get_next on fd 9 failed errno=0 (Success)
connection_read(9): input error=-2 id=7, closing.
connection_closing: readying conn=7 sd=9 for close
connection_close: deferring conn=7 sd=9
<==backsql_unbind()
connection_resched: reaquiring locks conn=7 sd=9
connection_resched: attempting closing conn=7 sd=9
connection_close: conn=7 sd=9
==>backsql_connection_destroy()
==>backsql_free_db_conn()
<==backsql_free_db_conn()
<==backsql_connection_destroy()
---------------------------------------------------------------------------------

Do I need to do anything more for MySQL? Any help regarding this is 
appreciated.


Thanks and Regards,
Anandi