ProFtpd :: Can't find utf8 Charset for MySQL

Hey all.

Found some old threads on this topic, some iWorx related some not. In any case, with latest v4.8.3 of iWorx and v.1.3.3e of ProFtpd, I am able to connect to via ftp, but am immediately disconnected (despite having correct login).

Running a tail -f /var/log/messages, I see:
Can’t initialize character set utf8 (path: /home/interworx/var/share/mysql/charsets/)

Character set ‘utf8’ is not a compiled character set and is not specified in the ‘/home/interworx/var/share/mysql/charsets/Index’ file

Sure, enough there is no utf8 charset file in:
/home/interworx/var/share/mysql/charsets/

What is going on here? MySQL itself seems to be working fine with uft8 tables (although I do not see utf8 listed in /usr/share/mysql/charsets/). The system itself (centOS 5.7) supports utf8 of course.

Anyone else getting bitten by this? MySQL v5.0.77

Do you have any charset stuff in your my.cnf or any UseEncoding stuff in your proftpd.conf? Is your box 100% up to date? Do you have the mysql devel stuff installed? When I’ve seen these types of errors in the past, they’ve been because of one of these things - either the program connecting to mysql has hardcoded something that it shouldn’t, mysql has hardcoded something that it shouldn’t, files needed are missing, or updates were needed.

Yes, actually I did customize my.cnf, that did cross my mind.

The utf8 tweaks in my.cnf:
[mysqld]

default-character-set=utf8
default-collation=utf8_general_ci
character-set-server=utf8
collation-server=utf8_general_ci
skip-character-set-client-handshake

[client]
socket=/var/lib/mysql/mysql.sock
default-character-set=utf8

Box is fully yum’d CentOS 5.7, fresh install of Interworx CP latest.

From what I’ve found on the net (and there is nothing recent), proftpd is not looking in the same place as mysql is for charset data.

Got any clue what may be going on here? I’m moving sites over to the new server, fine for now to scp, but once I switch DNS clients are going to need ftp access

Honestly not sure. I’d start with setting char encoding in proftpd.conf

http://www.proftpd.org/docs/modules/mod_lang.html

specifically:

UseEncoding

Syntax: UseEncoding on|off|local-charset client-charset
Default: None
Context: “server config”, <VirtualHost>, <Global>
Module: mod_lang
Compatibility: 1.3.2rc1 The UseEncoding directive is used to explicitly configure which character sets should be used for encoding. By default, the mod_lang will automatically discover the local character set, and will use UTF8 for the client character set. The module will also allow the use of UTF8 encoding to be changed by clients using the OPTS UTF8 command (as per RFC2640). However, if the UseEncoding directive is explicitly used to indicate the character sets to use (or not use), then any OPTS UTF8 commands used by clients will be refused.
For example, to disable all use of encoding, use the following in your proftpd.conf:
UseEncoding off Similarly, to enable use of UTF8 encoding and to not allow clients to change the use of UTF8, you would use: UseEncoding on In addition to the on|off parameters, the UseEncoding directive allows administrators to specify exactly which character sets to use locally (i.e. for paths on local disks) and for dealing with clients. One such usage this way might look like:
UseEncoding koi8-r cp1251 For a full list of the character sets which are supported, use: $ iconv --list

@zombie, thanks I’ll check this out, although a bit odd to have to customize proftpd for utf8

I’ll test removing my utf8 settings from my.cnf as well to see if that has any effect (doubt it since proftpd is looking in an /interworx/mysql directory for the utf8 charset and I am not changing iworx’s my.cnf)

For anyone else who runs into this show stopper, here’s what fixed it for me:

[client]
socket=/var/lib/mysql/mysql.sock
#default-character-set=utf8

Uncommenting above line breaks ProFtpd