П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 177600 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 74939 раз(а).

Учебник HTML.
Просмотров 73702 раз(а).

Руководство по PHP5.
Просмотров 44607 раз(а).

Хостинг через призму DNS.
Просмотров 51390 раз(а).

Подборка текстов стандартных документов.
Просмотров 44738 раз(а).

Учебник PHP - Самоучитель
Просмотров 50982 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 51420 раз(а).

Внешние атаки...
Просмотров 41640 раз(а).

Учебник PHP.
Просмотров 36926 раз(а).

SSI в примерах.
Просмотров 27650 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Глава 4. Администрирование баз данных
Пред. След.

4.8. Клиентские сценарии и утилиты MySQL
4.8.2. 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 database. Наберите SQL-команду прямо в командной строке, завершив ее одним из символов: ";", '\g' или '\G', и нажмите клавишу "Ввод".

Утилита командной строки mysql поддерживает следующие параметры:

  • -?, --help

    Вывод справочной информации об использовании программы и выход из нее.

  • -A, --no-auto-rehash

    Отключает автоматическое рехеширование. rehash следует использовать для получения хеша таблиц и полей. Это обеспечивает более быстрый старт mysql.

  • --prompt=...

    Устанавливает приглашение на ввод команд в заданном формате.

  • -b, --no-beep

    Выключает звуковой сигнал об ошибке.

  • -B, --batch

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

  • --character-sets-dir=...

    Директория, где находятся наборы символов.

  • -C, --compress

    Использовать сжатие данных в протоколе сервер/клиент.

  • -#, --debug[=...]

    Журнал отладки. Значение по умолчанию - 'd:t:o,/tmp/mysql.trace'.

  • -D, --database=...

    Имя используемой базы данных. Большей частью применяется в конфигурационном файле my.cnf.

  • --default-character-set=...

    Установить набор символов по умолчанию.

  • -e, --execute=...

    Выполнить команду и завершить программу (вывод результата как и для --batch).

  • -E, --vertical

    Вывести результаты запроса (строки) по вертикали. Можно произвести вывод подобным образом и без данного параметра, завершая команды символами \G.

  • -f, --force

    Продолжать обработку даже при обнаружении ошибки SQL.

  • -g, --no-named-commands

    Выключает именованные команды. Следует использовать только команды вида \* либо применять именованные команды только в начале строки, заканчивающейся символом ";". Начиная с версии 10.9 клиент запускается с этой опцией, включенной по умолчанию! С опцией -g, однако, длинные команды все еще работают с первой строки.

  • -G, --enable-named-commands

    Разрешает именованные команды. Допускаются длинные команды, а также укороченные команды вида \*.

  • -i, --ignore-space

    Игнорировать пробел после имен функций.

  • -h, --host=...

    Подсоединиться к базе данных на указанном хосте.

  • -H, --html

    Вывести выходные данные в виде HTML.

  • -X, --xml

    Вывести выходные данные в виде XML.

  • -L, --skip-line-numbers

    Не указывать номера строк для ошибок. Полезно для сравнения результирующих файлов, включающих сообщения об ошибках.

  • --no-pager

    Блокирует пейджер (программа постраничного вывода) и выводит результат в стандартный вывод stdout (в Unix). Смотрите также команду \h (интерактивная помощь).

  • --no-tee

    Блокирует выходной файл. Смотрите также команду \h (интерактивная помощь).

  • -n, --unbuffered

    Очищать буфер после каждого запроса.

  • -N, --skip-column-names

    Не указывать имена столбцов в результатах.

  • -O, --set-variable var=option

    Установить значение переменной. Список используемых переменных выводится через --help. Обратите внимание, что --set-variable не используется в MySQL 4.0. Просто используйте --var=option.

  • -o, --one-database

    Обновить только базу данных, установленную по умолчанию. Позволяет пропускать обновления другой базы данных в журнале обновления.

  • --pager[=...]

    Устанавливает тип данных вывода. По умолчанию это переменная окружения PAGER. Ее возможные значения - less, more, cat [> имя файла], и т.д. См. также команду \h (интерактивная помощь). Этот параметр не работает в пакетном (batch) режиме. Пейджер работает только под Unix.

  • -p[password], --password[=...]

    Пароль, используемый при подсоединении к серверу баз данных. Если в командной строке пароль не указан, то он запрашивается у пользователя. При использовании краткой формы -p не оставляйте пробел между параметром и значением пароля.

  • -P порт, --port=порт

    Номер порта TCP/IP, используемый для подсоединения.

  • --protocol=(TCP | SOCKET | PIPE | MEMORY)

    Для указания протокола соединения, который надлежит использовать. Новшество в MySQL 4.1.0.

  • -q, --quick

    Не кэшировать результат. Выводить его строка за строкой так, как он приходит от сервера. Это может замедлить скорость работы сервера, если вывод результата будет приостановлен. Файл истории не используется.

  • -r, --raw

    Показывать значения столбцов без какого-либо преобразования. Используется с --batch.

  • -s, --silent

    Режим молчания. Выводить только сообщения об ошибках.

  • -S --socket=...

    Файл сокета, используемый для подсоединения.

  • -t --table

    Выводить результат в табличном формате. Установлено по умолчанию для непакетного режима.

  • -T, --debug-info

    Выводить некоторые отладочные данные при выходе из программы.

  • --tee=...

    Присоединить что-либо к выходному файлу. Смотрите также команду \h (интерактивная помощь). Этот параметр не работает в пакетном режиме.

  • -u, --user=#

    Имя пользователя MySQL, если этот пользователь не является активным в данное время.

  • -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 (в MySQL 4.0 используйте просто --var=option) можно также установить следующие переменные:

Имя переменнойПо умолчаниюОписание
connect_timeout0Число секунд до истечения времени ожидания соединения
max_allowed_packet16777216Максимальная величина пакета, посылаемого/принимаемого с сервера
net_buffer_length16384Размер буфера для TCP/IP и сокетного соединения
select_limit1000Автоматическое ограничение количества команд SELECT при использовании --i-am-a-dummy
max_join_size1000000Автоматическое ограничение количества связанных строк при использовании --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 Раздел 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: monty@no.spam.com
mail_to: "Thimble Smith" <tim@no.spam.com>
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. Она может быть запущена с помощью параметра --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'.

  • В заключение отметим (если вы этого еще не поняли из предыдущих примеров :), что существует возможность комбинировать очень сложные способы обработки результатов. Так, в следующем примере результаты будут посланы в два различных каталога, смонтированных на двух различных жестких дисках в /dr1 and /dr2, и, несмотря на это, результаты можно увидеть на экране посредством команды less:

    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 4.0.2 можно изменить формат приглашения в командной строке клиента 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]> "
    
  • my.cnf, .my.cnf

    Можно установить опцию prompt в любом конфигурационном файле MySQL в группе 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>
    

Назад Начало Главы Начало Раздела Вперед

Пред. Глава След. Глава
Глава 3. Учебное пособие по MySQL Начало Книги Глава 5. Оптимизация в MySQL


Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru