Автор: 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=cp1251
# Другие вкомпиленные кодировки. Можно задать ‘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

Взято с lissyara.su