руссификация mysql 5.0, похоже не воспринимает, my.cnf why?

jer

...
руссификация mysql 5.0, похоже не воспринимает, my.cnf why?

Довелось ставить Mysql 5.0.41 под FreeBSD 6.2

Все встало, вроде проблем нет, дошло дело до русификации, пошел путем описанным в http://phpclub.ru/faq/wakka.php?wakka=Mysql41Rus&v=4v, помогла смена кодировки в начале скрипта "SET NAMES cp1251", но при прописывании ее в конфиге, mysql ее не воспринимает. и судя по всему сам конфиг не цепляется.

я не большой спец в никсах, поэтому прошу дать пинка в нужном направлении:

в конфиге прописал в секции:
[mysqld]
init-connect = "SET NAMES cp1251"

конфиг лежит в /etc/my.cnf (пробовал раскладывать в прочие альтернативные пути, описанные в мануале - не помогло)
владелец файла my.cnf юзер mysql, права на чтение даны всем

mysqld естественно перезапускаю после правки конфига,

так же пробовал в явном виде указывать ему путь до конфига:
mysqld --defaults-file=/etc/my.cnf --user-mysql


результат тот же - т.е. его нет )

чет не пойму в какую сторону копать... ;-?
 

Gorynych

Посетитель PHP-Клуба
как ставились? из портов или из исходников? с какими опциями? как WITH_CHARSET=cp1251 ?

далее. В my.cnf

[client]
...
default-character-set=cp1251

[mysqld]
...
skip-character-set-client-handshake
default-character-set=cp1251

По поводу того, где лежит Ваш конфиг:

если собирались из портов, то скорее всего /var/db/mysql/my.cnf

с другой стороны - смотрим /usr/local/etc/rc.d/mysql-server на предмет того, что там прописано в ${mysql_dbdir="базовый каталог"}. По идее должен цепляться my.cnf из этого самого базового каталога.
 

jer

...
ставил из портов http://mysql.org/downloads/mysql/5.0.html#freebsd

по мануалу отсюда http://mysql.org/doc/refman/5.0/en/installing-binary.html:
PHP:
shell> groupadd mysql
shell> useradd -g mysql mysql
shell> cd /usr/local
shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
shell> ln -s full-path-to-mysql-VERSION-OS mysql
shell> cd mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data
shell> bin/mysqld_safe --user=mysql &
ни /var/db/mysql/my.cnf, ни /usr/local/etc/rc.d/mysql-server не найден.

если я правильно понимаю, то для начала надо научить его цеплять my.cnf. но как?
 

Gorynych

Посетитель PHP-Клуба
ну если Вы ставились так, то не из портов, а из пакетов. И, как мне кажется, при такой установке у Вас кодировочки отвалились.

я бы предложил снести то, что Вы поставили (включая Ваш my.cnf) и переставиться из портов:

> su
/пароль рута/
# cd /usr/ports/databases/mysql51-server
# export WITH_CHARSET=cp1251
# export WITH_XCHARSET=all
# export BUILD_OPTIMIZED=yes
# make install clean

по умолчанию оно должно поставится в каталог /var/db/mysql. Если Вас это не устраивает - перенесите в нужный вам каталог (далее - каталог_установки_MySQL).

создаете (правите) в каталоге_установки_MySQL файл my.cnf

ох... ну например такого вида:
[client]
port = 3306
socket = /tmp/mysql.sock
default-character-set=cp1251

[mysqld]
bind-address = 127.0.0.1
port = 3306
socket = /tmp/mysql.sock
skip-character-set-client-handshake
default-character-set=cp1251
skip-locking

key_buffer = 32M
max_allowed_packet = 16M
table_cache = 256
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 16M
thread_concurrency = 8
max_connections = 128
max_user_connections = 126
log-slow-queries
log
binlog_ignore_db = mysql
expire_logs_days = 5
max_binlog_size = 400M
# If there is no need to in work on network, include option skip-networking
#skip-networking
log-bin = mysql-bin
server-id = 1

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[isamchk]
key_buffer = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

запускаете сервер /usr/local/etc/rc.d/mysql-server start

и смотрите правильно как он работает:

ps axw | grep mysql

должно выдавать что-то типа:

780 con- I 0:00.01 /bin/sh /usr/local/bin/mysqld_safe --defaults-extra-file=/var/db/mysql/my.cnf --user=mysql --datadir=/var/db/mysql --pid-file=/v
862 con- S 107:52.92 /usr/local/libexec/mysqld --defaults-extra-file=/var/db/mysql/my.cnf --basedir=/usr/local --datadir=/var/db/mysql --pid-file=/va
7861 p0 S+ 0:00.00 grep mysql

После установки прописать в /etc/rc.conf

#
# MySQL for virtual hosts
#
mysql_enable="YES"

-~{}~ 29.06.07 16:24:

вообще, если Вы догадались, с помощью ps axw | grep mysql Вы можете увидеть какой командой и с какими параметрами у Вас запустился MySQL Ж-)
 

camka

не самка
jer
SET NAMES - это для соединения, инициализируемого клиентом, а не для сервера.
 

Gorynych

Посетитель PHP-Клуба
camka ну я бы еще добавил - при условии, что сервер устанавливает иную кодировку для клиента (предположительно - latin1 :)

мне казалось, что эта проблема вроде как снимается выставлением в конфиге:
[mysqld]
...
skip-character-set-client-handshake

P.S. о чем мне тут не так давно вежливо напомнила Апельсинка
 

jer

...
Gorynych, пошел переставлять...


camka, я с клиента и проверял.

Gorynych, ага, именно latin1 и стоит у меня по умолчанию.

ладно, ушел ставить... thanks

-~{}~ 29.06.07 18:36:

ура! наши победили!

огромное спасибо за реальную помощь, ребят.
 

Gorynych

Посетитель PHP-Клуба
jer

да не вопрос, просто сам на прошлой неделе переставлялся и уже наелся :)

при всей моей линуксоидной НЕ любви к портам в некоторых случаях это работает :)
 
Сверху