Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> программы —> MySQL

Установка MySQL

Автор: lissyara.


    Опять статья навеянная многочислеными просьбами трудящихся :) Заодно не придётся во всех новых статьях описывать установку MySQL :) Так что, в любом случае пригодится. Вообще, с MySQL вроде всё просто, но почему-то народ активно морозится баз данных, используя системных юзеров в почте, да всякие файлы текстовые, под почту да хранение трафика. Хотя с БД оно всё на порядок удобней получается.
   Итак, рассматривать будем установку и небольшую настройку двух версий MySQL - 5.0 и 3.23 под FreeBSD6.0. Почему именно они? На данный момент, 5.1 вроде всё ещё бета, потому используется на рабочих серверах только отъявленными маньяками, или теми у кого есть необходимость. А вот 3.23 нужна в случаях, когда на какой-нить старенькой машинке нужна "записная книжка" для почтовых юзеров, да БД куда складывать статистику по траффику инета, например. Подымать для этого 5.0 или 4.1 - расточительство оперативки и ресурсов слабенькой машинки. У меня и на некоторых, очень хороших машинах, стоит 3.23 - ибо его хватает.
   Итак, ставим 5.0
/usr/home/lissyara/>cd /usr/ports/databases/mysql50-server/
/usr/ports/databases/mysql50-server/>make
===>  Vulnerability check disabled, database not found

You may use the following build options:

        WITH_CHARSET=charset    Define the primary built-in charset (latin1).
        WITH_XCHARSET=list      Define other built-in charsets (may be 'all').
        WITH_COLLATION=collate  Define default collation (latin1_swedish_ci).
        WITH_OPENSSL=yes        Enable secure connections.
        WITH_LINUXTHREADS=yes   Use the linuxthreads pthread library.
        WITH_PROC_SCOPE_PTH=yes Use process scope threads
                                (try it if you use libpthread).
        BUILD_OPTIMIZED=yes     Enable compiler optimizations
                                (use it if you need speed).
        BUILD_STATIC=yes        Build a static version of mysqld.
                                (use it if you need even more speed).
        WITHOUT_INNODB=yes      Disable support for InnoDB table handler.
        WITH_ARCHIVE=yes        Enable support for Archive Storage Engine.
        WITH_FEDERATED=yes      Enable support for Federated Storage Engine.
        WITH_NDB=yes            Enable support for NDB Cluster.

===>  Extracting for mysql-server-5.0.22
^C
/usr/ports/databases/mysql50-server/>

Прервал. Доступна куча опций, потому с ними и поиграемся, для чего в файл /etc/make.conf надо внести такие строки:
# Для некоторых, особо тупых приложений, лучше указать версию MySQL,
# что используется, тут. Но - для совсем тупых не поможет и это.
DEFAULT_MYSQL_VER=50

# Директория где лежат порты
PORTSDIR?=      /usr/ports

# для сервера
.if ${.CURDIR} == ${PORTSDIR}/databases/mysql50-server
# Дефолтовая кодировка. Вообще, этим пунктом увлекаться не стоит -
# могут возникнуть проблемы при переносе на другой сервер. На самом
# деле и не проблемы вовсе - просто дамп перекодировать да поменять
# кодировку-коллэйшен у таблиц в дампе, перед заливкой, но первый
# раз столкнувшись, вызывает кучу проблем...
WITH_CHARSET=utf8
# Другие вкомпиленные кодировки. Можно задать 'all' - все.
#WITH_XCHARSET=all
# Дефолтовая кодировка сравнения (другого слова подобрать не могу...)
WITH_COLLATION=cp1251_bin
# Поддержка OpenSSL - для шифрования передаваемых данных.
# Шифрование - это конечно хорошо, но - повышается нагрузка на
# машину сервера и на машину клиента (если и тот и другой на одной
# машине - вообще не вижу смысла в этом пункте.)
#WITH_OPENSSL=yes
# Интересная опция - позволяет работать в несколько "нитей",
# обрабатывая несколько запросов одновременно - в результате
# повышается производительность.
WITH_LINUXTHREADS=yes
# Программные треды FreeBSD (если я верно всё понял). Тестов на скорость,
# в сравнении с линуксовыми не нашлось - потому не знаю, кто быстрей.
# Кстати, видел рекомендацию - включать и те и другие треды одновременно.
# Смысла, особого в этом не вижу, но и не утверждаю ничего.
#WITH_PROC_SCOPE_PTH=yes
# Собирать с флагами оптимизации (-O2), сам не мерял, но по слухам,
# несколько процентов производительности можно выиграть. Будет
# полезным на старых машинах, или высоконагруженных.
BUILD_OPTIMIZED=yes
# Собрать статическую версию mysqld (cо вкомпиленными либами, чтоль)
# Также, как и предыдущая опция, позволит выиграть несколько процентов
# производительности (по слухам - до 10% - но чё-то слабо верится...)
BUILD_STATIC=yes
# Отключить тип таблиц InnoDB (если не используете - будет поменьше
# коду, и, соответственно, быстрей работать будет)
WITHOUT_INNODB=yes
# Специальный тип хранения данных (не всех, тока тех, что без индексов),
# позволяет хранить их в виде архива, тем самым экономится дисковое
# пространство (в ущерб производительности, я думаю... Так что смысл
# есть, лишь если надо хранить кучу неиндексированных данных -
# те же данные по траффику, к примеру, там всё равно перебором почти всё :))
#WITH_ARCHIVE=yes
# Фенька, позволяющая работать с удалёнными (находящимися на другом хосте)
# таблицами данных, как будто они находятся на локальной машине
# (NFS, чтоль, уже отменили? :)) Хотя, если выборки будут идти на другом
# хосте - то нагрузка на сеть будет меньшe, чем с NFS. Короче - не пробовал,
# ничё не утверждаю... Пару строк в документации прочёл.)
#WITH_FEDERATED=yes
# Опция, нужная лишь в случае, если будете собирать кластер MySQL-серверов
#WITH_NDB=yes
.endif
# для клиента
.if ${.CURDIR} == ${PORTSDIR}/databases/mysql50-client
# Многие из опция сервера, применяются и в клиенте. Вобщем-то, какие не
# применяются, интуитивно понятно - то, что касается всяких фенек, типа
# кластеров, архивных таблиц и прочего. Ставить их тут можно, но они не
# произведут никакого действия. Также, хочу заметить, что кодировка,
# 'по-умолчанию' бывает не тока у сервера, но и у клиента. Частенько,
# именно на этом прокалываются. (И вовсе не обязательно она должна быть
# такая же как у сервера.)
# Также хочу заметить, что клиента не надо собирать с какими бы то ни
# было тредами - линуксовыми, или родными - я прокололся на линуксовых,
# вроде всё пашет, с консоли, а вот апач падает... Методом исключения
# выяснил виновника - клиент с тредами - падает mysql-модуль PHP,
# валит апача...
WITH_CHARSET=cp1251
WITH_COLLATION=cp1251_bin
BUILD_OPTIMIZED=yes
.endif

Итак, собираем MySQL:
/usr/home/lissyara/>cd /usr/ports/databases/mysql50-server/
/usr/ports/databases/mysql50-server/>make && make install && make clean

После инсталляции клиента сборка прекращается с ошибкой - не может найти библиотеку.
===>   Installing ldconfig configuration file
===>   Compressing manual pages for mysql-client-5.0.22
===>   Registering installation for mysql-client-5.0.22
===>   Returning to build of mysql-server-5.0.22
Error: shared library "mysqlclient.15" does not exist
*** Error code 1

Stop in /usr/ports/databases/mysql50-server.
/usr/ports/databases/mysql50-server/>

Я перезагрузился, помогло, но можно и иначе, дать команду:
/usr/home/lissyara/>/sbin/ldconfig -m /usr/local/lib/mysql
/usr/home/lissyara/>

Должно помочь и без перезагрузки. Вообще, раньше, вместе с клиентом, инсталлся такой скрипт:
/usr/local/etc/rc.d/000.mysql-client.sh
#!/bin/sh 

case "$1" in 
        start) 
                /sbin/ldconfig -m /usr/local/lib/mysql 
                ;; 
        stop) 
                ;; 
        *) 
                echo "" 
                echo "Usage: `basename $0` { start | stop }" 
                echo "" 
                exit 64 
                ;; 
esac 

Нынче он не инсталлится. Если ошибки будут продолжаться, при сборке других приложений из портов, то можно его добавить в автозагрузку, или, что грамотней, добавить путь в /etc/rc.conf (подробности можно найти здесь, поиск в странице, по ключевому слову ldconfig_paths).
После чего продолжаем инсталляцию:
/usr/ports/databases/mysql50-server/>make install && make clean

По окончании инсталляции, стругаем конфиг для mysql - /usr/local/etc/my.cnf
# Этот конфигурационный файл сделан на основе файла для маленьких
# систем - /usr/local/share/mysql/my-small.cnf. Большую часть его
# делал не я, а один знакомый. Имени, к сожалению, не помню...
# Но всё же предупреждаю - копирайт на настройки конфига не мой :))
#
# Вообще, конфигурационный файл можно положить в несколько мест:
# /etc/my.cnf
# /var/db/mysql/my.cnf
# /usr/local/etc/my.cnf
# В любом из них mysqld его найдёт, и достанет из него настройки.
# Самое корректное место, если судить по стартовому скрипту, это
# директория где лежат базы данных - /var/db/mysql/my.cnf.


# Опции для всех клиентов MySQL
[client]
# Пароль для подключения к БД
#password       = your_password
# Порт на котором висит MySQL
port            = 3306
# Сокет MySQL
socket          = /tmp/mysql.sock


# Опции MySQL-сервера
[mysqld]
# Порт
port            = 3306
# Адрес, который будем слушать (если вам не нужно подключаться к
# MySQL с других машин, то оставьте здесь 127.0.0.1)
bind-address    = 127.0.0.1
# Где лежит сокет
socket          = /tmp/mysql.sock
# Не использовать средства системных блокировок.
skip-locking
# Вообще, в новых версиях, (после 3.21) этот пункт правильно называется
# key_buffer_size, но можно использовать и старое имя. Значение этого
# пункта - размер буфера, используемого для блоков индексов. Чтобы
# улучшить обработку индексов (для всех операций чтения и записи нескольких
# элементов), необходимо увеличить это значение настолько, насколько возможно.
# Рекомендуется, 1/4 от объёма оперативки, но не более 1/2 - иначе система
# может начать сохранять временные файлы на диске, что значительно
# снизит производительность.
key_buffer = 16K
# Максимальный размер одного пакета. Изначально размер буфера сообщений
# устанавливается в net_buffer_length байтов, но при необходимости может
# возрасти до max_allowed_packet байтов. Это значение по умолчанию не
# настолько велико, чтобы отсеивать большие (возможно ошибочные) пакеты.
# Если используются большие столбцы BLOB, его необходимо увеличить.
# Значение должно быть не меньше самого большого BLOB, который будет
# использоваться. Ограничение протокола для max_allowed_packet
# составляет 16 Мб в MySQL 3.23 и 1Гб в MySQL 4.0.
max_allowed_packet = 1M
# Количество открытых таблиц для всех потоков. С увеличением этого
# значения увеличивается количество дескрипторов файлов, необходимых
# для mysqld. Чтобы узнать, необходимо ли изменять значение кэша таблиц,
# следует проверить значение переменной Opened_tables.
# Если у этой переменной большое значение, а команда FLUSH TABLES
# (которая закрывает все таблицы, а потом открывает их повторно)
# используется не часто, то необходимо увеличить ее значение.
table_cache = 4
# Каждый поток, которому необходимо произвести сортировку, выделяет
# буфер данного размера. Увеличение данного значения позволит ускорить
# выполнение операторов ORDER BY или GROUP BY.
sort_buffer_size = 64K
# Каждый поток, осуществляющий последовательное сканирование, выделяет
# буфер указанного размера для каждой сканируемой таблицы. Если
# проводится много последовательных сканирований, это значение
# можно увеличить.
read_buffer_size = 256K
# При считывании строк, после проведения сортировки, в отсортированном
# порядке строки считываются через буфер, чтобы избежать операций поиска
# по диску. Это может улучшить выполнение ORDER BY весьма и весьма,
# если параметр установлен в большое значение. Т.к. эта переменная
# имеет отношение к потоку, то не устанавливайте слишком большое
# значение глобально, но просто меняйте его при выполнении некоторых
# больших запросов.
read_rnd_buffer_size = 256K
# В данное значение устанавливается, в промежутках между запросами,
# буфер соединения. Обычно это значение не изменяется, но если у вас
# очень мало памяти, можно установить его по размеру ожидаемого
# запроса (т.е. равным предполагаемой длине операторов SQL, отправляемых
# клиентами; если оператор превысит указанную длину, буфер будет
# автоматически увеличен как максимум до max_allowed_packet байтов).
net_buffer_length = 2K
# Размер стека для каждого потока. От данного значения зависит большое
# количество ограничений, обнаруживаемых при помощи теста crash-me.
# По умолчанию этот размер достаточен для нормальной работы.
thread_stack = 64K

# Вообще не слушать порты TCP/IP. Это может применяться для большей
# безопасности, если все процессы, соединяющиеся с MySQL висят на томже
# хосте, что и mysqld. Все взаимодействия с mysqld будут осуществляться
# через Unix-сокеты, или именованые каналы.
# Заметтьте, что использование этой опции под форточками, без включчения
# именованных каналов (используйте опцию "enable-named-pipe") сделает
# работу MySQL бесполезной - ибо с mysqld никто не сможет соединиться :)
skip-networking
# Если Вы используете InnoDB, то закомментируйте эту опцию
skip-innodb
# С этой опцией MySQL не будет инициализировать библиотеку Berkeley DB,
# что позволит сэкономить большое количество памяти.
skip-bdb
# Hекоторое уникальное число между 2 и 2^32-1. Значения server-id должны
# быть различными на каждом сервере, участвующем в репликации. Если
# значение server-id не определено, оно будет установлено в 1, если
# также не определено значение master-host, оно будет установлено в 2.
# Обратите внимание, что если значение server-id опущено, то головной
# сервер будет отказывать в соединении всем подчиненным серверам, а
# подчиненный сервер - отказывать в соединении головному серверу.
# Таким образом, опускать установку значения server-id можно лишь в
# случае резервного копирования с использованием двоичного журнала.
server-id       = 1
# Раскомментируйте эту опцию, для включения логгирования всех запросов
# Заметтьте - тока на время отладки! Потом надо закомментить и
# рестартануть MySQL!
# Файл должен существовать, с соответствующими правами на него:
# touch /var/log/mysql.log
# chown mysql:wheel /var/log/mysql.log
# chmod 640 /var/log/mysql.log
log            = /var/log/mysql.log

# Указывает местоположение двоичного журнала обновлений,
# в котором будут вестись записи.
#log-bin=mysql-bin

[mysqldump]
# Если задан этот параметр, то обработчик таблицы при выполнении
# удаления не будет объединять индексы - в некоторых случаях это
# может ускорить данную операцию
quick
# Максимальная величина пакета, посылаемого/принимаемого с сервера
max_allowed_packet = 16M

[mysql]
# Отключает автоматическое рехеширование. rehash следует использовать
# для получения хеша таблиц и полей. Это обеспечивает более
# быстрый старт mysql.
no-auto-rehash
# Опция, которую рекомендуется раскомментить начинающим :)
# Разрешает выполнять только операции UPDATE и DELETE, используя ключи.
#safe-updates

[isamchk]
key_buffer = 8M
sort_buffer_size = 8M

[myisamchk]
key_buffer = 8M
sort_buffer_size = 8M

[mysqlhotcopy]
# Допускать простой длительностью interactive_timeout секунд (вместо
# wait_timeout секунд) перед закрытием данного соединения.
interactive-timeout

# P.S. Большинство текста - это из мануала по MySQL 4.0, за который
# мы не так давно воевали на www.mysql.com (его убирали на некоторое
# время, типа он по старой версии, потому не актуален...
# но - отвоевали, вернули :))))

C таким конфиг-файлом mysqld занимает в 6 раз меньше памяти, чем без него. Итак, запускаем:
/usr/home/lissyara/>echo 'mysql_enable="YES"' >> /etc/rc.conf
/usr/home/lissyara/>/usr/local/etc/rc.d/mysql-server.sh start
Starting mysql.
/usr/home/lissyara/>
/usr/home/lissyara/>ps -axj | grep mysqld
mysql    44512     1 44510   504    0 S     p0    0:00,08 /bin/sh /usr/local/bin
mysql    44530 44512 44510   504    0 SN    p0    0:00,15 /usr/local/libexec/mys
mysql    44531 44530 44510   504    0 SN    p0    0:00,00 /usr/local/libexec/mys
mysql    44532 44531 44510   504    0 SN    p0    0:00,00 /usr/local/libexec/mys
mysql    44533 44531 44510   504    0 SN    p0    0:00,00 /usr/local/libexec/mys
root     44548   507 44547   504    2 S+    p0    0:00,02 grep mysqld
/usr/home/lissyara/>

Так много процессов - потому как с тредами (на самом деле он один...).

   С 5-кой разобрались. Теперь пример установки, для самой старой версии mysql, что есть в портах - 3.23.
/usr/home/lissyara/>cd /usr/ports/databases/mysql323-server/
/usr/ports/databases/mysql323-server/>make && make install && make clean
===>  Vulnerability check disabled, database not found

You may use the following build options:

        WITH_CHARSET=charset    Define the primary built-in charset (latin1).
        WITH_XCHARSET=list      Define other built-in charsets (may be 'all').
        WITH_OPENSSL=yes        Enable secure connections.
        WITH_LINUXTHREADS=yes   Use the linuxthreads pthread library.
        WITH_PROC_SCOPE_PTH=yes Use process scope threads
                                (try it if you use libpthread).
        BUILD_OPTIMIZED=yes     Enable compiler optimizations
                                (use it if you need speed).
        BUILD_STATIC=yes        Build a static version of mysqld.
                                (use it if you need even more speed).
        WITHOUT_INNODB=yes      Disable support for InnoDB table handler.

===>  Extracting for mysql-server-3.23.59.n.20050301_3
^C
/usr/ports/databases/mysql323-server/>

Чтож, опции, в большинстве своём, точно такие же, как и у 5.0. Соответсвенно правим файл /etc/make.conf (приведено без комментов, ибо нового ничё нет - смотрите предыдущий листинг)
# Для некоторых, особо тупых приложений, лучше указать версию MySQL,
# что используется, тут. Но - для совсем тупых не поможет и это.
DEFAULT_MYSQL_VER=323

# Директория где лежат порты
PORTSDIR?=      /usr/ports

# для сервера
.if ${.CURDIR} == ${PORTSDIR}/databases/mysql323-server
BUILD_OPTIMIZED=yes
BUILD_STATIC=yes
# Единственный пункт, по которому нужны, наверно, пояснения.
# Просто без него у меня не заводилось...
#WITHOUT_INNODB=yes
.endif
# для клиента
.if ${.CURDIR} == ${PORTSDIR}/databases/mysql323-client
.endif

После рихтовки /etc/make.conf снова запускаем компиляцию:
/usr/ports/databases/mysql323-server/>make && make install && make clean

Которая по окочании установки клиента вываливается с ошибкой, похожей на ту, что и у mysql 5.0:
===>   Installing ldconfig configuration file
===>   Compressing manual pages for mysql-client-3.23.59.n.20050301_2
===>   Registering installation for mysql-client-3.23.59.n.20050301_2
===>   Returning to build of mysql-server-3.23.59.n.20050301_3
Error: shared library "mysqlclient.10" does not exist
*** Error code 1

Stop in /usr/ports/databases/mysql323-server.
/usr/ports/databases/mysql323-server/>

Лечение тоже самое - перезагрузка, или
/usr/home/lissyara/>/sbin/ldconfig -m /usr/local/lib/mysql
/usr/home/lissyara/>

После чего всё нормально доинсталлируеся. Можно создавать конфиг /usr/local/etc/my.cnf
# Этот конфигурационный файл сделан на основе файла для маленьких
# систем - /usr/local/share/mysql/my-small.cnf.
#
# Вообще, конфигурационный файл можно положить в несколько мест:
# /etc/my.cnf
# /var/db/mysql/my.cnf
# /usr/local/etc/my.cnf
# В любом из них mysqld его найдёт, и достанет из него настройки.
# Самое корректное место, если судить по стартовому скрипту, это
# директория где лежат базы данных - /var/db/mysql/my.cnf.


# Опции для всех клиентов MySQL
[client]
# Пароль для подключения к БД
#password       = your_password
# Порт на котором висит MySQL
port            = 3306
# Сокет MySQL
socket          = /tmp/mysql.sock


# Опции MySQL-сервера
[mysqld]
# Порт
port            = 3306
# Адрес, который будем слушать (если вам не нужно подключаться к
# MySQL с других машин, то оставьте здесь 127.0.0.1)
bind-address    = 127.0.0.1
# Где лежит сокет
socket          = /tmp/mysql.sock
# Не использовать средства системных блокировок.
skip-locking

# Вообще не слушать порты TCP/IP. Это может применяться для большей
# безопасности, если все процессы, соединяющиеся с MySQL висят на томже
# хосте, что и mysqld. Все взаимодействия с mysqld будут осуществляться
# через Unix-сокеты, или именованые каналы.
# Заметтьте, что использование этой опции под форточками, без включчения
# именованных каналов (используйте опцию "enable-named-pipe") сделает
# работу MySQL бесполезной - ибо с mysqld никто не сможет соединиться :)
skip-networking
# Если Вы используете InnoDB, то закомментируйте эту опцию
skip-innodb
# С этой опцией MySQL не будет инициализировать библиотеку Berkeley DB,
# что позволит сэкономить большое количество памяти.
skip-bdb
# Hекоторое уникальное число между 2 и 2^32-1. Значения server-id должны
# быть различными на каждом сервере, участвующем в репликации. Если
# значение server-id не определено, оно будет установлено в 1, если
# также не определено значение master-host, оно будет установлено в 2.
# Обратите внимание, что если значение server-id опущено, то головной
# сервер будет отказывать в соединении всем подчиненным серверам, а
# подчиненный сервер - отказывать в соединении головному серверу.
# Таким образом, опускать установку значения server-id можно лишь в
# случае резервного копирования с использованием двоичного журнала.
server-id       = 1
# Раскомментируйте эту опцию, для включения логгирования всех запросов
# Заметтьте - тока на время отладки! Потом надо закомментить и
# рестартануть MySQL!
# Файл должен существовать, с соответствующими правами на него:
# touch /var/log/mysql.log
# chown mysql:wheel /var/log/mysql.log
# chmod 640 /var/log/mysql.log
log            = /var/log/mysql.log

# Указывает местоположение двоичного журнала обновлений,
# в котором будут вестись записи.
#log-bin=mysql-bin

[mysqldump]
# Если задан этот параметр, то обработчик таблицы при выполнении
# удаления не будет объединять индексы - в некоторых случаях это
# может ускорить данную операцию
quick

[mysql]
# Отключает автоматическое рехеширование. rehash следует использовать
# для получения хеша таблиц и полей. Это обеспечивает более
# быстрый старт mysql.
no-auto-rehash
# Опция, которую рекомендуется раскомментить начинающим :)
# Разрешает выполнять только операции UPDATE и DELETE, используя ключи.
#safe-updates

[isamchk]
key_buffer = 8M
sort_buffer_size = 8M

[myisamchk]
key_buffer = 8M
sort_buffer_size = 8M

[mysqlhotcopy]
# Допускать простой длительностью interactive_timeout секунд (вместо
# wait_timeout секунд) перед закрытием данного соединения.
interactive-timeout

Можно заметить, что отличия от 5.0 минимальны - отсутствуют опции буферов, да и всё, пожалуй. Запускаем:
/usr/home/lissyara/>echo 'mysql_enable="YES"' >> /etc/rc.conf
/usr/home/lissyara/>/usr/local/etc/rc.d/mysql-server.sh start
Starting mysql.
/usr/home/lissyara/>ps -axj | grep mysql
mysql     8848     1  8846   504    0 S     p0    0:00,07 /bin/sh /usr/local/bi
mysql     8868  8848  8846   504    0 S     p0    0:00,06 /usr/local/libexec/my
root      8870   507  8869   504    2 L+    p0    0:00,01 grep mysql
root      8754  5368  8754  5344    1 S+    p1    0:00,02 tail -f /var/db/mysql
/usr/home/lissyara/>

Всё пашет.

Теперь общие вопросы. По дефолту, в MySQL заведено несколько пользователей, типа гостей, и прочих. Я их обычно удаляю - нефига гостям по БД шляться....
/usr/home/lissyara/>mysql --database=mysql --execute="SELECT COUNT(*) FROM user"
+----------+
| COUNT(*) |
+----------+
|        4 |
+----------+
/usr/home/lissyara/>mysql --database=mysql --execute="DELETE FROM user \
? WHERE User=''"
/usr/home/lissyara/>mysql --database=mysql --execute="SELECT COUNT(*) FROM user"
+----------+
| COUNT(*) |
+----------+
|        2 |
+----------+
/usr/home/lissyara/>mysql --database=mysql --execute="DELETE FROM user \
? WHERE Host != 'localhost'"
/usr/home/lissyara/>mysql --database=mysql --execute="SELECT COUNT(*) FROM user"
+----------+
| COUNT(*) |
+----------+
|        1 |
+----------+
/usr/home/lissyara/>
/usr/home/lissyara/>mysql --database=mysql --execute="UPDATE user SET \
? Password = PASSWORD('тут ввести пароль рута')"
/usr/home/lissyara/>mysql --database=mysql --execute="FLUSH privileges"
/usr/home/lissyara/>mysql --database=mysql --execute="SELECT * FROM user"
ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)
/usr/home/lissyara/>

Всё. Без пароля к БД не добраться. Вообще, общая рекомендация - если плохо знаете MySQL - либо займитесь изучением, либо поставьте графический интерфейс, типа phpMyAdmin. Я вначале пошёл по второму пути, щас пытаюсь свернуть на первый :))) Единственное - не забывайте его запаролить.

P.S. При проблемах (не запускается), смотрим лог ошибок:
/usr/home/lissyara/>tail -f /var/db/mysql/`uname -a | awk '{print $2}'`.err



размещено: 2006-07-08,
последнее обновление: 2008-07-21,
автор: lissyara


100kg, 2006-07-08 в 17:42:53

ого !! а я вот с сурса компалю!!

Abigor, 2006-07-10 в 10:52:25

Ну и зря, попробуй теперь это богадство обновить, вопрос автору, почуму при сборке 5 в name.conf пишешь
DEFAULT_MYSQL_VER=41

Abigor, 2006-07-10 в 10:53:22

прошу простить, просто сейчас ковырял named =) в make.conf

lissyara, 2006-07-10 в 11:25:29

ашипка.... Ща поправлю...

Abigor, 2006-07-17 в 8:23:45

а можешь рассказать что делать для того чтоб правельно обновить mysql с 4.1 до 5.0

bonh, 2006-07-27 в 12:34:09

Сразуже выскочил 0,

/usr/home/lissyara/>mysql --database=mysql --execute="DELETE FROM user \
? WHERE User=''"
/usr/home/lissyara/>mysql --database=mysql --execute="SELECT COUNT(*) FROM user"
+----------+
| COUNT(*) |
+----------+
|        0 |
+----------+

На строчку
mysql --database=mysql --execute="UPDATE user SET \
? Password = PASSWORD('тут ввести пароль рута')"

ругается так:
ERROR 1064 (42000) al line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'passwd_root')" at line 1

что делать?..

Key, 2006-09-27 в 19:38:59

Не понял, что там за гемморой с удалением левых пользователей? Не проще сделать:
# mysqladmin -u root -password 'mypass'
# mysql -uroot -pmypass mysql
mysql> delete from user where not (user='root' and host='localhost');

Можно убедиться, что там только root остался:

mysql> select user,host from user;
+-----+---------+
|user |host     |
+-----+---------+
|root |localhost|
+-----+---------+
1 rows in set (0.00 sec)

Всё!

Эдик, 2006-10-13 в 22:08:09

Спасибо огромное !!!

Кирилл, 2006-12-16 в 18:22:25

Вот тебе найденные БАГИ и ФИЧИ!!!
Вообще-то, я не люблю работать с чужим кодом, но мне надо было быстро поставить MySQL, в котором я пока вообще 0.
Так вот, эта строка:
mysql --database=mysql --execute="DELETE FROM user \
? WHERE User=''"
убивает нах ВСЕХ пользователей из БД. Спасибо!

lissyara, 2006-12-16 в 19:38:08

Да ты гонишь.
mysql> SELECT COUNT(*) FROM user;
+----------+
| COUNT(*) |
+----------+
|       15 |
+----------+
1 row in set (0.00 sec)

mysql> DELETE FROM user WHERE user='';
Query OK, 0 rows affected (0.01 sec)

Я могу заподозрить лишь одно - ты незнаком с синтаксисом шелла и не понял что в строке листинга - две строки - это одна. В этом случае, ты выполнял что-то типа
"DELETE FROM user "
Эта команда, действительно, удалит всех юзеров.
P.S. У тя ж должна быть пустая инсталляция? В чём проблема - останавливаешь муся, и руками сносишь всё БД (/var/db/mysql/) - при перезапуске она всё сама создаст.
P.S.2 читай комменты. Там был более хороший способ удаления пользователей.
P.S.3 и ``man csh'' неплохобы почитать.

Кирилл, 2006-12-17 в 13:34:20

Да нет, не гоню! Во-первых, у меня Bash. Во-вторых, как тебе видится ввод твоей команды? Типа, набираешь:
mysql --database=mysql --execute="DELETE FROM user\, жмёшь ввод, затем добираешь ?WHERE User=''" и опять жмёшь ввод? И шелл, типа, после первой строки ждёт от тебя второй, а потом кидает всё на обработку? Так что-ли? Это только для *.sh-скрипта будет так, а с консоли шелл выполнит первую строку , отшвырнёт всякие там \, а MySQL радостно потрёт всех юзверей, что и произошло! А посему, нужно было написать слитно всю команду и всё у всех было бы ОК. А то я ведь не один такой :), видел выше?

Кирилл, 2006-12-17 в 13:40:14

А теперь, покурив про MySQL, поделюсь.
Там, в MySQL, есть классные команды типа DROP USER и CREATE USER и SET PASSWORD. Ими аццки удобно заводить и убивать пользователей, ставить им пароль и рубить права с помощью GRANT! mysql> help Account Management, да и вообще mysql> help Contents, очень полезно, даже для тех кто в первый раз видит MySQL в действии!

lissyara, 2006-12-17 в 18:00:50

Те, кто используют нештатный шелл - свободны сразу :)))
/usr/home/lissyara/>cd /usr/ports/; \
? echo $PWD ;\
? cd /tmp ; \
? ls
/usr/ports
dbmail_scoreboard_803.LCK               summary.em0
dbmail_scoreboard_813.LCK               summary.lo0
mysql.sock                              summary.xl0
sess_3a84f6aa94cb74113ad26c94c3dbf667
/tmp/>

первый пришедший на ум пример. Как ни странно - это листинг с рабочей машины. Юзайте csh а не баши - ибо это - неродное.
P.S. Вопросик добирать не надо - это второй PROMPT csh`лла.
И вообще - в форум :) Развели тут демагогию.

mrrc, 2006-12-20 в 23:08:04

Во время инсталляции хочу разместить базу на отдельном MySQL-сервере, расположенном на внешнем хосте.
Как на том хосте разрешить внешнее подключение к MySQL, выдается:

Unable to connect to MySQL server. MySQL reported: Host '*' is not allowed to connect to this MySQL server


MySQL 4.1.22 из портов, FreeBSD 4.х.

Friendvard, 2007-01-19 в 12:18:15

Привет ребята. Мне срочно нужна помош, я устанавил MySQL 5 как написано здес, когда запускаю он пишет Starting mysql. но после запуска смотрю статус пишет mysql is not running. не видаёт не каких ошибок, логах всё чисто, дело в том, что я 0 по мускулу, а заципица не зашто, не каких ошибок не видаёт. Прашу помоч, мне оно очен нужно...
Сории за неграматность в язике.

Артем, 2007-05-11 в 12:49:02

lissyara, спасибо. Статья очень помогла! Написано в доходчевой форме и оформление что надо.

Krivosoft, 2007-05-18 в 13:21:49

сам наступил на грабли т.к с БД не работал (кроме КАРАТ в молодости :-) ), мож кому окажется полезным:

После установки пароля рута в БД попадаем командой
mysql -p -u root

Создать новую базу:
mysql> create database xxxx;

Посмотреть созданые базы:
mysql> show databases;
+----------+
| Database |
+----------+
| forum    |
| mysql    |
| samp     |
| test     |
| xxxx     |
+----------+
5 rows in set (0.00 sec)

Создать нового пользователя, и дать ему админа на конкретную БД:
grant all on xxxx.* to 'login'@'localhost' identified by 'password';

npu3pak, 2007-07-02 в 10:59:41

всё как по статье, но получил в логах

070702 10:49:37 [ERROR] /usr/local/libexec/mysqld: Can't find file: './mysql/host.frm' (errno: 13)
070702 10:49:37 [ERROR] /usr/local/libexec/mysqld: Can't find file: './mysql/host.frm' (errno: 13)
070702 10:49:37 [ERROR] Fatal error: Can't open and lock privilege tables: Can't find file: './mysql/host.frm' (errno: 13)

вылечилось так:
cd /var/db/mysql
chgrp -R mysql .
chown -R mysql .

posix, 2007-07-10 в 19:22:17

Товарисчи! Не забудьте добавить в my.cnf:
default-character-set=cp1251 в области клиента и сервера иначе трудновато немного станет работать, тот же LIKE не будет регистронезависим.

AlkoGekS, 2007-07-18 в 14:15:00

После установки версий, сразу вылезает несколько ошибок призапуске. Чтобы избежать сие, пишем:
usr/local/bin/mysql_install_db
затем
chown -R mysql:mysql /var/db/mysql/

-=DOmen=-, 2007-07-20 в 12:40:48

AlkoGekS, 10x помогло

miroha, 2007-08-16 в 18:52:55

ставил на 6.2 пустую перед установкой сделал полз mysql...
пока не за комментировал WITH_LINUXTHREADS=yes в make.conf ставиться не хотела. ЧЕм это грозит и как исправить?
огромное спасибо всё работает...

DyuS, 2007-11-28 в 20:07:00

Все прописал в make.conf но как ставилось с WITH_CHARSET=utf8 так и ставится. Сейчас пробую вручную собрать, может быть кто подскажет из-за чего он не влияет на установку?

DyuS, 2007-11-28 в 20:10:06

Извиняюсь устанавливается с WITH_CHARSET=latin1

Юрий, 2008-03-15 в 11:17:46

Спасибо за полезную инфо!
Единственно пришлось добавить в my.conf:
 skip-innodb
Чтобы в логах было чисто.
PS: Unix FreeBSD 6.1

Дмитрий, 2008-04-09 в 11:54:54

miroha
WITH_LINUXTHREADS=yes работает с i386- может в этом грабли?

Saykhan, 2008-07-21 в 9:05:33

/usr/ports/databases/mysql50-server]# make install && make clean
===>   mysql-server-5.0.51a depends on file: /usr/local/bin/libtool - found
===>   mysql-server-5.0.51a depends on shared library: lthread.[35] - not found
===>    Verifying install for lthread.[35] in /usr/ports/devel/linuxthreads
===>   Returning to build of mysql-server-5.0.51a
Error: shared library "lthread.[35]" does not exist
*** Error code 1

Stop in /usr/ports/databases/mysql50-server.

Ашипка не может найти библиотеку, перезагруз не помогает, /sbin/ldconfig -m /usr/local/lib/mysql тоже(

Saykhan, 2008-07-21 в 14:51:47

эту строку в make.conf надо закомментировать, а то требует линукс триды.
#WITH_LINUXTHREADS=yes

Pr0x1ndei, 2008-07-30 в 18:18:21

===>   Registering installation for linuxthreads-2.2.3_23
===>   Returning to build of mysql-server-5.1.26
Error: shared library "lthread.[35]" does not exist
*** Error code 1

Stop in /usr/ports/databases/mysql51-server.
/usr/ports/databases/mysql51-server home# make clean
===>  Cleaning for linuxthreads-2.2.3_23
===>  Cleaning for mysql-server-5.1.26
/usr/ports/databases/mysql51-server home# make deinstall
===>  Deinstalling for databases/mysql51-server
===>   mysql-server not installed, skipping
/usr/ports/databases/mysql51-server home# make install clean

покомпилилось и вывалилось с


===>   linuxthreads-2.2.3_23 is already installed
     You may wish to ``make deinstall'' and install this port again
     by ``make reinstall'' to upgrade it properly.
     If you really wish to overwrite the old port of devel/linuxthreads
     without deleting it first, set the variable "FORCE_PKG_REGISTER"
     in your environment or the "make install" command line.
*** Error code 1

Stop in /usr/ports/devel/linuxthreads.
*** Error code 1

Stop in /usr/ports/databases/mysql51-server.

/usr/ports/databases/mysql51-server home# cd /usr/ports/devel/linuxthreads
/usr/ports/devel/linuxthreads  home# make deinstall && make clean && make install clean

скомпилилось и потом
/usr/ports/devel/linuxthreads home# cd /usr/ports/databases/mysql51-server
/usr/ports/databases/mysql51-server home# make install && make clean

и всё заработало

/home/grumble home# uname -a
FreeBSD 7.0-RELEASE FreeBSD 7.0-RELEASE #0: Sun Feb 24 19:59:52 UTC 2008     root@logan.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  i386

AndreyK, 2008-08-13 в 18:28:38

Устанавливая из обновленных портов MySQL server 5.0.51a на обновлённой FreeBSD 7.0-p3, не забыть сделать следующее
mser# /usr/local/bin/mysql_install_db --user=mysql
mser#/usr/local/bin/mysqld_safe --user=mysql&

mser#/usr/local/bin/mysqladmin -u root password 'new-password'

Если так не делать то сервер не стартует.

udaff, 2008-09-07 в 21:46:48

Привет парни.
В пятом мускуле лучше выкинуть во эту строчку
with_linuxTHREADS=yes
А то не собирается, вот обсуждение:
http://www.opennet.ru/openforum/vsluhforumID1/79831.html[/url]
Оно там само треды как-то делает...

bos, 2008-09-15 в 18:37:12

Ковыряли фрю с Вадимом ( Vermillion)
при установке 3.23 а также 4 версии под фрю 7.0 неприлично ругается по типу "obsolete and does not build with gcc4.2; use mysql 5 or later"

это глюк фри который лечится редактированием Makefile

.if ${OSVERSION} >= 700000
-IGNORE=        obsolete and does not build with gcc4.2; use mysql 5 or later
+USE_GCC=3.4
.endif
.if defined(BUILD_OPTIMIZED)
CFLAGS+=    -O3 -fno-omit-frame-pointer -fno-gcse

вот собственно ссылка http://www.mavetju.org/mail/view_message.php?list=freebsd-bugs&id=2748343

но возникает следующий глюк при установке клиента .... как исправить хз :)
статья отличная спс

trawa, 2008-10-14 в 18:00:25

Статья очень помогла , как и статья по подЪему трака http://forum.lissyara.su/viewtopic.php?f=14&p=67219
Огромное человеческое спасибо.
И н прекращай опысывать - у тебя нормально получаетса - доходчиво.

kabu4i, 2008-10-15 в 17:53:30

FreeBSD7.0 MySQL 5.0.51a
стартануть удалось только так:/usr/local/etc/rc.d/mysql-server forcestart

XLATM, 2008-11-07 в 14:26:49

Закомментарить в make файле
".if ${OSVERSION} >= 700000
"IGNORE=        obsolete and does not build with gcc4.2; use mysql 5 or later
".endif

И собирать с gcc34

make CC=/usr/local/bin/gcc34 CXX=/usr/local/bin/g++34 CPP=/usr/local/bin/cpp34

предварительно собрав в gcc34 из /usr/ports/lang/gcc34

demonsked, 2008-11-20 в 1:45:11

Поставил по статье,но 5,1 версию. Так вот, не запускается сервер пока не закоментируешь строки
skip-innodb
skip-bdb
А в остальном работает.

Hikari, 2009-02-27 в 4:20:03

после обновления мира пересобирал мускул, так вот без
закомментаривания
#WITH_LINUXTHREADS=yes
не пересобирался. Шрифты ему не те...

Crazy, 2009-03-18 в 5:16:09

OS 7.1-RELEASE-p3 i386 64bit
MySQL 5.1.23
Пытался собрать из портов. Матерился на то что не хватает mysql.info. После того как внаглую подсунул данный файл (.Docs/mysql.info)собрался и установился :(
При работе плющило. Плюнул собрал с исходников.
З.Ы. 5.0 теже проблемы

Alex, 2009-06-28 в 14:44:29

Товарисчи, поставил пятёрку, при запуске ругается ERROR 2002 (HY000): Can't connect to
local MySQL server through socket '/var/mysql/mysql.sock'

че иму нада?

bos, 2009-06-29 в 8:23:19

Обычно, когда такое пишет оно хочет чтобы в rc.conf его добавили и перегрузили тачку, после это должно завестись, если делали все по статье!

konstantine, 2009-07-13 в 7:00:36

блин у мя прям карма с Базами похорду.
я делаю:
/usr/local/etc/rc.d/>mysql -u root mysql -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 5.1.35 FreeBSD port: mysql-server-5.1.35

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>


Как видите меня пускает, а если
/usr/local/etc/rc.d/>mysqladmin -u root -password 'новый_пароль'
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: YES)'

2konstantine, 2009-07-16 в 13:56:47

/usr/local/etc/rc.d/>mysqladmin -u root password \'новый_пароль\'

gyurza2000, 2009-07-30 в 10:52:47

c WITH_LINUXTHREADS=yes make не работает :)

Xander, 2009-10-01 в 12:27:18

Уважаемый Лис! Все прекрасно работает, статейка супер! Приятней было бы начинающим видеть как прикрутить PhpMyAdmin. Сам убил на это дело больше пол дня,так и не получилось. Позднее отдохнул, выпил бутылочку пива, и пошел верным способом, сделал все что нужно было через консоль.

Wic, 2009-12-06 в 15:10:30

Прошу добавить в статью сие, а то голову сломал почему мускул не стартовал
AlkoGekS, 2007-07-18 в 14:15:00

После установки версий, сразу вылезает несколько ошибок призапуске. Чтобы избежать сие, пишем:
usr/local/bin/mysql_install_db
затем
chown -R mysql:mysql /var/db/mysql/!

NewChel, 2010-03-12 в 6:18:21

Ставил по статье версию 5.1 на freebsd 7.1.
Замечены баги:
skipdbd нужно убрать. из конфига.

выполнить
chown -R mysql:mysql /var/db/mysql/

Потом выполнить /usr/local/bin/mysql_install_db - выдаст ошибку. согласно http://forum.lissyara.su/viewtopic.php?f=11&t=8464#p110585 временно переименовываем my.cnf и снова запускаем.

После всего этого мускуль у меня завелся.

Лиссяра благодарю :) Может подправить статью ближе к современным реалиям?

xM, 2010-12-01 в 9:52:38

Всё течет, всё меняется.
При инсталляции 5.5 вылезло несколько траблов. В этой связи позволю себе привести свой конфиг в виде правки оригинальной статьи.
1. В /etc/make.conf имеем (не забудьте {PORTSDIR} указать выше):

DEFAULT_MYSQL_VER=55
.if ${.CURDIR} == ${PORTSDIR}/databases/mysql55-server
WITH_CHARSET=utf8
WITH_COLLATION=cp1251_bin
BUILD_OPTIMIZED=yes
.endif
.if ${.CURDIR} == ${PORTSDIR}/databases/mysql55-client
WITH_CHARSET=cp1251
WITH_COLLATION=cp1251_bin
BUILD_OPTIMIZED=yes
.endif

2. Инсталлируем стандартным манером.
3. Ставим базы:

/usr/local/bin/mysql_install_db

4. Меняем права и принадлежность

beta# chown -R mysql:mysql /var/db/mysql

5. На базе стандартного /usr/local/share/mysql/my-small.cnf делаем в /etc свой:

[client]
port            = 3306
socket          = /tmp/mysql.sock

[mysqld]
port            = 3306
socket          = /tmp/mysql.sock
bind-address    = 127.0.0.1
skip-external-locking
key_buffer_size = 16K
max_allowed_packet = 1M
table_open_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 128K

skip-networking
server-id = 1

general-log = /var/log/mysql.log
#log-bin=mysql-bin
#binlog_format=mixed

#skip-innodb
innodb_data_home_dir = /var/db/mysql/
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /var/db/mysql/
innodb_buffer_pool_size = 16M
innodb_additional_mem_pool_size = 2M
innodb_log_file_size = 5M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M

[mysqlhotcopy]
interactive-timeout

6. Стартуем стандартным скриптом

/usr/local/etc/rc.d/mysql-server start

7. Наслаждаемся.

miragh, 2011-04-02 в 1:07:10

в /usr/local/bin/ есть скрипты, после свежей установки делаю /usr/local/bin/mysql_secure_installation, Вдруг кто не знает... =)

wilce, 2011-10-13 в 13:50:07

Таки предложил бы нечто такое (для 8ки и выше)
1. Корректируем /etc/make.conf (так как вам нужно, короткий простой вариант указан здесь выше).

2. Инсталлируем стандартно как в статье из нужного каталога (например ../databases/mysql55-server для примера хМ).

3. Включаем запуск при старте системы
echo \'mysql_enable=\"YES\"\' >> /etc/rc.conf

4. все описанные здесь my.conf, и есть /usr/local/share/mysql/my-small.cnf посему можно просто скопировать его, если он по какой то причине не устраивает, в этом каталоге есть для среднего и большого сервера или читаем документацию.

5. Если хочется ставить базы идем читаем документацию на офсайте ибо /usr/local/bin/mysql_install_db под рутом запускать нужно с параметрами чтобы потом не ерзать с chown -R mysql:mysql /var/db/mysql

Официальная документация на версию 5.5 для FreeBSD гласит:
/usr/local/etc/rc.d/mysql-server start
или если по каким то причинам вы не захотели стартовать сервис при загрузке и не выполнили пункт 3., то
/usr/local/etc/rc.d/mysql-server onestart
При первом запуске этот скрипт:
создаст пользователей, группу, служебные базы и таблицы, назначит необходимые права.

6. Читаем раздел \"постинсталяционные задачи\" на офсайте если хотим вникнуть, что же за шаги нужно сделать, иначе запускаем предложенный выше скрипт:
/usr/local/bin/mysql_secure_installation
он задаст рутовый пароль,
исключит удаленный доступ от рута через сеть (рут может логинится только с локалхоста, что важно если вы потом сделаете доступными сетевые подключения для мускула),
удалит анонимного пользователя и тестовые базы (записи).
в том числе и осуществит обновление прав на рабочем сервере.
7. Логинимся проверяем...
например
mysql -u root -p
SELECT User, Host, Password FROM mysql.user;
видим, что все коннекты только с локалхостов, пользователь только рут пароли везде заданы.

Vlad, 2012-03-01 в 13:05:43

Установка мускула прошла без единой ошибки. А вот стартовать не хочет.
В логе пишет - /usr/local/libexec/mysqld, Version: 5.0.92-log (FreeBSD port: mysql-server-5.0.92). started with:
Tcp port: 0  Unix socket: /tmp/mysql.sock
Time                 Id Command    Argument

В указанной директории /tmp нет файла /mysql.sock
Пока вот ищу в нете описание данной ситуации и её решение, Но возможно здесь кто подскажет.

Vlad, 2012-03-01 в 13:10:54

Забыл указать какой ставил..
mysql-client-5.0.92 Multithreaded SQL database (client)
mysql-server-5.0.92 Multithreaded SQL database (server)

Система - FreeBSD 8.2-RELEASE

slater, 2012-08-07 в 14:18:01

Коллеги, что бы никто не наступал на грабли.
При установке mysql55,
при запуске mysql_install_db
лезет ошибка
FATAL ERROR: Could not find ./bin/my_print_defaults
лечиться просто:
cd /usr/local
bin/mysql_install_db --user=mysql --ldata=/var/db/mysql

Digital, 2012-10-05 в 13:36:20

Подскажите как решить проблему, запускаю make install ставлю msql55 начинает собирать и сразу показывает
error when bootstrapping cmake пробовал ставить другие версии, то же самое, гугл не помог)



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.2816 секунд
Из них PHP: 60%; SQL: 40%; Число SQL-запросов: 86 шт.
Исходный размер: 116343; Сжатая: 25935