Перейти к содержимому

Mysql shell что это

  • автор:

Mysql shell что это

В прошлой теме рассматривался консольный клиент MySQL Command Line Client , с помощью которого можно управлять данными на сервере. Однако в последних версиях MySQL также был добавлен еще один консольный клиент — MySQL Shell . Это более современный, более изощренный консольый клиент, который представляет чуть больше функциональности, чем традиционный MySQL Command Line Client . Посмотрим, как мы можем с ним работать.

Если целевая ОС — Windows, то в меню Пуск в секции MySQL можно найти программу MySQL Shell :

MySQL Shell

Запустим эту программу. MySQL Shell поддерживает ввод команд на трех языках: JavaScript, Python и SQL. Для установки используемого языка применяются следующие команды: \js , \py и \sql . По умолчанию применяется JavaScript. Но поскольку мы будем использовать SQL, то переключимся на этот язык, введя команду \sql

Переключение на SQL в MySQL Shell

Для взаимодействия с сервером MySQL вначале необходимо подключиться к нему. Для этого применяется команда \connect , после которой указывается идентификатор (uri) в формате имя_пользователя@хост:порт . Поскольку в большинстве случае используют локальный сервер MySQL, который запущен на порту 3306, а для сервера mySQL доступен как минимум один пользователь — root , то можно использовать для подключения следующий идентификатор: root@localhost:3306 . Иначе надо поправить либо имя пользователя, либо адрес, либо порт.

Подключение к серверу в MySQL Shell

После ввода этой команды программа предложит ввести пароль для пользователя root. И после удачного подключения можно будет отправлять серверу команды через MySQL Shell.

Для примера проделаем все те же вещи, что производились с MySQL Command Line Client в прошлой теме.

Для начала посмотрим выведем список баз данных, которые есть на сервере. Для этого введем команду

show databases;

Список баз данных в MySQL Shell

Теперь создадим базу данных с помощью следующей команды языка SQL:

create database test2;

Для создания базы данных применяется команда create database , после которой указывается название бд. То есть в данном случае база данных будет называться «test2».

Чтобы обращаться к какой-нибудь определенной базе данных, вначале надо установить нужную базу данных в качестве текущей. Для этого нужно выполнить команду use , после которой указывается название базы данных. Например, для подключения ранее созданной базы данных test введем следующую команду:

use test2;

Затем создадим в этой базе данных таблицу с помощью команды:

create table users (id integer auto_increment primary key, name varchar(30), age integer);

Данная команда создает таблицу users, в которой будет три столбца — id, name и age. id будет хранить уникальный числовой идентификатор пользователя и будет автоматически генерироваться базой данных, name будет хранить имя пользователя, а age — его возраст.

Создание базы данных и таблицы в MySQL Shell

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

insert into users (name, age) values ('Tom', 37);

И в конце получим добавленные данные:

select * from users;

Для чего нужен MySQL Shell на Windows?

Установил на Windows 7 сервер MySQL 8.0. Во время установки есть возможность установить MySQL Shell. Информации о том, что такое Shell и для чего он нужен в сети очень мало. В чем смысл этого Shell? В каких случаях мне без него не обойтись? И где можно почитать об этом поподробнее?

  • Вопрос задан более трёх лет назад
  • 5838 просмотров

Комментировать
Решения вопроса 0
Ответы на вопрос 1
Если не хочешь быть первым — не вставай в очередь!

Информации о том, что такое Shell и для чего он нужен в сети очень мало. В чем смысл этого Shell? В каких случаях мне без него не обойтись? И где можно почитать об этом поподробнее?

Почему же мало? Вот тут написано про него, достаточно подробно: раз и два.

Насколько я понимаю, это «улучшенная» версия обычного консольного MySQL-клиента, обойтись без которого Вы можете совершенно спокойно, если работа в консоли Вам претит или Вы привыкли работать через «оконные» программы (что безусловно удобнее, в ряде случаев). Скорее всего, разница между стандартным MySQL-клиентом (консольным) и этим новым, примерно такая же как между Windows-cmd и Windows PowerShell. И появился он судя по всему, только в MySQL 5.8 (8.0).

Mysql shell что это

Утилита командной строки 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: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. -L, —skip-line-numbers Не указывать номера строк для ошибок. Полезно для сравнения результирующих файлов, включающих сообщения об ошибках. —no-pager Блокирует пейджер (программа постраничного вывода) и выводит результат в стандартный вывод stdout (в Unix). Смотрите также команду \ 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=. Номер порта TCP/IP, используемый для подсоединения. -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 можно также установить следующие переменные:

Имя переменной По умолчанию Описание
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;

Несколько полезных советов по использованию клиента 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" 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
mysql> pager cat | tee /dr1/tmp/res.txt | \ tee /dr2/tmp/res2.txt | less -n -i -S

Можно изменить формат приглашения в командной строке клиента 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>

Mysql shell что это

Все клиенты MySQL, которые связываются с сервером, используя библиотеку mysqlclient , применяет следующие системные переменные:

Имя Описание
MYSQL_UNIX_PORT Сокет по умолчанию. Используется для связи с localhost
MYSQL_TCP_PORT TCP/IP порт по умолчанию
MYSQL_PWD Пароль по умолчанию
MYSQL_DEBUG Опции для трассировки, если используется режим отладки
TMPDIR Каталог для временных файлов и таблиц

Применение MYSQL_PWD опасно. Подробности в разделе «4.2.7 Соединение с сервером MySQL».

Клиент mysql использует файл, именованный в системной переменной MYSQL_HISTFILE , чтобы сохранить хронологию командной строки. Значение по умолчанию для файла хронологии: $HOME/.mysql_history , здесь $HOME представляет собой значение системной переменной HOME . Подробности в разделе «Приложение 2. Переменные окружения «.

Все программы MySQL имеют много различных параметров. Однако, каждая программа MySQL обеспечивает опцию —help , которую Вы можете использовать, чтобы получить полное описание различных параметров программы. Например, mysql —help .

Вы можете отменять заданные по умолчанию параметры для всех стандартных программ пользователя с помощью файла опций. Подробности в разделе «4.1.2 Файл опций my.cnf».

Список ниже кратко описывает программы MySQL:

myisamchk Утилита, чтобы описывать, проверять, оптимизировать и ремонтировать MySQL таблицы. Потому, что myisamchk имеет много функций, он описан в собственной главе. Подробности в разделе «4 Администрирование СУБД MySQL». make_binary_distribution Делает двоичный выпуск из откомпилированного MySQL. Готовая версия может быть выложена по FTP в каталог /pub/mysql/Incoming на машине support.mysql.com для удобства других пользователей MySQL. msql2mysql Скрипт оболочки, который преобразовывает программы mSQL в MySQL. Не обрабатывает все случаи, но дает хорошее начало при преобразовании. mysqlaccess Скрипт, который проверяет привилегии доступа для компьютера, пользователя и комбинации баз данных. mysqladmin Утилита для выполнения административных операций, типа создания или удаления баз данных, перезагрузки таблиц предоставления, сброса таблиц на диск и повторного открытия журналов. Программа mysqladmin может также использоваться, чтобы узнавать версию, данные о процессах и информацию состояния сервера. Подробности в разделе » 4.8.3 mysqladmin, администрирование сервера MySQL». mysqlbug Скрипт для сообщения об ошибках MySQL. Этот скрипт всегда должен использоваться, когда готовится сообщение об ошибке в список рассылки MySQL. mysqld Сервер SQL. Должен всегда работать. mysqldump Сбрасывает базы данных MySQL в файл как инструкции SQL или как отделяемые табуляцией текстовые файлы. Подробности в разделе «4.8.5 mysqldump, Сброс в дамп структур таблицы и ее данных». mysqlimport Импортирует текстовые файлы в соответствующие таблицы, используя LOAD DATA INFILE . Подробности в разделе «4.8.7 mysqlimport, импортирование данных из текстовых файлов». mysqlshow Отображает подробную сводную информацию относительно баз данных, таблиц, столбцов и их индексов. mysql_install_db Создает таблицы предоставления привилегий MySQL с заданными по умолчанию привилегиями. Это обычно выполняется только однажды, при первой установке MySQL на систему. replace Утилита, которая используется msql2mysql , но имеет более общую применимость. replace меняет строки в файлах или на стандартном вводе. Использует специальный алгоритм, чтобы сначала соответствовать более длинным строкам. Может использоваться, чтобы менять строки. Например, эта команда меняет a и b в файлах:

shell> replace a b b a -- file1 file2 .

mysql простая SQL оболочка (с возможностями GNU readline ). Это поддерживает интерактивное и не интерактивное использование. Когда используется в интерактивном режиме, результаты запроса будут представлены в формате 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’ и нажмите RETURN/ENTER.

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

-?, —help Отобразить справку и завершится. -A, —no-auto-rehash Никакого автоматического перехеширования. Каждый должен использовать ‘rehash’, чтобы получить завершение поля и таблицу. Это дает более быстрый запуск клиента mysql. -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 Именованные команды заблокированы. Используйте форму только \*. Можно применять именованные команды только в начале строки, оканчивающейся точкой с запятой (;). Начиная с Version 10.9, клиент теперь запускается с этой опцией по умолчанию! С опцией -g, длинный формат команд, однако, все еще будет работать из первой строки. -G, —enable-named-commands Именованные команды допускаются . Длинный формат команд позволяются также как сокращение команд \*. -i, —ignore-space Игнорировать пробелы после имен функций. -h, —host=. Соединиться с данным компьютером. -H, —html Производить вывод HTML. -L, —skip-line-numbers Не писать номер строки для ошибок. Полезно, когда надо сравнить результирующие файлы с ошибками. —no-pager Отключить pager и выводить наstdout. Подробности в интерактивной справке (\h). —no-tee Отключить outfile. Подробности в интерактивной справке (\h). -n, —unbuffered Сбрасывать буфер после каждого запроса. -N, —skip-column-names Не писать имена столбцов в результатах. -O, —set-variable var=option Задать переменной значение. Список переменных доступен через —help . -o, —one-database Модифицировать только заданную по умолчанию базу данных. Это полезно для пропуска модификаций другой базы данных в файле регистрации модификации. —pager[=. ] Тип вывода. Значение по умолчанию: Ваша переменная окружения PAGER . Допустимые значения: less, more, cat [> filename], etc. Подробности в интерактивной справке (\h). Эта опция не работает в пакетном режиме. Pager работает только в UNIX. -p[password], —password[=. ] Пароль, чтобы использовать при соединении с сервером. Если пароль не задан в командной строке, Вы будете запрошены относительно него. Обратите внимание, что, если Вы используете короткую форму -p , Вы не можете иметь пробелов между этой опцией и паролем. -P —port=. TCP/IP порт, чтобы использовать для подключения. -q, —quick Не кэшировать результат, печатать его строка в строку. Это может замедлять сервер, если вывод приостановлен. Не использует файл хронологии. -r, —raw Писать значения столбца без преобразования управляющих символов. Использован в режиме —batch . -s, —silent Быть более тихим. -S —socket=. Файл сокета, который надо использовать для подключения. -t —table Вывод в формате таблицы. Это задано по умолчанию в не пакетном режиме. -T, —debug-info Печатать информацию отладки при выходе. —tee=. Добавить все в outfile. Не работает в пакетном режиме. -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_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 commands: help (\h) Display this text. ? (\h) Synonym for `help'. clear (\c) Clear command. connect (\r) Reconnect to the server. Optional arguments are db and host. edit (\e) Edit command with $EDITOR. ego (\G) Send command to mysql server, display result vertically. exit (\q) Exit mysql. Same as quit. go (\g) Send command to mysql server. nopager (\n) Disable pager, print to stdout. notee (\t) Don't write into outfile. pager (\P) Set PAGER [to_pager]. Print the query results via PAGER. print (\p) Print current command. quit (\q) Quit mysql. rehash (\#) Rebuild completion hash. source (\.) Execute a SQL script file. Takes a file name as an argument. status (\s) Get status information from the server. tee (\T) Set outfile [to_outfile]. Append everything into given outfile. use (\u) Use another database. Takes database name as argument.

Внимание: pager работает только в UNIX.

Команда status дает Вам некоторую информацию относительно подключения и сервера, который Вы используете. Если Вы работаете в режиме —safe-updates , status будет также печатать значения для переменных mysql , которые воздействуют на Ваши запросы.

Полезная опция запуска для новичков (появилась в MySQL Version 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 . Подробности в разделе «5.5.6 Синтаксис SET «.


    Вам не позволяют давать инструкции UPDATE или DELETE , если Вы не имеете ограничения ключа в части WHERE . Можно, однако, выполнить UPDATE/DELETE , используя слово LIMIT :

UPDATE table_name SET not_key_column=# WHERE not_key_column=# LIMIT 1;

Некоторые полезные советы относительно применения клиента 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" sbj: UTF-8 txt: >>>>> "Thimble" == Thimble Smith writes: Thimble> Hi. I think this is a good idea. Is anyone familiar with Thimble> UTF-8 or Unicode? Otherwise I'll put this on my TODO list Thimble> and see what happens. Yes, please do that. Regards, Monty file: inbox-jani-1 hash: 190402944 1 row in set (0.09 sec)

  • Для регистрации Вы можете использовать опцию tee . Режим tee может быть начат с помощью опции —tee=. или из командной строки в интерактивном режиме с помощью команды tee . Все данные, отображаемые на экране, будут также добавляться в заданный файл. Это может быть очень полезно для отладки. Режим может быть заблокирован из командной строки командой notee . Выполнение tee второй раз снова начинает регистрировать вывод. Без параметра будет использоваться предыдущий файл. Обратите внимание, что tee сбрасывает результаты в файл после каждой команды прежде, чем появляется командная строка.
  • Просмотр или поиск результатов в интерактивном режиме в UNIX с помощью less, more или любой другой подобной программы, является теперь возможным с опцией —pager[=. ] . Без параметра клиент mysql будет искать системную переменную PAGER и соответственно устанавливать свой параметр pager . Этот режим может быть запущен из интерактивной командной строки командой pager и заблокирован командой nopager . Команда факультативно берет параметр, и pager будет установлен в заданное им значение. Команда 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
mysql> pager cat|tee /dr1/tmp/res.txt|tee /dr2/tmp/res2.txt| \ less -n -i -S

Утилита для выполнения административных операций. Синтаксис:

shell> mysqladmin [OPTIONS] command [command-option] command .

Вы можете получить список параметров, которые Ваша версия mysqladmin поддерживает, выполняя mysqladmin —help .

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

create databasename Создать новую базу данных. drop databasename Удалить базу данных и все таблицы. extended-status Дает расширенное сообщение состояния сервера. flush-hosts Сбрасывает все кэшируемые хосты. flush-logs Сбрасывает все протоколы. flush-tables Сбрасывает все таблицы на диск. flush-privileges Перезагружает таблицы предоставления привилегий (то же, что и reload). kill id,id. Уничтожает поток mysql. password Устанавливает новый пароль. Изменяет старый пароль на новый. ping Проверяет, является ли mysqld действующим. processlist Показывает список активных потоков сервера. reload Перезагружает таблицы предоставления привилегий refresh Сбрасывает на диск все таблицы и открытые файлы протоколов. shutdown Завершает работу сервера. slave-start Запускает подчиненный процесс репликации. slave-stop Завершает подчиненный процесс репликации. status Дает короткое сообщение состояния сервера. variables Печатает доступные переменные. version Выдает краткую информацию о версии сервера.

Все команды могут быть сокращены к их уникальному префиксу. Например:

shell> mysqladmin proc stat +----+-------+-----------+----+-------------+------+-------+------+ | Id | User | Host | db | Command | Time | State | Info | +----+-------+-----------+----+-------------+------+-------+------+ | 6 | monty | localhost | | Processlist | 0 | | | +----+-------+-----------+----+-------------+------+-------+------+ Uptime: 10077 Threads: 1 Questions: 9 Slow queries: 0 Opens: 6 Flush tables: 1 Open tables: 2 Memory in use: 1092K Max memory used: 1116K

Результат команды mysqladmin status имеет следующие столбцы:

UptimeЧисло секунд, которые прошли с момента запуска сервера
ThreadsЧисло активных потоков (клиентов)
QuestionsЧисло запросов от клиентуры с тех пор, как mysqld был запущен.
Slow queriesЗапросы, которые заняли больше, чем long_query_time секунд. Подробности в разделе «4.9.5 Медленный файл регистрации».
OpensСколько таблиц открылись в mysqld .
Flush tablesСколько выполнено команд flush . , refresh и reload .
Open tablesЧисло таблиц, которые открыты СЕЙЧАС.
Memory in useПамять, распределенная непосредственно кодом mysqld (доступно только, когда MySQL компилируется с опцией —with-debug=full).
Max memory usedМаксимальная память, распределенная непосредственно кодом mysqld (доступно только, когда MySQL компилируется с опцией —with-debug=full).

Если Вы делаете myslqadmin shutdown на сокете (другими словами, на компьютере, где запущен mysqld ), mysqladmin будет ждать, пока не будет удален MySQL pid-file , чтобы гарантировать, что сервер mysqld был завершен правильно.

Начиная с MySQL version 3.23.38, Вы можете использовать новый инструмент для проверки и ремонта таблиц MyISAM . Отличие от myisamchk в том, что mysqlcheck должен использоваться, когда сервер mysqld работает, а myisamchk работает только, когда сервер выключен.

mysqlcheck использует команды сервера MySQL CHECK , REPAIR , ANALYZE и OPTIMIZE удобным для пользователя способом.

Имеются три альтернативных способа вызвать mysqlcheck :

shell> mysqlcheck [OPTIONS] database [tables] shell> mysqlcheck [OPTIONS] --databases DB1 [DB2 DB3. ] shell> mysqlcheck [OPTIONS] --all-databases

mysqlcheck имеет специальное свойство, сравнимое с другой клиентурой: заданное по умолчанию поведение при проверке таблиц (-c) может быть изменено переименованием. Так, если Вы хотите иметь инструмент для ремонта таблиц по умолчанию, Вы должны только скопировать mysqlcheck под именем mysqlrepair или создать символическую связь mysqlrepair .

Имена, которые Вы можете использовать, чтобы изменить заданное по умолчанию поведение mysqlcheck :

mysqlrepair: По умолчанию опция -r mysqlanalyze: По умолчанию опция -a mysqloptimize: По умолчанию опция -o

Параметры, доступные для mysqlcheck , перечислены здесь, пожалуйста, проверьте, что Ваша версия поддерживает вызов mysqlcheck —help .

-A, —all-databases Проверить все базы данных. Это будет то же самое, что и —databases с выбором всех баз данных. -1, —all-in-1 Вместо того, чтобы делать один запрос для каждой таблицы, выполнить все запросы в одном запросе отдельно для каждой базы данных. Имена таблиц будут переданы в списке через запятую. -a, —analyze Анализировать данные таблицы. —auto-repair Если проверяемая таблица разрушена, автоматически исправить ее. Восстановление будет выполнено после того, как все таблицы проверятся. -#, —debug=. Файл регистрации отладки. Часто это ‘d:t:o,filename’. —character-sets-dir=. Каталог, где искать наборы символов. -c, —check Проверить таблицу на ошибки. -C, —check-only-changed Проверить только те таблицы, которые изменились с последней проверки или не были закрыты правильно. —compress Использовать сжатие в протоколе клиент-сервер. -?, —help Отобразить сообщение справки. -B, —databases Проверять несколько баз данных. Обратите внимание на различие в использовании: в этом случае никакие таблицы не даны. Все параметры будут расценены как имена баз данных. —default-character-set=. Заданный по умолчанию набор символов. -F, —fast Проверить только те таблицы, которые не были закрыты правильно. -f, —force Продолжить, даже если мы получаем sql-ошибку. -e, —extended Если Вы используете эту опцию с CHECK TABLE, это гарантирует, что таблица на 100% непротиворечива, но займет длительное время. Если Вы используете эту опцию с REPAIR TABLE, она выполнит расширенный ремонт таблицы, который может занять немало времени и породить много строк мусора в таблице! -h, —host=. Связаться с указанным хостом. -m, —medium-check Быстрее, чем extended-check, но находит только 99.99% всех ошибок. Режим должен быть достаточно хорошим для большинства случаев. -o, —optimize Оптимизировать таблицу. -p, —password[=. ] Пароль, чтобы использовать при соединении с сервером. Если пароль не задан, он будет запрошен. -P, —port=. Номер порта, который надлежит использовать для подключения. -q, —quick Если Вы используете эту опцию с CHECK TABLE, это не дает просматривать строки, чтобы проверить неправильные связи. Это самая быстрая проверка. Если Вы используете эту опцию с REPAIR TABLE, ремонту будет подвергнуто только индексное дерево. Это самый быстрый метод ремонта для таблицы. -r, —repair Может выправить почти все, что угодно, за исключением уникальных ключей, которые стали не уникальными. -s, —silent Выводить только сообщения об ошибках. -S, —socket=. Файл сокета, который надо использовать для подключения. —tables Отменяет опцию —databases (-B). -u, —user=# Пользователь для входа в систему, если не текущий пользователь. -v, —verbose Печатать информацию относительно различных стадий. -V, —version Вывести информацию о версии.

Утилита позволяет сбросить в дамп одну или несколько баз данных для резервирования или транспортировки на другой сервер SQL (необязательно MySQL). Дамп будет содержать инструкции SQL, чтобы создать и заполнять таблицу данными.

Если Вы делаете копию на сервер, Вы должны рассмотреть использование вместо этой утилиты mysqlhotcopy . Подробности в разделе «4.8.6 mysqlhotcopy, копирование баз данных и таблиц MySQL».

shell> mysqldump [OPTIONS] database [tables] mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3. ] mysqldump [OPTIONS] --all-databases [OPTIONS]

Если Вы не задаете таблицы или используете —databases или —all-databases , целая база данных будет сброшена в дамп.

Вы можете получить список параметров, которые поддерживает Ваша версия mysqldump , выполняя mysqldump —help .

Обратите внимание, что, если Вы выполняете mysqldump без опций —quick или —opt , mysqldump загрузит целый набор результатов в память перед дампингом. Это будет, вероятно, проблемой, если Вы обрабатываете большую базу данных.

Обратите внимание, что, если Вы используете новую копию программы mysqldump и собираетесь делать дамп, который будет читаться очень старым сервером MySQL, Вы не должны использовать параметры —opt или -e .

mysqldump поддерживает следующие параметры:

—add-locks Добавить LOCK TABLES перед и UNLOCK TABLE после каждого дампа таблицы, чтобы получить быстрые вставки в MySQL. —add-drop-table Добавить drop table перед каждой инстукцией создания. -A, —all-databases Дамп всех баз данных. Это будет то же самое, что и —databases со всеми выбранными базами данных. -a, —all Включить все MySQL-специфичные параметры create. —allow-keywords Позволить создание имен столбцов, которые являются ключевыми словами. Это реализовано путем приписывания имен столбцов к имени таблицы. -c, —complete-insert Использовать полный формат инструкций вставки (с именами столбца). -C, —compress Сжимать всю информацию, передаваемую между клиентом и сервером, если они оба поддерживают сжатие. -B, —databases Сбросить в дамп несколько баз данных. Обратите внимание на различие в использовании. В этом случае никакие таблицы не могут быть заданы. Все параметры имени будут расценены как имена базы данных. USE db_name; будет включен в вывод перед каждой новой базой данных. —delayed Вставлять строки командой INSERT DELAYED . -e, —extended-insert Использовать новый синтаксис INSERT . Дает более компактные и быстрые инструкции вставок. -#, —debug[=option_string] Использовать трассировку (для отладки). —help Отобразить справку о параметрах. —fields-terminated-by=. —fields-enclosed-by=. —fields-optionally-enclosed-by=. —fields-escaped-by=. —lines-terminated-by=. Эти параметры используются с опцией -T и имеют то же самое значение, что и соответствующие предложения для LOAD DATA INFILE . -F, —flush-logs Сбросить файл протокола сервера MySQL на диск перед стартом дампа. -f, —force, Продолжать, даже если мы получаем SQL ошибку в течение дампа таблицы. -h, —host=. Сбросить данные в дамп с сервера MySQL на указанном хосте. Заданный по умолчанию хост: localhost . -l, —lock-tables Блокировать все таблицы перед стартом дампа. Таблицы будут заблокированы с опцией READ LOCAL , чтобы позволить параллельные вставки в случае таблиц MyISAM . -n, —no-create-db Запись ‘CREATE DATABASE /*!32312 IF NOT EXISTS*/ db_name;’ не будет помещена в вывод. Вышеупомянутая строка будет добавлена иначе, если была дана опция —databases или —all-databases. -t, —no-create-info Не писать информацию для создания таблицы (инструкция CREATE TABLE ). -d, —no-data Не писать любую информацию строк для таблицы. Это очень полезно, если Вы хотите получить только дамп структуры для таблицы! —opt То же самое, что и задать —quick —add-drop-table —add-locks —extended-insert —lock-tables . Опция должна дать Вам самый быстрый возможный дамп для чтения на сервере MySQL. -pyour_pass, —password[=your_pass] Пароль, чтобы использовать при соединении с сервером. Если Вы не определяете никакой части `=your_pass’ , Вы будете запрошены относительно ввода пароля. -P port_num, —port=port_num TCP/IP порт, чтобы использовать для соединения с удаленным компьютером. Это используется для подключений к системам, отличным от localhost , там применяются Unix-сокеты. -q, —quick Не буферизовать запрос, дамп непосредственно направляется на stdout. Для этого используется вызов mysql_use_result() . -r, —result-file=. Прямой вывод в заданный файл. Эта опция должна использоваться в MSDOS, поскольку не превращает ‘\n’ в ‘\n\r’. -S /path/to/socket, —socket=/path/to/socket Файл сокета, чтобы использовать при соединении с localhost . Он является заданным по умолчанию компьютером. —tables Отменяет опцию —databases (-B). -T, —tab=path-to-some-directory Создает файл table_name.sql , который содержит команды SQL CREATE, и файл table_name.txt , который содержит данные для каждой указанной таблицы. ОБРАТИТЕ ВНИМАНИЕ : Это работает только, если mysqldump выполнен на той же самой машине, что и сервер mysqld . Формат файла .txt соответствует опциям —fields-xxx и —lines—xxx . -u user_name, —user=user_name Пользователь MySQL, чтобы применить при соединении с сервером. Значение по умолчанию: Ваше Unix-имя входа в систему. -O var=option, —set-variable var=option Установить значение переменной. Возможные переменные перечислены ниже. -v, —verbose Подробный режим. Распечатать большее количество информации относительно того, что делает программа. -V, —version Вывести информацию о версии. -w, —where=’where-condition’ Дамп только выбранных записей. Обратите внимание, что КАВЫЧКИ обязательны:

"--where=user='jimf'" "-wuserid>1" "-wuserid

-O net_buffer_length=#, where # < 16M При создании мультистрочных инструкций (как с опцией --extended-insert или --opt ), mysqldump создаст строки длины до net_buffer_length . Если Вы увеличиваете эту переменную, Вы должны также гарантировать, что переменная max_allowed_packet в сервере MySQL больше, чем net_buffer_length .

Наиболее нормальное использование mysqldump : создание копий целых баз данных. Подробности в разделе "4.4.1 Резервирование баз данных":

mysqldump --opt database > backup-file.sql

Вы можете прочитать этот файл обратно в MySQL:

mysql database < backup-file.sql

Добавить комментарий

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