Команды пакета MySQL


Коротко о главном

СУБД MySQL поставляется приходит со следующими основными программами и скриптами.

Еще есть несколько утилит. Они не жизненно важны для MySQL, но обеспечивают полезные дополнительные функциональные возможности.


Основные команды

MySQL

Клиентская программа MySQL.

Запуск:

ОПИСАНИЕ:

Программой mysql поддерживаются следующие опции. Вы можете использовать или "короткий" одиночный символ или более подробную версию.

-\?, --help Справка.
-d, --debug=[options] Вывести в протокол отладочную информацию. В общем виде 'd:t:o,filename`. Подробности в главе о библиотеке отладки.
-d, --debug-info Вывести отладочную информацию при выходе из программы.
-e, --exec Выполнить команду и выйти, неявная форма опции --batch.
-f, --force Продолжить, даже если мы сталкиваемся с SQL ошибкой.
-h, --hostname=[hostname] Задает имя сервера, с которым Вы желаете соединиться.
-P, --port=[port] Порт, для соединения с сервером MySQL.
-p, --password=[password] Пароль пользователя, для соединения с сервером MySQL. Обратите внимание, что не должно быть пробела между -p и паролем.
-q, --quick Быстрый (небуферизованный вывод), может замедлить сервер, если вывод приостановлен.
-s, --silent Работать молча (подавить вывод).
-u, --user=[user] Имя пользователя для соединения с сервером MySQL. Необязательно, если имя пользователя такое же, как ваш логин. По умолчанию именно ваш логин используется в качестве имени пользователя, что облегчает настройку.
-v, --verbose Подробный вывод. -v опция может быть удвоена или утроена для более подробного вывода. В программах русских авторов обычно именуется "уровнем болтливости программы".
-w, --wait Если подключение терпит неудачу, то подождать и повторить попытку.
-B, --batch Выполнить в пакетном режиме. Никаких запросов и никаких ошибок в STDOUT. Устанавливается автоматически при чтении из/записи в канал (пайп). Результаты будут выведены в формате с разделением табуляцией. Одна строка результата соответствует одной строке вывода.
-I, --help Справка, эквивалент -\?.
-V, --version Вывести информацию о версии пакета.

В интерактивном режиме mysql будет печатать результаты в таблице подобно примеру, приведенному ниже. Если не задан пароль или имя пользователя mysql попробует зайти в систему на сервере базы данных с использованием вашего логина и НУЛЕВОГО (ПУСТОГО) пароля. Если ваш mysql логин отличается от вашего логина в unix, или если вы имеете пароль, то это провалится.

ПРИМЕР:

$ mysql mysql

Welcome to the mysql monitor.  Commands ends with ; or \g.
Type 'help' for help.

mysql> select * from host;
1 rows in set (0.25 sec)

  +-----------+----+--------+--------+--------+--------+--------+------+
  | host      | db | select | insert | update | delete | create | drop |
  +-----------+----+--------+--------+--------+--------+--------+------+
  | localhost | %  | Y      | Y      | Y      | Y      | Y      | Y    |
  +-----------+----+--------+--------+--------+--------+--------+------+

mysql>

Переведу этот пример на русский:

$ mysql mysql

Добро пожаловать в монитор mysql. Команды кончаются на ; или \g.
Наберите 'help' для получения справки.

mysql> select * from host;
1 строка в наборе (0.25 секунды)

  +-----------+----+--------+--------+--------+--------+--------+------+
  | host      | db | select | insert | update | delete | create | drop |
  +-----------+----+--------+--------+--------+--------+--------+------+
  | localhost | %  | Y      | Y      | Y      | Y      | Y      | Y    |
  +-----------+----+--------+--------+--------+--------+--------+------+

mysql>

В режиме командной строки Вы должны иметь возможность работать с историей ввода и редактировать предыдущие команды. Это сильно облегчит работу.

В пакетном режиме результаты выводятся в виде полей, разделенных символами табуляции.

ПРИМЕР:

Создайте файл /tmp/test, который содержит следующую строку:


select * from host

В командной строке введите:

$ mysql mysql </tmp/test

Вы получите что-то вроде:


host            db      select  insert  update  delete  create  drop
localhost       %       Y       Y       Y       Y       Y       Y
Вы можете писать довольно сложные SQL программы, используя этот метод.

mysqlaccess

Проверка прав доступа пользователя.

СИНТАКСИС:

ОПИСАНИЕ:

Скрипт mysqlaccess поддерживает следующие параметры (Вы можете использовать "короткий" одиночный символ или более подробную версию):

-?, --help Справка.
-v, --version Информация о версии
-u, --user=... Имя пользователя для доступа к базе данных.
-p, --password=... Пароль пользователя, для соединения с сервером MySQL. Обратите внимание, что не должно быть пробела между -p и паролем.
-h, --host=... Имя сервера, используется для проверки прав доступа.
-d, --db=... Имя базы данных, используется для проверки прав доступа.
-U, --superuser=... Логин администратора.
-P, --spassword=... Пароль администратора.
-b, --brief Вывести краткие сведения о таблице.
--relnotes Вывести заметки по реализации.
--plan Вывести идеи для будущих реализаций.
--howto Вывести примеры использования `mysqlaccess'
--debug=N Уровень отладки N (0..3)

Вы должны указать по крайней мере имя пользователя и имя базы данных, которые Вы желаете проверить. Если имя сервера не задано, то подразумевается имя 'localhost'.

"Групповые символы" (*,?, %, _) могут применяться при указании сервера, пользователя и db (базы данных). Убедитесь, что они не будут перехвачены вашей командной оболочкой unix.


mysqladmin

Выполняет административные функции.

СИНТАКСИС:

ОПИСАНИЕ:

-\?, --help Справка.
-d, --debug=[options] Вывести в протокол отладочную информацию. В общем виде 'd:t:o,filename`. Подробности в главе о библиотеке отладки.
-f, --force Не спрашивать подтверждения при пропуске таблицы.
-h, --host=[hostname] Имя сервера, если не localhost.
-i, --sleep=[seconds] Выполнить команды несколько раз с паузой в [секунд] между ними.
-p, --password[password] Пароль пользователя, для соединения с сервером MySQL. Обратите внимание, что не должно быть пробела между -p и паролем.
-u, --user=[user] Имя пользователя. Если не указано, используется текущий логин.
-P, --port=[port] Порт, для соединения с сервером MySQL.
-V, --version Вывести информацию о версии.

Кроме этого программа mysqladmin поддерживает следующие команды:

create [имя базы данных] Создать базу данных.
drop [имя базы данных] Удалить базу данных (вместе со всеми таблицами).
processlist Вывести сведения о работающих потоках MySQL.
reload Перечитать настройки и очистить все кэши.
shutdown Завершить работу СУБД MySQL. Все запущенные MySQL-сессии помечаются как 'killed'. Это означает, что все потоки, которые простаивают в настоящее время, будут закрыты немедленно, а управление потоками будет закрыто, когда они достигнут точек завершения, определенных сервером. Клиенты получат сообщение об ошибке 'mysql server has gone away'.
status Вывести короткое сообщение о статусе сервера.
version Вывести информацию о версии.

Обратите внимание: mysqladmin понимает сокращения. Например, Вы могли бы написать следующее:


$ mysqladmin v p

Это вывело бы версию mysqld и список всех активных в настоящее время потоков.

Вы можете использовать опцию -i=[секунд] для повтора команды каждые [секунд]. Это наиболее полезно с командой processlist.

Обратите внимание, что Вы можете использовать вышеупомянутые команды, только если Вы имеете соответствующие права доступа.


mysqld

Серверная часть пакета MySQL (mysqld).

СИНТАКСИС:

ОПИСАНИЕ:

Программа mysqld поддерживает следующие опции командной строки:
-\?, --help Справка
-#, --debug=[options] Вывести в протокол отладочную информацию. В общем виде 'd:t:o,filename`. Подробности в главе о библиотеке отладки.
-b, --basedir=[path] Полное имя каталога в который установлен пакет.
-h, --datadir [homedir] Полное имя каталога в котором хранятся базы данных.
-l, --log=[filename] Имя файла протокола запросов к базам данных и подключений.
--log-isam=[filename] Имя файла протокола изменений isam.
-O, --set-variable var=option Установить переменную. См. ниже.
-L, --language=[language] Значение по умолчанию 'english/'. Может быть так же 'swedish/', 'germany/','french/' или 'czech/'. Текущий список можно посмотреть в подкаталог share/mysql каталога, в который установлен MySQL.
-P, --port=[port] Порт для соединения.
-T, --debug-info Вывести отладочную информацию.
--skip-new-routines Не использовать новые (возможно, глючные) возможности этой версии.
--skip-grant-tables Игнорировать таблицы предоставления доступа. Это дает любому ПОЛНЫЙ доступ ко всем таблицам.
--skip-locking Не использовать блокировку системы. Может дать лучшую эффективность, но не должен использоваться вместе с isamchk. ТО ЕСТЬ, сначала остановите сервер.
--skip-name-resolve Эта опция заставит mysqld принимать адреса IP только тех серверов, которые явно указаны в базе данных привилегий mysql. DNS можно более или менее просто хакнуть, а эта опция позволяет избежать ряда проблем, если прикладная программа требует высокого уровня защиты.
--skip-networking Использовать подключения только через интерфейс localhost. Эта опция не будет работать с MIT потоками. Если подключения к базе данных будут только локальные, то использование этой опции защитит от создания удаленных подключений.
--skip-unsafe-select Пропустить возможно опасные оптимизации.
--socket=[socket] Имя сокет-файла для MySQL. Недоступно при использовании версии MySQL, скомпилированной с MIT потоками.

ПРИМЕР:
mysqld --socket=/tmp/mysql.sock

-V, --version Вывести информацию о версии.

Если опция -h не определена, mysql будет считать, что основной каталог = "/my/data/sql/mysql".

Все базы данных размещены в каталоге [homedir]/[имя базы данных] .

Опция -l должна использоваться осторожно. Когда используется сервер, с большим объемом транзакций, этот файл может стать большим очень быстро. Если Вы не определяете имя logfile, при использовании опции -l mysqld будет писать протокол в файл [homedir]/[hostname].log.

Опция -O позволяет Вам определять значения для следующих параметров:

ИмяЗначение по умолчанию
back_log5
keybuffer1048568
max_allowed_packet65536
net_buffer_length8192
max_connections90
table_cache64
recordbuffer131072
sortbuffer2097144
max_sort_length1024

Информация относительно того, что эти значения делают, и как поднять эффективность mysqld, находится здесь.


mysqldump

Дамп содержания базы данных.

СИНТАКСИС:

ОПИСАНИЕ:

Программа mysqldump поддерживает следующие параметры (Вы можете использовать короткую или подробную версию):

-#, --debug=[options] Вывести в протокол отладочную информацию. В общем виде 'd:t:o,filename`. Подробности в главе о библиотеке отладки.
-?, --help Справка.
-c, --compleat-insert Генерируйте полные инструкции insert (не исключая значений, которые соответствуют значениям столбца по умолчанию).
-h, --host=[hostname] Соединиться с сервером hostname.
-d, --no-data Экспорт только схемы информации (исключая данные).
-t, --no-create-info Экспорт только данных, исключая информацию для создания таблицы. Противоположность -d.
-p, --password=[password] Пароль пользователя, для соединения с сервером MySQL. Обратите внимание, что не должно быть пробела между -p и паролем.
-q, --quick Не буферизовать результаты запроса, дамп выдать непосредственно к STDOUT.
-u, --user=[username] Имя пользователя. Если не задано, используется текущий логин.
-v, --verbose Вывести подробную информацию относительно различных стадий выполнения mysqldump.
-P, --port=[port] Порт для связи.
-V, --version Информация о версии.

Вы можете направить вывод mysqldump в клиентскую программу MySQL, чтобы копировать базу данных. ПРИМЕЧАНИЕ: Вы должны убедиться, что база данных не изменяется в это время, иначе Вы получите противоречивую копию!

ПРИМЕР:

mysqladmin create foo
mysqldump mysql | mysql foo


mysqlshow

Показать информацию о сервере, базе данных или таблице.

СИНТАКСИС:

ОПИСАНИЕ:

Программа mysqlshow поддерживает следующие параметры (Вы можете использовать короткую или подробную версию):

-#, --debug=[options] Вывести в протокол отладочную информацию. В общем виде 'd:t:o,filename`. Подробности в главе о библиотеке отладки. Как мне надоела эта опция...
-?, --help Справка.
-h, --host=[hostname] Связаться с сервером hostname.
-k, --key Вывести ключ(и) для таблиц(ы).
-p, --password=[password] Пароль пользователя, для соединения с сервером MySQL. Обратите внимание, что не должно быть пробела между -p и паролем.
-u, --user=[username] Имя пользователя. Если не задано, используется текущий логин.
-P, --port=[port] Порт для связи.
-V, --version Информация о версии.

mysqlshow без аргументов покажет все базы данных. mysqlshow с именем базы данных покажет все таблицы в ней. mysqlshow с именем базы данных и именем таблицы покажет схему этой таблицы.

Если последний параметр содержит '?' или '*', то они используются как подстановочные знаки.

ПРИМЕР:

mysqlshow test 'a*'
показать список всех таблиц в базе данных test, начиная с 'a'.

mysqlshow по существу идентичен программе mSQL msqlshow. СУБД MySQL обеспечивает, подобные функциональные возможности посредством команд языка SQL SHOW и DESCRIBE .


isamchk

Проверка, восстановление, управление и сбор статистики по таблицам MySQL.

СИНТАКСИС:

isamchk [-?adeiqrsvwzIV] [-k #] [-O xxxx=size] [-Si] [-Sr #]
        [-O keybuffer=#] [-O readbuffer=#] [-O writebuffer=#]
        [-O sortbuffer=#] [-O sort_key_blocks=#] files

ОПИСАНИЕ:

Опции программы isamchk:

-# Вывести в протокол отладочную информацию. В общем виде 'd:t:o,filename`. Подробности в главе о библиотеке отладки.
-? Справка.
-a Анализ. Используется для для оптимизации размещения таблиц.
-d Информация о таблице.
-e Расширенная проверка. При запуске с этой опцией надо остановить демон mysqld.
-f Принудительно создать временный файл. Эта опция вызовет 'isamchk -r', если таблица разрушена.
-k# Используемые ключи.
-i Дополнительная информация.
-q Быстрая проверка.
-r[o] Восстановление, Эта опция также уплотнит внутренние индексы B-Tree, используемые MySQL. Используйте эту опцию, чтобы уменьшить место, занимаемое таблицей, за счет удаления неиспользуемых индексов.
-s Работать молча.
-u Распаковать упакованный файл.
-v Подробный вывод. Используется вместе с другими параметрами, чтобы получить большее количество информации. Можно задать большее количество символов v для повышения объема выдаваемой информации (например, vv).
-w Ждать, если таблица заблокирована.
-I Справка.
-S[ir]# Сортировать индекс/записи по ключу #. Эта опция оптимизирует размещение данных в таблице.
-V Информация о версии.
-O var=# Опция оптимизации var=#[k][m]

Можно использовать вторую опцию '-q', чтобы использовать старый файл данных. -ro использует старый метод восстановления: медленнее, но надежнее -r. -r может исправить почти все ошибки, кроме уникальных ключей, которые оказались все же не уникальными. УБЕДИТЕСЬ, ЧТО ДЕМОН MYSQLD НЕ ЗАПУЩЕН, ЕСЛИ ИСПОЛЬЗУЕТЕ ЭТУ ОПЦИЮ! Если -f задан при проверке таблицы, то таблицы с ошибками будут автоматически исправлены.

Имеется несколько примеров. См. Подробно о таблицах.

ПРИМЕРЫ:

isamchk -r [table_name] Убрать все дырки, которые сформировались из-за использования BLOBS или VARCHARS. Также установить какие еще есть проблемы.
isamchk -ei [table_name] Проверить таблицу и отобразить статистику.
isamchk [table_name] Найти большинство ошибок.
isamchk -rq [table_name] Обновить только индексный файл. Быстро, но не исправляет ошибки в файле данных.
isamchk -d -v [table_name] Описание таблицы.
isamchk -rq -Si [table_name] Полная оптимизация таблицы [table_name]. Надолго...


isamlog

Получение статистики, и использование isam-журналов.

СИНТАКСИС:

isamlog [-?iruvIV] [-c #] [-f #] [-p #] [-F filepath/] [-o #]
        [-R file recordpos] [-w write_file] [log-filename]
ОПИСАНИЕ:

-? or -I Справка.
-V Информация о версии.
-c # Выполнить только # команд.
-f # Максимальное число открытых файлов. Если откроется больше чем # файлов, то лишние будут автоматически закрыты и вновь открыты по мере необходимости.
-F [path] Файл протокола ISAM содержит полный путь к таблицам. Вы можете использовать эту опцию, чтобы отменить сохраненный путь.

ПРИМЕР:

-F '/var/mirror/' заставит isamlog работать с файлами в /var/mirror, а не с теми, которые указаны в сохраненном пути.

-i Вывести более детальную информацию.
-o # Начать со смещения #.
-p # Удалить # компонент из пути.
-r Игнорировать все ошибки, с которыми сталкиваемся в течение модификаций.
-R Указать позицию в файле ISAM, о которой надо выдать сведения.

ПРИМЕР:

isamlog -R /usr/local/data/mysql/user.ISM 1234

Выведет все изменения в таблице /usr/local/data/mysql/user, которые найдены в позиции 1234. Это полезно для ситуаций, в которых Вы имеете разрушенную запись в известной позиции. Вы, возможно, получили эту информацию посредством isamlog -vvv или из isamchk.

Если Вы укажете позицию -1, будут обработаны все записи.

-u Пытаться модифицировать все таблицы. Остановиться, если встречена ошибка.
-v Подробный вывод. Можно задать большее количество символов v для повышения объема выдаваемой информации (например, vv).
-w [filename] Записать все записи вставленные или измененные опцией -R в [filename]. Эта опция может использоваться, чтобы получить двоичный файл всех вставок и модификаций конкретной таблицы для использования в отладке.


safe_mysqld

Скрипт для запуска демона mysqld.

СИНТАКСИС:

ОПИСАНИЕ:


Дополнительные команды

comp_err

Генерирует файлы сообщений об ошибках на национальном языке.

СИНТАКСИС:

comp_err [-?] [-I] [-V] fromfile[s] tofile

ОПИСАНИЕ:

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

ПРИМЕР:

comp_err share/english/errmsg.txt share/english/errmsg.sys


msql2mysql

Выполняет начальное преобразование mSQL скрипта в MySQL.

СИНТАКСИС:

ОПИСАНИЕ:


mysqlbug

Генерирует отчет об ошибках.

СИНТАКСИС:

ОПИСАНИЕ:

perror

Выводит короткое текстовое объяснение числового кода ошибки.

СИНТАКСИС:


$ perror [-?vIV] [errorcodes]

ОПИСАНИЕ:

Программа perror поддерживает опции:

-? or -I Справка.
-v Подробная информация.
-V Информация о версии.


replace

СИНТАКСИС:

ОПИСАНИЕ:

Программа program используется скриптом msql2mysql. Replace может быть использована для замены строки на месте в файле или получать строку через канал (пайп), производить замену и выводить результат в STDOUT.

Допустимы следующие опции:

-? Справка.
-s Работать молча (никаких статусных сообщений).
-v Подробная информация о ходе работы (выводить дополнительные сообщения).

ПРИМЕРЫ:

replace Apple Orange somefile

Заменит все вхождения Apple на Orange в файле somefile.

cat INFILE | replace Apple Orange Blimp Train > OUTFILE

Все вхождения Apple в файле INFILE будут заменены на Orange и результат выведен в файл OUTFILE. В то же время, все вхождения Blimp в файле INFILE будут заменены на Train и тоже выведены в файл OUTFILE. Таким образом, можно заменять более чем одно выражение за один проход.

Вы можете использовать специальные символы во входных строках:

\^ Соответствует началу строки.
\$ Соответствует концу строки.
\b Соответствует пробелу. Может появляться или отдельно, или в начале, или в конце лексемы. Если \b используется в конце лексемы, следующие замены начнутся после пробела. \b соответствует только пробелу.

Replace простая и очень полезная утилита с большими потенциальными возможностями использования в MySQL.


which1

Найти команду.

СИНТАКСИС:

ОПИСАНИЕ:


zap

Послать сигнал процессу, который соответствует образцу.

СИНТАКСИС:

ОПИСАНИЕ:

ПРИМЕР:


prompt> zap -t "my"
UID   PID  PPID  C    STIME TTY      TIME CMD
root  1217     1  1 15:21:30 pts/4    0:00 /bin/sh /usr/local/pkg/mysql-3.20.15/bin/safe_mysqld
root  1224  1217  3 15:21:32 pts/4    0:01 /usr/local/pkg/mysql-3.20.15/libexec/mysqld -b /usr/local/pkg/mysql-3.20.15 -h

Программа zap поддерживает опции:

-I or -? Справка.
-f Послать сигнал без запроса подтверждения.
-t Вывести список процессов, соответствующих образцу, но не сигнал им не посылать.

В качестве сигнала допускается любой сигнал системы unix. По умолчанию сигнал = 9 (завершить процесс).

В заключение хочется попросить Вас, если Вам понравилась эта страничка или пригодилась изложенная здесь информация, послать благодарность автору. Это поможет мне вести статистику того, скольким людям пригодилось хоть что-то из моих трудов.

Локальное оглавление.

На главную страничку.

© 2000 Alexey Pautov rldp@ftp.botik.ru.
Information Club of the developers PHP