mysql
, Утилита командной строкиmysqladmin
, Администрирование MySQL-сервера.mysqlcheck
для сопровождения и аварийного восстановления таблиц.mysqldump
, Получение дампов данных и структуры таблицыmysqlhotcopy
, Копирование баз данных и таблиц MySQLmysqlimport
, импорт данных из текстовых файловBuy this Reference Manual in softcover from Barnes & Noble!
mysql
, Утилита командной строкиУтилита командной строки mysql
является простой SQL-оболочкой (с возможностями библиотеки readline
проекта GNU). Она поддерживает интерактивный и неинтерактивный режимы. В интерактивном режиме результаты запроса представляются в ASCII-формате. При использовании в неинтерактивном режиме (например, в качестве фильтра) результат представляется в текстовом формате с символом табуляции в качестве разделителя (выходной формат можно изменить при помощи параметров командной строки). Сценарии можно запускать, как показано ниже:
shell> mysql database < script.sql > output.tab
Если возникают проблемы из-за недостатка памяти на данном клиенте, применяйте параметр --quick
! Это заставит mysql
использовать функцию mysql_use_result()
вместо функции mysql_store_result()
для получения результирующей выборки данных.
Использовать mysql
очень легко. Запустите mysql database
или mysql --user=user_name --password=your_password databas
e. Наберите SQL-команду прямо в командной строке, завершив ее одним из символов: `;', `\g' или `\G', и нажмите клавишу ``Ввод''.
Утилита командной строки mysql
поддерживает следующие параметры:
-?, --help
-A, --no-auto-rehash
rehash
следует использовать для получения хеша таблиц и полей. Это обеспечивает более быстрый старт mysql
.
--prompt=...
-b, --no-beep
-B, --batch
--character-sets-dir=...
-C, --compress
-#, --debug[=...]
-D, --database=...
--default-character-set=...
-e, --execute=...
--batch
).
-E, --vertical
\G
.
-f, --force
-g, --no-named-commands
-g
, однако, длинные команды все еще работают с первой строки.
-G, --enable-named-commands
-i, --ignore-space
-h, --host=...
-H, --html
-L, --skip-line-numbers
--no-pager
\
h (интерактивная помощь).
--no-tee
\h
(интерактивная помощь).
-n, --unbuffered
-N, --skip-column-names
-O, --set-variable var=option
--help
.
-o, --one-database
--pager[=...]
PAGER
. Ее возможные значения - less, more, cat [> имя файла], и т.д. См. также команду \h (интерактивная помощь). Этот параметр не работает в пакетном (batch) режиме. Пейджер работает только под Unix.
-p[password], --password[=...]
-p
не оставляйте пробел между параметром и значением пароля.
-P --port=...
-q, --quick
-r, --raw
--batch
.
-s, --silent
-S --socket=...
-t --table
-T, --debug-info
--tee=...
-u, --user=#
-U, --safe-updates[=#], --i-am-a-dummy[=#]
UPDATE
и DELETE
, используя ключи. Более полная информация об этом параметре приведена ниже. Можно сбросить данный параметр, установив в конфигурационном файле `my.cnf' значение аргумента --safe-updates=0
.
-v, --verbose
-v -v -v
дает формат вывода таблицы).
-V, --version
-w, --wait
Через параметры командной строки -O
или --set-variable
можно также установить следующие переменные:
Имя переменной | По умолчанию | Описание |
connect_timeout | 0 | Число секунд до истечения времени ожидания соединения |
max_allowed_packet | 16777216 | Максимальная величина пакета, посылаемого/принимаемого с сервера |
net_buffer_length | 16384 | Размер буфера для TCP/IP и сокетного соединения |
select_limit | 1000 | Автоматическое ограничение количества команд SELECT при использовании --i-am-a-dummy |
max_join_size | 1000000 | Автоматическое ограничение количества связанных строк при использовании --i-am-a-dummy. |
Если ввести в командной строке help
, программа mysql
выведет список поддерживаемых ею команд:
mysql> help Команды MySQL help (\h) Выводит данный текст. ? (\h) Синоним для help. clear (\c) Команда очистки. connect (\r) Снова подключиться к серверу. Дополнительные аргументы - db и host. edit (\e) Редактировать текущую команду с помощью $EDITOR. ego (\G) Послать текущую команду MySQL серверу и вывести результат по вертикали. exit (\q) Выйти из программы. То же что и quit. go (\g) Послать текущую команду MySQL серверу. nopager (\n) Блокировать пейджер, выводить через stdout. notee (\t) Не добавлять записи в выходной файл outfile. pager (\P) Установить PAGER [to_pager]. Выводить результаты запроса через PAGER. print (\p) Вывести текущую команду. prompt (\R) Изменить формат приглашения на ввод команд mysql. quit (\q) Выйти из программы. rehash (\#) Восстановить таблицу хэшей. source (\.) Запустить на выполнение файл с SQL-сценарием. Указать имя файла в качестве аргумента. status (\s) Получить информацию о статусе сервера. tee (\T) Установить параметр outfile [to_outfile]. Присоединить что-либо к данному выходному файлу. use (\u) Использовать другую базу данных. Указать имя базы данных в качестве аргумента.
Команда pager
работает только под Unix.
Команда status
дает информацию о текущем соединении и используемом сервере. Если вы работаете в режиме --safe-updates
, команда status
также выведет значения переменных для mysql
, которые влияют на ваши запросы.
Для начинающих рекомендуется пользоваться программой mysql
с установленным параметром (введен в MySQL 3.23.11) --safe-updates
(или --i-am-a-dummy
для пользователей, выполнивших DELETE FROM table_name
, но забывших указать аргументы в WHERE
). В этом случае mysql
при установлении соединения посылает следующую команду MySQL-серверу:
SET SQL_SAFE_UPDATES=1,SQL_SELECT_LIMIT=#select_limit#, SQL_MAX_JOIN_SIZE=#max_join_size#"
где #select_limit#
и #max_join_size#
- переменные, которые можно установить из командной строки mysql. See section 5.5.6 Синтаксис команды SET
.
Результат этого следующий:
UPDATE
или DELETE
, если не указаны ограничения по ключам в секции WHERE
. Однако можно заставить выполняться команды UPDATE
/DELETE
, используя оператор LIMIT
:
UPDATE table_name SET not_key_column=# WHERE not_key_column=# LIMIT 1;
#select_limit#
.SELECT
ы, которые могут потребовать для исполнения количество комбинаций строк более, чем #max_join_size#
, будут прерваны.Несколько полезных советов по использованию клиента mysql
:
Некоторые данные более удобочитаемы при выводе их по вертикали вместо обычно используемого горизонтального окна вывода. Например, текст, который больше по длине, чем по ширине, и содержит в себе много новых строк, часто намного легче читать в вертикальном представлении.
mysql> SELECT * FROM mails WHERE LENGTH(txt) < 300 lIMIT 300,1\G *************************** 1. row *************************** msg_nro: 3068 date: 2000-03-01 23:29:50 time_zone: +0200 mail_from: Monty reply: [email protected] mail_to: "Thimble Smith"sbj: UTF-8 txt: >>>>> "Thimble" == Thimble Smith writes: Thimble> Hi. I think this is a good idea. Is anyone familiar with UTF-8 Thimble> or Unicode? Otherwise, I'll put this on my TODO list and see what Thimble> happens. Yes, please do that. Regards, Monty file: inbox-jani-1 hash: 190402944 1 row in set (0.09 sec)
--tee=...
для mysql
или интерактивно из командной строки вводом команды tee
. Все представляемые на экране данные будут также добавлены к заданному файлу. Это может быть очень полезно для целей отладки программы. Утилиту tee можно блокировать из командной строки командой notee
. Повторный запуск команды tee
снова включит журналирование. Если при этом параметр для команды tee
не указан, то будет использоваться предыдущий файл. Следует учесть, что команда tee
будет записывать результаты в файл после каждой выполненной команды, как раз перед появлением командной строки для ввода очередной команды.--pager[=...]
стал возможным просмотр или поиск результатов в интерактивном режиме с помощью Unix-программ less
, more
или иных подобных. Если явно не указать аргумент в этом параметре, клиент mysql
будет искать переменную окружения PAGER
и установит значение pager
. Программу pager
также можно запустить из интерактивной командной строки командой pager
и остановить командой nopager
. Команда может принимать аргумент, который является необязательным; pager
будет установлена в значение этого аргумента.. Команда pager
может быть вызвана и без аргумента, но это требует использования опции --pager
или соответствующей установки по умолчанию стандартного вывода stdout
. Команда pager работает только в Unix, поскольку использует функцию popen()
, отсутствующую в Windows. Вместо этого в Windows можно использовать параметр tee
, хотя в ряде ситуаций это менее удобно, чем применение команды pager
.pager
: Ее можно использовать для записи в файл:
mysql> pager cat > /tmp/log.txtи результаты будут направлены только в файл. Вызываемые командой pager программы могут принимать любые допустимые опции:
mysql> pager less -n -i -SОбратите особое внимание на опцию -S в вышеприведенном примере. Она может быть очень полезна при просмотре результатов. Попробуйте применить ее с горизонтальным выводом (завершайте команды символами '\g', or ';') и с вертикальным (в конце команд - '\G'). Очень громоздкие результаты вывода иногда трудно бывает прочесть с экрана, в этом случае команда less с опцией -S позволит просмотреть результаты в интерактивном режиме слева направо, при этом при появлении строк с длиной больше, чем ширина экрана, их вывод будет продолжен вывод с новой строки. Вывод данных в таких случаях получается более удобочитаемым. При интерактивном вызове команды less с опцией '-S' можно переключать режим ее работы (включено/выключено) из командной строки. Чтобы получить дополнительную информацию относительно less, обращайтесь к описанию команды 'h'.
mysql> pager cat | tee /dr1/tmp/res.txt | \ tee /dr2/tmp/res2.txt | less -n -i -S
tee
и установив pager
в less
, можно просматривать результаты с помощью Unix-команды less
и при этом одновременно производить запись в файл. Разница между служебной Unix-утилитой tee
, используемой в программе pager
, и встроенной в клиент mysql
командой tee
заключается в том, что встроенная команда tee
работает даже в том случае, если в Unix утилита tee
недоступна. Встроенная команда tee
также ведет запись всего, что выводится на экран, тогда как утилита Unix tee
, используемая с pager
, не делает этого в достаточном объеме. Последнее, но тем не менее важное обстоятельство состоит в том, что интерактивная команда tee
более удобна для переключения режимов работы включено/выключено, если при записи в файл иногда возникает необходимость отключить эту функцию.Можно изменить формат приглашения в командной строке клиента mysql
.
Возможны следующие опции приглашения:
Опция | Описание |
\v | версия mysqld |
\d | имя используемой базы данных |
\h | имя хоста, к которому производится подсоединение |
\p | номер порта, через который производится подсоединение |
\u | имя пользователя |
\U | полный адрес username@host |
\\ | обратный слэш `\' |
\n | символ новой строки |
\t | табуляция |
\ | пробел |
\_ | пробел с подчеркиванием |
\R | время по военному часовому поясу (0-23) |
\r | время по стандартному часовому поясу (1-12) |
\m | минуты |
\y | два разряда года |
\Y | четыре разряда года |
\D | полный формат даты |
\s | секунды |
\w | день недели в трехбуквенном формате (Mon, Tue, ...) |
\P | Время до полудня/после полудня (am/pm) |
\o | месяц в числовом формате |
\O | месяц в трехбуквенном формате (Jan, Feb, ...) |
\c | Счетчик, подсчитывающий количество вводимых команд |
Символ `\' за которым следует любая другая буква, просто дополняет эту букву.
Установить параметры приглашения можно следующими способами:
MYSQL_PS1
для строки приглашения. Например:
shell> export MYSQL_PS1="(\u@\h) [\d]> "
mysql
. Например:
[mysql] prompt=(\u@\h) [\d]>\_
--prompt
из командной строки утилиты mysql
. Например:
shell> mysql --prompt="(\u@\h) [\d]> " (user@host) [database]>
prompt
(или \R
) для изменения настроек приглашения в интерактивном режиме. Например:
mysql> prompt (\u@\h) [\d]>\_ PROMPT set to '(\u@\h) [\d]>\_' (user@host) [database]> (user@host) [database]> prompt Возвращение к исходным (по умолчанию) настройкам PROMPT в утилите mysql> mysql>
Add your own comment.