mysql параметры командной строки
Параметры командной строки mysqld
В большинстве случаев управление параметрами mysqld осуществляется при помощи файлов параметров (Файлы параметров my.cnf).
Использовать синтаксис ANSI SQL вместо синтаксиса MySQL (Запуск MySQL в режиме ANSI).
Путь к каталогу установки. Все остальные пути обычно определяются относительно этого пути.
Позволяет использовать наборы результатов большого объема за счет сохранения всех временных файлов в одном. Данный параметр позволяет устранить большинство ошибок ‘table full’ (таблица переполнена), но замедляет обработку запросов, для которых было бы достаточно таблиц, расположенных в памяти. Начиная с версии 3.23.2 в MySQL эта проблема решается автоматически: память используется для небольших временных таблиц, а при необходимости происходит переключение на таблицы, расположенные на диске.
IP-адрес, с которым необходимо установить связь.
Путь к корневому каталогу базы данных.
Задает тип таблиц, принятый по умолчанию (Типы таблиц MySQL).
—delay-key-write[= OFF | ON | ALL]
Указывает, как на MyISAM DELAYED KEYS должен обрабатываться. Настройка параметров сервера.
Отмена сброса на диск ключевых буферов для всех таблиц MyISAM между записями. Настройка параметров сервера.
Включает блокировку доступа к системе. Обратите внимание на то, что если этот параметр используется в системе, где функция lockd полностью не работает (например, в Linux), это может привести к зависанию mysqld.
Включает поддержку для именованных каналов (только в NT/Win2000/XP).
Побитовое маскирование различных флагов, которое применяется для отладки сервера mysqld; не следует использовать этот параметр, если вы хорошо не разбираетесь в том, что именно он делает!
Задает сброс на диск всех изменений после каждой команды SQL. Обычно MySQL только направляет все изменения на диск после каждой команды SQL, делегируя управление синхронизацией записи на диск операционной системе (Что делать, если работа MySQL сопровождается постоянными сбоями).
Вывод сокращенной справки и завершение выполнения.
Задает считывание команды SQL из файла file при запуске.
Вывод сообщений об ошибках клиента на указанном языке. Может быть задан в виде полного пути (Сообщения об ошибках на языках, отличных от английского).
Задает занесение в файл журнала соединений и запросов (Общий журнал запросов).
Двоичный журнал обновлений. Сохранение всех запросов, изменяющих данные, в файл. Используется для архивного копирования и репликации. Бинарный журнал обновлений.
Имя индексного файла для двоичного журнала обновлений. Бинарный журнал обновлений.
Писать ошибки и сообщения в этот файл. Журнал ошибок.
Заносит в файл журнала все изменения ISAM / MyISAM (используется только при отладке ISAM / MyISAM ).
Заносит в файл журнала все запросы, выполнение которых заняло больше, чем long_query_time секунд (Журнал медленных запросов).
Заносит в файл журнала обновления file.# где # представляет собой уникальный номер, если он не был задан (Журнал обновлений (update)).
Номер порта для прослушивания соединений TCP/IP.
Использовать протокол 3.20 для совместимости с некоторыми очень старыми клиентами ().
Использовать только один поток (для отладки в системе Linux) (Отладка сервера MySQL).
Когда переменная будет устанавливаться в какое-либо значение, MySQL автоматически будет корректировать его, чтобы оно оставалось в указананных рамках; также MySQL может немного корректировать установленное значение с тем, чтобы эффективнее использовались внутренние алгоритмы.
Раздел по настройке параметров сервера включает информацию по их оптимизации (Настройка параметров сервера).
Пропуск некоторых этапов оптимизации.
При использовании этого параметра команда SHOW DATABASES выдает только те базы данных, для которых у пользователя есть какие-либо привилегии. Начиная с версии 4.0.2 этот параметр является недействительным и больше ни на что не влияет (его значение установлено по умолчанию), так как в новой версии появилась привилегия SHOW DATABASES (Синтаксис команд GRANT и REVOKE).
Запретить использование таблиц BDB. Это сэкономит память и может ускорить работу.
Отключает возможность одновременного выбора и вставки данных для таблиц MyISAM (используется только в том случае, если в этой функции найдена ошибка).
Игнорирует параметр DELAY_KEY_WRITE для всех таблиц (Настройка параметров сервера).
Никогда не использовать кэш имени главного компьютера для быстрого разрешения соответствий имен и IP-адресов, а вместо этого всегда запрашивать DNS-сервер по каждому соединению (Как MySQL использует DNS).
Запретить использование таблиц InnoDB. Это сэкономит память и может ускорить работу.
Не производится разрешения имен хостов. Все значения в столбце Host в таблицах привилегий должны быть IP-адресами или значениями localhost (Как MySQL использует DNS).
Прослушивание соединений TCP/IP не производится. Связь с mysqld должна осуществляться через сокеты Unix. Этот параметр рекомендуется для систем, в которых разрешены только локальные запросы (Как MySQL использует DNS).
Не использовать новые (возможно, неправильные) операции.
Не удалять и не переименовывать файлы, на которые указывает файл symlinked в каталоге данных.
Не записывать трассировку стеков. Этот параметр может оказаться полезным, когда mysqld запущен под отладчиком. В некоторых системах данный параметр также необходимо использовать для получения файла ядра (Отладка сервера MySQL).
Отключает использование приоритетов потока, чтобы уменьшить время ожидания ответа.
При указании данного параметра для создаваемых временных файлов будет использоваться ограниченный набор имен вместо создания уникального имени для каждого нового файла. Данная функция предназначена для устранения проблемы ядра Linux, возникающей при создании большого количества новых файлов с разными именами. По старой схеме в Linux как бы происходит ‘утечка’ памяти, так как она распределяется для кэша каталогов вместо дискового кэша.
REPEATABLE-READ | SERIALIZABLE > Задает принятый по умолчанию уровень изоляции транзакции (Синтаксис команды SET TRANSACTION).
Запуск демона mysqld от имени пользователя user_name или userid (число). Этот параметр является обязательным при запуске mysqld в качестве главной программы.
Начиная с MySQL 3.23.56 и 4.0.12:
Вывод информации по версии программы и завершение выполнения.
Записки IT специалиста
Технический блог специалистов ООО»Интерфейс»
Основы администрирования MySQL при помощи командной строки
Как могли заметить наши постоянные читатели, мы последовательно выступаем против применения начинающими разного рода панелей управления, какими бы удобными и распространенными они не были. В тоже время мы не отрицаем их существование и сами с удовольствием используем в повседневной деятельности.
Но есть одно большое отличие: специалист, умеющий работать с командной строкой, используя панель, не заменяет ей умение работать с продуктом, а только облегчает себе выполнение повседневных задач. А новичок, привыкший совершать все действия в панели, в случае ее недоступности впадает в тихую панику, ведь теперь нужно вводить какие-то «заклинания» в эту непонятную черную консоль.
На самом деле работать с СУБД на уровне командной строки совсем несложно, а часть задач по администрированию проще и удобнее выполнять именно в ней. Сразу оговоримся, под администрированием мы подразумеваем именно администрирование сервера СУБД, а не самих баз данных. С ними, конечно, тоже можно работать из командной строки, но лучше использовать для этого более подходящие инструменты.
Управление базами данных и пользователями в MySQL
Работа в данной среде имеет свои особенности: каждая команда должна завершаться символом ; или \g, о чем, кстати, написано в первой строке приветствия. Выход из данного режима осуществляется командой:
Сразу об одной очень распространенной ошибке: забыли поставить точку с запятой в конце команды. Что делать? Ничего страшного, просто добейте недостающие символы в следующей строке.
Для начала посмотрим список баз:
Как говорится, без лишних подробностей, но для большинства административных задач этого достаточно:
Узнать список пользователей немного сложнее, он хранится в виде таблицы служебной базы mysql, поэтому пишем небольшой запрос:
Команда select выбирает указанные колонки user, host, опция from указывает откуда мы их выбираем, а именно из таблицы user базы данных mysql.
Посмотреть владельцев баз можно следующим запросом:
Особых комментариев здесь не требуется. Например, ivanov имеет права на базы с префиксом ivanov_ при подключении через localhost, а andrey на базы с префиксом andrey_ на любом хосте. Посмотреть привилегии пользователя можно командой:
Имя пользователя и хост оборачиваем одинарными кавычками.
Первая строка сообщает, что у указанного пользователя отсутствуют привилегии (USAGE) на любую таблицу любой базы (*.*), вторая строка говорит о всех основных привилегиях для всех таблиц всех баз с префиксом ivanov_.
Подробный разбор системы прав MySQL выходит далеко за пределы данной статьи, скажем только что ALL PRIVELEGES дает пользователь все права на свои базы, но не позволяет управлять правами доступа для других пользователей. Для этого используется набор прав ALL PRIVELEGES WITH GRANT OPTION, который имеет по умолчанию root. Для простого пользователя такой набор прав избыточен.
Попробуем создать нового пользователя:
Синтаксис команды прост, мы указываем имя пользователя и хост, а также идентификационные данные в виде пароля. Все передаваемые значения оборачиваются в одинарные кавычки. Создав пользователя нужно задать ему права, это делается командой GRANT. Сначала явно лишим его привилегий на чужие базы:
Затем можем выставлять права по своему усмотрению, например, выдача полных прав на базы с шаблоном имени petrov_:
Обратите внимание, что шаблон следует обернуть символами грависа (`), которые расположены на клавише с русской буквой Ё.
Выдать права на отдельную базу можно так:
Для отбора прав служит команда REVOKE, которая имеет аналогичный синтаксис, только to (кому), заменяем на from (у кого). Например:
Для того чтобы MySQL сервер применил права следует заставить его перезагрузить кэш привилегий командой:
Также вам может понадобиться сменить пароль пользователя:
Переименовать его, причем переименование не обязательно обозначает смену именно имени пользователя, можно изменить как имя, так и хост, в любых комбинациях:
Ну и наконец удалить учетную запись:
Перейдем от пользователей к базам данных, в простейшем случае для создания новой базы достаточно команды:
Это создаст базу данных с кодовой страницей и кодировкой сравнения по умолчанию. Если сервер СУБД отдельно не настраивался, то такой кодировкой скорее всего будет latin1_swedish_ci, что в ряде случаев может вызвать проблемы, если не сейчас, то в дальнейшем, поэтому правилом хорошего тона будет явно указывать кодировку при создании базы. Для UTF-8 это будет так:
Для удаления базы используйте:
Проверка, оптимизация, исправление ошибок баз данных MySQL
По мере активной работы MySQL базы могут фрагментироваться, а также содержать ошибки в данных таблиц. Мы не говорим сейчас о серьезных сбоях, такие ситуации следует рассматривать индивидуально, а о простейших ошибках, которые успешно устраняются средствами самой СУБД. Для проверки, ремонта и оптимизации удобно использовать утилиту mysqlcheck.
Сразу все базы можно проверить командой :
А так как весь вывод на экран скорее всего не поместится, то есть смысл перенаправить его команде less:
Обратите внимание, что less позволяет прокручивать вывод как вниз, так и вверх, используя стрелки, для выхода нажмите q.
Если в какой-либо из баз были обнаружены ошибки стоит попытаться их исправить, для этого укажите:
Выгрузка и загрузка дампов БД MySQL
А если дело касается больших баз, то тут phpMyAdmin плохой помощник, сказываются ограничения на время исполнения скриптов, размер загружаемого файла, доступную память и т.д. И если выгрузить большой дамп с его помощью еще можно, то вот загрузить обратно может и не получиться.
Начнем с создания дампов, для этих целей используется утилита mysqldump, синтаксис которой повторяет синтаксис mysqlcheck. Для выгрузки дампа используйте команду:
Чтобы выгрузить сразу несколько баз используйте ключ —databases или —all-databases для создания дампа сразу всех баз. Вывод команды следует направить в файл и указать его расположение, в нашем случае это файл drupal8.sql в домашней директории. Также можно передать вывод по конвейеру архиватору и получить сразу архив:
В целом мы не советуем использовать один дамп сразу для нескольких баз, лучшим вариантом будет свой дамп для каждой базы, в тоже время использование ключа —all-databases оправдано в случаях, когда вам надо быстро сделать резервную копию всего сервера, например, при обновлении или переустановке СУБД, чтобы можно было быстро восстановить информацию если что-то пойдет не так.
Для того чтобы восстановить базу нужно направить дамп на вход утилиты mysql, для одиночных дампов всегда следует указывать базу приемник, например:
В качестве приемника вовсе не обязательно должна выступать база источник, но учтите, что если база уже существует, все ее содержимое будет заменено содержимым дампа.
Для дампов, содержащих более одной базы просто укажите:
В этом случае каждая база будет загружена в свой источник, если база источник не существует, то она будет создана.
Как видим, создание и восстановление дампов при помощи командной строки происходит буквально в одну строку и гораздо проще, и быстрее, чем с использованием phpMyAdmin или подобных ему инструментов.
Восстановление забытого пароля root MySQL
Еще одна очень популярная задача. Скажем сразу, восстановить пароль суперпользователя MySQL, как и любого другого пользователя, нельзя, но можно его сменить. Для этого нужно обладать правами суперпользователя операционной системы. Сначала остановим службу СУБД:
Затем запускаем ее в безопасном режиме с пропуском таблиц привилегий:
Обратите внимание, что после выполнения данной команды приглашение командной строки пропадет, останется один мигающий курсор. Пишем прямо туда:
и попадаем в среду mysql с правами root без ввода пароля.
Нам кажется, что многие уже догадались, что делать дальше, однако выполнить set password в данном режиме не получится, поэтому надо идти другим путем. Вспоминаем, что информация о пользователях хранится в таблице user служебной БД mysql. После чего выполним следующий запрос:
Важно! В новых версиях MySQL вместо колонки password таблицы user используется колонка authentication_string, поэтому вместо set password следует указывать set authentication_string.
Данный запрос установит новый пароль newpassword для всех строк в колонке user которых значится root.
Обновим кэш привилегий:
Остановим службу и запустим в обычном режиме:
Надеемся, что после прочтения данной статьи вы приобретете начальные навыки работы с MySQL из командной строки и сможете уверенно себя чувствовать даже тогда, когда phpMyAdmin недоступен, а может быть даже оцените удобство консольных команд и будете все реже заходить в панель, предпочитая управлять сервером напрямую.
Дополнительные материалы:
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
Или подпишись на наш Телеграм-канал:
Mysql параметры командной строки
Утилита командной строки mysql является простой SQL-оболочкой (с возможностями библиотеки readline проекта GNU). Она поддерживает интерактивный и неинтерактивный режимы. В интерактивном режиме результаты запроса представляются в ASCII-формате. При использовании в неинтерактивном режиме (например, в качестве фильтра) результат представляется в текстовом формате с символом табуляции в качестве разделителя (выходной формат можно изменить при помощи параметров командной строки). Сценарии можно запускать, как показано ниже:
Утилита командной строки mysql поддерживает следующие параметры:
Вывод справочной информации об использовании программы и выход из нее.
Устанавливает приглашение на ввод команд в заданном формате.
Выключает звуковой сигнал об ошибке.
Выводит результаты в пакетном режиме с символом табуляции в качестве разделителя, каждая строка с новой строки. Файл истории не используется.
Директория, где находятся наборы символов.
Использовать сжатие данных в протоколе сервер/клиент.
Установить набор символов по умолчанию.
Продолжать обработку даже при обнаружении ошибки SQL.
Разрешает именованные команды. Допускаются длинные команды, а также укороченные команды вида \*.
Игнорировать пробел после имен функций.
Подсоединиться к базе данных на указанном хосте.
Вывести выходные данные в виде HTML.
Вывести выходные данные в виде XML.
Не указывать номера строк для ошибок. Полезно для сравнения результирующих файлов, включающих сообщения об ошибках.
Блокирует пейджер (программа постраничного вывода) и выводит результат в стандартный вывод stdout (в Unix). Смотрите также команду \h (интерактивная помощь).
Блокирует выходной файл. Смотрите также команду \h (интерактивная помощь).
Очищать буфер после каждого запроса.
Не указывать имена столбцов в результатах.
Обновить только базу данных, установленную по умолчанию. Позволяет пропускать обновления другой базы данных в журнале обновления.
Номер порта TCP/IP, используемый для подсоединения.
—protocol=(TCP | SOCKET | PIPE | MEMORY)
Для указания протокола соединения, который надлежит использовать. Новшество в MySQL 4.1.0.
Не кэшировать результат. Выводить его строка за строкой так, как он приходит от сервера. Это может замедлить скорость работы сервера, если вывод результата будет приостановлен. Файл истории не используется.
Режим молчания. Выводить только сообщения об ошибках.
Файл сокета, используемый для подсоединения.
Выводить результат в табличном формате. Установлено по умолчанию для непакетного режима.
Выводить некоторые отладочные данные при выходе из программы.
Присоединить что-либо к выходному файлу. Смотрите также команду \h (интерактивная помощь). Этот параметр не работает в пакетном режиме.
Имя пользователя MySQL, если этот пользователь не является активным в данное время.
Вывод информации о версии и выход из программы.
Если соединение с сервером упало, подождать и попытаться восстановить его, вместо того, чтобы прервать работу.
Команда pager работает только под Unix.
Результат этого следующий:
Несколько полезных советов по использованию клиента mysql :
Некоторые данные более удобочитаемы при выводе их по вертикали вместо обычно используемого горизонтального окна вывода. Например, текст, который больше по длине, чем по ширине, и содержит в себе много новых строк, часто намного легче читать в вертикальном представлении.
Несколько советов касательно команды pager :
Ее можно использовать для записи в файл:
и результаты будут направлены только в файл. Вызываемые командой pager программы могут принимать любые допустимые опции:
В заключение отметим (если вы этого еще не поняли из предыдущих примеров :), что существует возможность комбинировать очень сложные способы обработки результатов. Так, в следующем примере результаты будут посланы в два различных каталога, смонтированных на двух различных жестких дисках в /dr1 and /dr2, и, несмотря на это, результаты можно увидеть на экране посредством команды less:
Возможны следующие опции приглашения:
Символ ‘ \ ‘ за которым следует любая другая буква, просто дополняет эту букву.
Установить параметры приглашения можно следующими способами:
В переменных окружения
Можно установить переменную окружения MYSQL_PS1 для строки приглашения. Например:
В командной строке
В интерактивном режиме
Можно также использовать команду prompt (или \R ) для изменения настроек приглашения в интерактивном режиме. Например:
Mysql параметры командной строки
Программа mysqld понимает параметры командной строки:
MySQL может, начиная с версии 3.22, читать заданные по умолчанию параметры запуска для клиентов и сервера из файлов опций.
MySQL читает заданные по умолчанию параметры из следующих файлов (в Unix):
/.my.cnf
MySQL читает заданные по умолчанию параметры из следующих файлов (только в ОС Windows):
Имя файла | Зачем он нужен |
windows-system-directory\my.ini | Глобальные опции |
C:\my.cnf | Глобальные опции |
C:\mysql\data\my.cnf | Опции для сервера |
MySQL пробует читать файлы опции в порядке, перечисленном выше. Если есть несколько файлов настроек, используется опция, определенная в том файле, который читается позже. Параметры, определенные в командной строке имеют приоритет над параметрами, определенными в любом файле опций. Некоторые параметры могут быть определены, используя системные переменные. Параметры, определенные в командной строке или в файлах опций имеют приоритет над значением соответствующей системной переменной.
Файл опций может содержать строки следующих форм:
Группа client позволяет Вам определять параметры, которые обращаются ко всей клиентуре MySQL (но не к mysqld ). Это самая подходящая группа, чтобы определить в ней пароль, который Вы используете, чтобы соединиться с сервером. Но удостоверьтесь, что файл опций читаем и перезаписываем только Вами.
Имеется типичный глобальный файл опций:
Имеется типичный файл опций пользователя:
Вся клиентура MySQL, которая поддерживает файлы опций, использует и следующие параметры:
—no-defaults | Не читать любые файлы опций. |
—print-defaults | Печатать имя программы и все параметры, которые ей передаются. |
—defaults-file=full-path-to-default-file | Использовать только данный файл конфигурации. |
—defaults-extra-file=full-path-to-default-file | Читать этот файл конфигурации после глобального файла опций, но перед чтением файла настроек пользователя. |
Вышеупомянутый вывод содержит все параметры для групп ‘client’ и ‘mysql’.
Один способ получить новый сервер: запустить его с другим сокетом и портом следующим образом:
Если Вы должны делать это более постоянно, Вы должны создать файл опций для каждого сервера. Подробности в разделе «4.1.2 Файлы опций my.cnf». В Вашем скрипте запуска, который будет выполнен при начальной загрузке (mysql.server?), Вы должны определить для обоих серверов:
По крайней мере следующие параметры должны быть различны на серверах:
port=# socket=path pid-file=path
Следующие параметры должны быть различны, если они используются:
log=path log-bin=path log-update=path log-isam=path bdb-logdir=path
Если Вы хотите получить большую эффективность, Вы можете также определять:
Имеются обстоятельства, когда Вы могли бы хотеть выполнять много серверов на одной и той же машине. Например, Вы могли бы проверять новый выпуск MySQL при оставлении Вашей существующей безмятежной установки в рабочем состоянии.
Если Вы хотите выполнять много серверов, самый простой путь состоит в том, чтобы компилировать их с различными портами TCP/IP и файлами сокетов так, что они оба не слушают тот же самый порт TCP/IP или файл сокета.
Предположим, что существующий сервер конфигурирован для заданного по умолчанию номера порта и файла сокета. Теперь конфигурируйте новый сервер командой выбора конфигурации configure :
Вы можете проверять сокет, используемый любым в настоящее время выполняющимся сервером MySQL, командой:
Обратите внимание, что, если Вы определяете localhost как имя хоста по умолчанию, mysqladmin будет использовать Unix-сокеты вместо протокола TCP/IP.
Если Вы имеете сервер MySQL, работающий на уже занятом порте, Вы получите список из наиболее важных переменных настройки в MySQL, включая имя сокета.
Вы не должны перекомпилировать сервер MySQL только, чтобы запустить его с другого порта и сокета. Вы можете изменять порт и сокет, который нужно использовать, определяя их во время выполнения как параметры для safe_mysqld :
ПРЕДУПРЕЖДЕНИЕ: Обычно Вы никогда не должны иметь двух серверов, которые модифицируют данные в той же самой базе данных! Если Ваша ОС не поддерживает полноценную блокировку системы, это легко может привести к ОЧЕНЬ неприятным неожиданностям!
Когда Вы хотите соединиться с сервером MySQL, который работает с другим портом, чем порт, который компилируется в Вашего клиента, Вы можете использовать один из следующих методов: