RTFM.WIKI

Ordnung muß sein. Ordnung über alles (18+)

Инструменты пользователя

Инструменты сайта


network:verlihub

Verlihub

MySQL и русский язык

При использовании MySQL версии 4.1 и выше возникают трудности с поддержкой русского языка. Чтобы их разрешить, сделайте следующее:

1. Выполните команду

ALTER DATABASE имя_базы CHARSET cp1251;

2. Посмотрите, что вернёт команда

SHOW VARIABLES LIKE 'character_set_%';

Если character_set_server и character_set_client равно cp1251, то больше никаких действий не нужно. Иначе следует сделать следующее:

Вариант 1: Настройка сервера MySQL

Задаем кодировку в настройках mysql сервера (как правило файл с настройками - /etc/my.cnf или /etc/mysql/my.cnf)

[mysqld]
#Кодировка, в которой содержаться данные в таблицах
default-character-set=cp1251 

[client]
#Кодировка по умолчанию для подключающихся клиентов
default-character-set=cp1251

подробнее о кодировке в mysql можно прочитать тут, о файле my.cnf - здесь.

Этот вариант не подходит, если нет возможности изменить конфигурацию сервера MySQL или сервер используется совместно с другими программами, которым такие изменения помешают.

From Splint: Мне помог такой вариант секции

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

From Kompik: От себя добавлю что таблицы должны по команде

SHOW CREATE TABLE SetupList

Выдавать DEFAULT CHARSET=cp1251

После этого в VerliHub'e все будет нормально отображаться, без этого у меня неверно отображалось имя Security бота.

From InGan: От себя добавлю. мне только помог этот вариант с изменением кодировки работы мускула по умолчанию в FreeBSD у провайдера FirstVDS и не забудьте рестартовать свой сервер, почемуто рестарт мускула не помог.

Вариант 2: lua-скрипт

В случае, когда нет возможности изменить настройку сервера, можно воспользоваться альтернативным решением - выполнить команду

SET NAMES cp1251;

после запуска хаба. Это можно сделать с помощью простого lua-скрипта:

-- Charset workaround script
-- by Shurik
function Main()
    VH:SQLQuery("SET names cp1251");
end

Скрипт надо будет разместить в каталоге $VERLIHUB_CFG/scripts. Разумеется, необходим плагин LuaScript. Возможно, что некоторые русскосодержащие параметры, которые зачитываются хабом до загрузки скрипта, при этом не смогут быть нормально отображены, например, имена ботов или фильтры ForbiddenWords.

Вариант 3: исправить кодировку в исходниках

Если не лень поправить исходники, чтобы не трогать mysql, то в файле cmysql.cpp после строчки

mysql_options(mDBHandle,MYSQL_OPT_COMPRESS,0);

вставляем

mysql_options(mDBHandle,MYSQL_INIT_COMMAND,"set names cp1251");

После этого следует сделать make и make install

Примечание: замечено, что в Gentoo это не помогает. Более правильный путь - в следующем варианте.

Вариант 4: патч для поддержки опции db_charset

Идея является продолжением варианта 3. Берём отсюда (или отсюда для более старых версий) этот патч, а в dbconfig прописываем

db_charset = cp1251

http://verlihub.aliki.ru/index.php?title=MySQL_и_русский_язык

Configure firewall for VerliHub

[1]

As a good security measusre we shouldn't be running our hub with root account. Thus we cannot use 411 port.

A good way arround for this is to forward through iptables the 411 port to 1411 or 4111 or whichever you use.

IPTABLES -A PREROUTING -t nat -i eth0 -p tcp --dport 411 -j REDIRECT --to-port 1411

[2]

iptables -F INPUT                                                                                               

# accept all packets that belong to known connections
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# throw away all nonsense packets
iptables -A INPUT -p tcp -m tcp -m state --state INVALID,UNTRACKED -j DROP

# repeat these two lines for every hub port you use
iptables -A INPUT -p tcp -m tcp --dport 411 -m limit --limit 500/sec -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 411 -j DROP

#don't forget things like www, mail and ssh
iptables -A INPUT -p tcp -m tcp --dport 80 -m limit --limit 100/sec -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 80 -j DROP
iptables -A INPUT -p tcp -m tcp --dport 25 -m limit --limit 3/sec -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 25 -j DROP
# don't limit ssh too strictly
iptables -A INPUT -p tcp -m tcp --dport 22 -m limit --limit 1000/sec -j ACCEPT

# rest of the script does not accept tcp
iptables -A INPUT -p tcp -m tcp -j DROP

#if you run a nameserver
iptables -A INPUT -p udp -m udp --dport 53 -j ACCEPT

#if you want icmp
iptables -A INPUT -p icmp -m icmp --icmp-type any -m state --state INVALID -j DROP
iptables -A INPUT -p icmp -j ACCEPT

#if you use DHCP
iptables -A INPUT -p udp -m udp --sport 67 --dport 68 -j ACCEPT

# enable this if you are sure there are no bugs in the script.
#iptables -P INPUT DROP

Ссылки

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
 
network/verlihub.txt · Последнее изменение: 2016/12/21 00:34 — 127.0.0.1