[Dovecot] dovecot-cvs/mysql-5.0.18 OLD/PASSWORD problem
i use openbsd/i386, dovecot-cvs(today), mysql-5.0.18 today, i change the mysql_dbuser_password form OLD_PASSWORD to PASSWORD then dovecot can't connect to mysql-server shell$> mysql -u root -p mysql$> SET PASSWORD FOR 'db_user'@'localhost' = PASSWORD('db_pw'); now, dovecot CAN NOT connect to mysql-server shell$> mysql -u root -p mysql$> SET PASSWORD FOR 'db_user'@'localhost' = OLD_PASSWORD('db_pw'); now, dovecot CAN connect to mysql-server and everything work fine i patched src/lib-sql/driver-mysql.c to test, use something like: i_error("host(%s), db->user(%s), db->password(%s), db->dbname(%s) ....); before mysql_real_connect(), then see the maillog, the db->user/password/dbname is correct maillog: auth-worker(default): conn->mysql is NOT NULL auth-worker(default): host((null)), db->user(db_user), db->password(db_pw), db->dbname(dbname), db->port(0), unix_socket(/mysql.sock), db->client_flags(0) auth-worker(default): failed: (1) auth-worker(default): mysql: Connect failed to (null) (dbname): Access denied for user 'db_user'@'localhost' (using password: YES) - waiting for 1 seconds before retry i wrote a small c program to test, it can success connect to mysql, use same user/password/dbname, with both OLD_PASSWORD/PASSWORD why dovecot can't to connect to mysql-server with PASSWORD? help please, thank you base_dir = /var/dovecot/ ssl_cert_file = /etc/ssl/certs/mail.crt ssl_key_file = /etc/ssl/private/mail.key disable_plaintext_auth = no login_dir = /var/dovecot/login login_user = _dovecot valid_chroot_dirs = /var/spool/postfix/var default_mail_env = maildir:%h/%u mmap_no_write = yes protocol imap { imap_client_workarounds = delay-newmail outlook-idle netscape-eoh tb-extra-mailbox-sep } protocol pop3 { pop3_uidl_format = %08Xu%08Xv pop3_client_workarounds = outlook-no-nuls oe-ns-eoh } auth default { mechanisms = plain passdb sql { args = /etc/dovecot-sql.conf } userdb static { args = uid=32765 gid=32765 home=/var/spool/postfix/var/./mail } user = _dovecot-auth chroot = /var/dovecot/auth socket listen { client { path = /var/spool/postfix/private/dovecot-auth mode = 0600 user = _postfix } } } driver = mysql connect = host=/mysql.sock dbname=dbname user=db_user password=db_pw default_pass_scheme = PLAIN-MD5 password_query = SELECT password FROM users WHERE userid = '%n' AND %Ls = '1' AND active = '1' --- src/lib-sql/driver-mysql.c.orig Mon Feb 6 23:07:42 2006 +++ src/lib-sql/driver-mysql.c Mon Feb 6 23:39:36 2006 @@ -112,11 +112,17 @@ } alarm(MYSQL_CONNECT_FAILURE_TIMEOUT); + i_error("conn->mysql is %s NULL", conn->mysql == NULL ? "" : "NOT"); + i_error("host(%s), db->user(%s), db->password(%s), db->dbname(%s), " + "db->port(%u), unix_socket(%s), db->client_flags(%u)", + host, db->user, db->password, db->dbname, db->port, unix_socket, + db->client_flags); failed = mysql_real_connect(conn->mysql, host, db->user, db->password, db->dbname, db->port, unix_socket, db->client_flags) == NULL; alarm(0); if (failed) { + i_error("failed: (%i)", (int)failed); if (conn->connect_failure_count > 0) { /* increase delay between reconnections to this server */
participants (1)
-
John Wong