RTFM.WIKI

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

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

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


Боковая панель


Навигация

Линкшэринг

ALARM!

Добавить новую страницу

You are not allowed to add pages
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

Ссылки

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies

Discussion

Enter your comment. Wiki syntax is allowed:
 
network/verlihub.txt · Последнее изменение: 2016/12/21 00:34 (внешнее изменение)