Как изменить my ini mysql

Здравствуйте, уважаемые посетители моего скромного блога для начинающих вебразработчиков и web мастеров ZametkiNaPolyah.ru. Продолжим сегодня рубрику Заметки о MySQL, в которой я уже успел рассказать о том, как установить MySQL сервер и как настроить сервер баз данных. Сегодня я продолжу рассказывать о настройках сервера MySQL. В данной статье мы разберемся со следующими вопросами: куда устанавливается MySQL сервер, где найти базы данных MySQL сервера, как найти базы данных MySQL, для чего нужен файл my.ini, посмотрим примеры настройки сервера MySQL и где найти примеры настройки MySQL сервера.

Здравствуйте, уважаемые посетители моего скромного блога для начинающих вебразработчиков и web мастеров ZametkiNaPolyah.ru. Продолжим сегодня рубрику Заметки о MySQL, в которой я уже успел рассказать о том, как установить MySQL сервер и как настроить сервер баз данных. Сегодня я продолжу рассказывать о настройках сервера MySQL. В данной статье мы разберемся со следующими вопросами: куда устанавливается MySQL сервер, где найти базы данных MySQL сервера, как найти базы данных MySQL, для чего нужен файл my.ini, посмотрим примеры настройки сервера MySQL и где найти примеры настройки MySQL сервера.

MySQL сервер. Файл конфигураций my.ini. Настройка кодировки MySQL сервера. Таблицы перекодировок.

Разберемся с кодировкой MySQL сервера. Какую кодировку лучше использовать. Разберемся с командами MySQL сервера для смены кодировки. Так же затронем вопрос о включение и выключение MySQL, обратите внимание, что MySQL сервер не перезагружается. Посмотрим, какие возможности есть у сервера MySQL. Разберемся где лежат таблицы перекодировок MySQL сервера и как их добавить. А также сделаем настройки файла my.ini.

MySQL сервер. Настройка MySQL сервера, файл конфигурации my.ini, примеры настройки MySQL сервера.

Содержание статьи:

  • MySQL сервер. Настройка MySQL сервера, файл конфигурации my.ini, примеры настройки MySQL сервера.
    • Программы MySQL сервера, какой файл для чего нужен
  • Кодировка MySQL сервера. SET NAMES — команда для смены кодировки. Кодировка командной строки Windows.
  • Как изменить кодировку MySQL сервера. Как получить доступ к серверу MySQL через командную строку Windows.
  • Таблицы перекодировок MySQL сервера. Где находятся таблицы перекодировок и куда их прописать.
  • Как включить MySQL сервер. Как выключить MySQL сервер. Что нужно сделать, чтобы новые настройки сохранились.

Как я уже говорил, с установкой и предварительной настройкой MySQL сервера мы разобрались, теперь давайте посмотрим, хотя бы поверхностно, из чего состоит MySQL сервер. Какие файлы за что отвечают. MySQL сервер, в моем случае был установлен по данному пути: c:UsersPublicMySQL, кто-то мог установить сам сервер в папку Program Files, обратите внимание, что этот путь не указывает, то место, где хранятся базы данных MySQL сервера, здесь находится сам сервер баз данных.

MySQL сервер, файлы и папки MySQL сервера.

На скрине можно увидеть несколько файлов и папок сервера MySQL, нас собственно большая часть этих файлов не волнует.

Основной файл конфигурации MySQL сервера my.ini, это обычный текстовый файл, в который были вписаны настройки, которые мы вводили при установке MySQL сервера. Все остальные установленные файлы с расширением .ini – это всего лишь демонстрации настроек для my.ini, работает только my.ini, то есть, все остальные файлы существуют, как примеры для конфигурации и настройки MySQL сервера. Проще говоря, пример, как настроить MySQL сервер.

Программы MySQL сервера, какой файл для чего нужен

Где лежат примеры настроек MySQL сервера мы разобрались. Сами программы, предназначенные для обслуживания баз данных, находятся в папке bin.

Программы MySQL сервера

Сам сервер MySQL – это mysqld.exe, d – означает демон, ну или служба. Про некоторые другие утилиты и программы мы поговорим в дальнейшем более подробно. Если у вас стоит win xp, то базы данных будут находиться c:Documents and SettingsAll UsersApplication DataMySQL MySQL Server 5.xdata, если вы пользуетесь total commander или любым другим нормальным файловым менеджером, то без труда найдете эту папку, если вы пользуетесь проводником от Windows, то обязательно укажите в настройках «Отображать скрытые файлы», так как данная папка скрыта.

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

Кодировка MySQL сервера. SET NAMES — команда для смены кодировки. Кодировка командной строки Windows.

И так, теперь немного поговорим о кодировке сервера MySQL и кодировке командной строки Windows. Если вы будете пользоваться MySQL Command Lint Client, то проблем с кодировкой у вас возникнуть не должно.

MySQL Command Lint Client

Данный клиент установиться вместе с сервером и работа в нем не отличается от работы с командной строкой Windows. Для начала, вы вводите пароль, придуманный вами при установки MySQL сервера, а затем, не заморачиваясь с кодировками и командами типа SET Names, начинаете работать с базами данных: создавать новые базы данных, удалять базы данных, добавлять строки и столбцы к существующим таблицам баз данных, делать выборки из баз данных, создавать и удалять таблицы и многое-многое другое.

Ввод пароля администратора MySQL сервера.

Но если вы решили управлять сервером MySQL через командную строку, то знайте, что кодировка командной строки Windows отличается от кодировки MySQL сервера, в командной строке – это cp866, MySQL сервер в моем случае работает с кодировкой UTF8. И это нужно исправить, кодировку командной строки поменять мы не можем. Остается менять кодировку, с которой работает сервер MySQL.

Как изменить кодировку MySQL сервера. Как получить доступ к серверу MySQL через командную строку Windows.

Тут у нас есть два способа. Первый из них, постоянно писать команду SET NAMES и указывать кодировку cp866. SET NAMES – это не одна команда, как считают некоторые, а целых три. Первая команда – установить кодировку ввода, то есть, с какой кодировки перекодировать данные, которые получает сервер. Вторая команда – установить кодировку вывода, то есть, в какой кодировки сервер MySQL будет отдавать данные. И третья команда – установить collation или по другому правила сравнения строк. И чтобы не набирать три команды сразу была придумана команда SET NAMES. И так, чтобы указать нужную кодировку следует написать SET NAMES, а затем в одинарных кавычках написать нужную кодировку.

Выглядит все это примерно так:

SET NAMES - команда MySQL сервера для смены кодировки.

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

Чуть было не забыл, если вы пользуетесь командной строкой, то не забудьте, что MySQL сервер запускается путем написания команды mysql –uroot –pпароль, соответственно, после буквы u вы указываете пользователя сервера MySQL, а после буквы p – пароль. Пример на скрине:

Получаем доступ к серверу MySQL через командную строку Windows

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

По сути, вводя команду SET NAMES, мы как бы говорим серверу: «В данном сеансе(или иначе подключении) я буду работать с тобой вот в этой кодировки». То есть, из этого следует, что при каждом новом подключении к серверу MySQL, нам потребуется постоянно вводить команду SET NAMES и указывать кодировку, с которой необходимо работать. Удобно? Мне кажется, что не очень. Никаких SET NAMES при работе с консолью от MySQL вводить не надо.

Настройка MySQL сервера. Файл конфигураций my.ini. Настройка кодировок MySQL сервера.

И так, чтобы не париться с кодировкой, нужно настроить MySQL сервер. Настройки сервера производятся в файле my.ini. Открывайте его текстовым редактором, я пользуюсь Notepad++, очень удобный редактор, его легко настроить, есть подсветка синтаксиса, а самое главное – его можно скачать бесплатно.

Обратите внимание, что my.ini состоит из разделов, первый – Client, второй – mysql, третий – mysqld. Раздел mysqld – отвечает за настройку сервера MySQL. Mysql – это настройка черного окошечка, в котором собственно и будем работать. Раздел client – это настройки по умолчанию для всех клиентов MySQL сервера.

Файл конфигураций my.ini. Настройка кодировок  MySQL сервера.

Обратите внимание, на скриншоте выделена кодировка, которая стоит для работы в консоле, если вы будете пользоваться консолью от MySQL, то здесь ничего не меняйте, если вы предпочитаете командную строку Windows, то кое какие изменения сделать придется, дабы постоянно не писать SET NAMES. Как видно, кодировка для работы с окном DOS стоит utf8, но это не правда, так как в черном окне у нас кодировка cp866. То есть, первое, что надо поменять – это вместо utf8 написать cp866.

defaultcharacterset=cp866

Таблицы перекодировок MySQL сервера. Где находятся таблицы перекодировок и куда их прописать.

Но этого будет недостаточно. Потому что мы пока не указали, где лежат таблицы перекодировки сервера MySQL. То есть, грубо говоря, консоль пока не знает, как переводить из одной кодировки в другую. Программе надо указать, где лежат таблицы перекодировки, а лежат они собственно в самом сервере MySQL, в папке Share, в папке charsets. Путь выглядит примерно так:

c:UsersPublicMySQLMySQL Server 5.5sharecharsets

В этой папке много файлов с расширением XML, про язык расширяемой разметки XML, уже есть несколько публикаций в рубрике Заметки о XML. Именно в папке charsets вы можете посмотреть, какие кодировки поддерживает MySQL сервер.

Таблицы перекодировок MySQL сервера

В качестве примера можно привести Денвер – джентльменский набор web разработчика. У многих возникают проблемы типа: у меня на Денвере не работает кодировка UTF8, что делать? Ответ: для начала загляните в папку charsets Денверовского MySQL сервера, и если там нет файла utf8.xml, то понятно, что он и не будет поддерживать эту кодировку.

Понятно, что командная строка Windows не знает, где лежат таблицы перекодировок и ей это нужно указать. Делается это все в том же my.ini, в разделе mysql указывается папка, в которой хранятся таблицы перекодировок, при помощи команды character-sets-dir=””, между двойными кавычками нужно вписать путь к папке, в которой лежат таблицы перекодировок.

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

Итоговая настройка my.ini будет выглядеть примерно так:

[client]

charactersetsdir=«c:UsersPublicMySQLMySQL Server 5.5sharecharsets»

defaultcharacterset=utf8

port=3306

[mysql]

charactersetsdir=«c:UsersPublicMySQLMySQL Server 5.5sharecharsets»

defaultcharacterset=cp866

Но если вы будете использовать консоль от MySQL, то внесите изменения только в раздел client, и то не обязательно, хотя папку с таблицами перекодировки лучше указать в двух разделах:

[client]

charactersetsdir=«c:UsersPublicMySQLMySQL Server 5.5sharecharsets»

defaultcharacterset=utf8

port=3306

[mysql]

charactersetsdir=«c:UsersPublicMySQLMySQL Server 5.5sharecharsets»

defaultcharacterset=utf8

Ну а вот скрин из редактора, тут прописаны настройки для работы с сервером MySQL через командную строку:

настройки для работы с сервером MySQL через командную строку

Все эти настройки и команды означают буквально следующее: character-sets-dir – этой строкой мы как бы говорим, в первом случае, клиенты вы берете таблицы вот отсюда и указываете, откуда они берут таблицы перекодировок. default-character-set=cp866, этой строкой вы как бы говорите консоли, ты будешь использовать кодировку cp866. Да чуть не забыл, все слэши нужно использовать в UNIX виде, то есть, в примерах слеши написаны не правильно их нужно развернуть вот так — /. В Windows без разницы, какие вы будете использовать разделители, но если вы пользуетесь UNIX системами, то слеши нужно будет развернуть.

Как включить MySQL сервер. Как выключить MySQL сервер. Что нужно сделать, чтобы новые настройки сохранились.

После того, как вы внесли изменения в my.ini, нужно перезагрузить MySQL сервер, команды рестарт, как в случае с Apache тут нет. Придется выключить и заново включить сервер. Сделать это можно из командной строки, используя две команды. Первая net stop – предназначена для выключения службы, вторая – net start, которая предназначена для включения службы. Служба у нас MySQL сервер, следовательно, для него эти команды будут выглядеть так:

net stop mysql

net start mysql

Обратите внимание, что никаких точек с запятой после этих команд ставить не надо, как в случае с Set NAMES. Да и перед тем, как перезагрузить MySQL сервер, не забудьте, что нужно выйти из аккаунта управления сервером MySQL, чтобы это сделать есть команда exit.

Командой exit мы вышли из MySQL сервера, а командой net stop mysql мы выключили MySQL сервер. Когда вы в следующий раз включите MySQL сервер, командой net start mysql, а затем и войдете, как администратор сервера то никаких SET NAMES в командной строке Windows писать уже не надо, так как все уже указано в файле my.ini. Еще одна маленькая помарка, все эти настройки избавляют вас от того, чтобы постоянно вводить SET NAMES в командной строке, но не избавляет вас от необходимости вводить SET NAMES, в случае, когда вы обращаетесь к серверу MySQL при написание скриптов на PHP или любом другом языке программирования.

Также не забудьте, если настроили MySQL сервер под работу в командной строке, то вам придется постоянно указывать кодировку для работы с сервером в консоли от MySQL – MySQL Command Client.

На этом всё, спасибо за внимание, надеюсь, что был хоть чем-то полезен и до скорых встреч на страницах блога для начинающих вебразработчиков и вебмастеров ZametkiNaPolyah.ru 

Как настроить MySQL

От автора: ребята! Беда у меня! Недавно поселился рядом новый сосед, а он музыкант. И самое страшное, что играет на барабане. После очередного «творческого кризиса2 он решил из музыкантов податься в настройщики ударных установок. Вот с тех пор и тренируется дома! Причем от этого у всего «дома» началась сплошная головная боль. В общем, решили его «переквалифицировать» в администратора СУБД. Обучение соседа я начал с рассмотрение темы о том, как настроить MySQL.

Особенности настройки СУБД

Основные настройки MySQL задаются при установке экземпляра на компьютер или хостинг. Большая часть параметров (при использовании для инсталляции пакета установщика Windows) инициализируются автоматически при выборе в окне распаковщика стандартного варианта.

Тем не менее, всю «доводку» СУБД под высокопроизводительный ресурс придется проводить вручную с помощью изменения настроек в конфигурационном файле my.cnf, который является глобальным для всего экземпляра MySQL.

У меня на локально установленном Денвере этот файл находится на виртуальном диске, который создается автоматически при запуске Apache, по следующему адресу: Z:usrlocalmysql-5.5

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать веб-приложение на PHP с полного нуля

Получить курс сейчас!

В других версия сервера СУБД конфигурационный файл может находиться во вложенной папке etc: /etc/my.cnf

Это пригодиться, чтобы знать все нюансы того, как настроить MySQL на хостинге. Так как на разных площадках могут использоваться различные версии СУБД.

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

Здесь прописаны основные параметры и конфигурации, которые необходимы для работы вашего экземпляра СУБД. Опишем некоторые из них.

Часто востребованные настройки my.ini

Параметры, которые будут кратко рассмотрены ниже, часто востребованы при более тонкой настройки СУБД под конкретные нагрузки или особенности структуры БД. Имеется в виду используемый тип таблицы, который задается при создании:

nnodb_flush_log_at_trx_commit.

MyISAM.

CSV.

MEMORY.

ARHIVE.

BLACKHOLE.

Все они применяются для хранения определенных типов данных. Точнее, особенности этих движков позволяют MySQL использовать определенный формат данных. Более подробно об этом можно узнать из официальной документации по СУБД или из другой профессиональной литературы. Но вернемся к параметрам из my.ini, с которыми нужно ознакомиться перед тем, как настраивать MySQL сервер:

key_buffer_size – значение этой переменной следует увеличивать, если на сервере часто применяется тип MyISAM. По умолчанию стоит значение 32 «метра». При частом использовании таблиц данного типа параметр следует увеличить до 30% от объема всей отведенной MySQL памяти.

innodb_buffer_pool_size – нужно повышать значение данной переменной, если часто применяете тип InnoDB. Так как эти таблицы не используют системный кэш (ОС), то под них придется выделить около 60% от все памяти.

innodb_log_file_size – этот параметр следует повышать, если в БД происходит частая запись данных. Чем больше значение, тем скорость выполнения запросов выше. Но тогда процесс восстановления информации будет занимать больше времени.

query_cache_size – устанавливает размер кэша под запросы. Больше памяти стоит выделять, если на уровне приложения не реализовано собственного кэша. Тогда следует увеличить значение параметра до 512 Мб, но это максимально допустимый показатель. Поскольку это приведет к чрезмерному потреблению серверных мощностей.

thread_cache – размер кэша, выделяемый под подключения (потоки). Большое значение параметра также может привести к значительному повышению расходования мощностей сервера, выделенных на хостниге.

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать веб-приложение на PHP с полного нуля

Получить курс сейчас!

table_open_cache (в некоторых версиях СУБД table_cache) – сколько памяти выделено под кэш таблиц. При этом для повышения скорости обработки запросов нужно выделить достаточное количество ресурсов. Для базы (баз) в несколько сотен таблиц данный показатель должен иметь значение около 1 «гектара» (в файле конфигурации указывается 1024).

nnodb_flush_log_at_trx_commit – влияет на скорость взаимодействия СУБД таблицами типа InnoDB. Перед тем, как настроить базу данных MySQL, стоит выяснить, какое задать значение задать этому параметру. 1 – тогда запись данных будет происходить на дисковое пространство (самый медленный вариант); 2 – информация сохраняется в кэше ОС, а запись в логи происходит после записи в кэш (подходит для большинства случаев); 0 –данные сохраняются сразу в логи (самый быстрый вариант, но и самый небезопасный).

innodb_log_buffer_size – размер кэша под логи. Большое значение следует устанавливать, если на сайте может резко повышаться (всплеском) нагрузка на СУБД. В остальных случаях лучше оставить значение переменной без изменений.

Системные переменные

Если вы внимательно меня «слушали», то должны были обратить внимание, что я называл параметры конфигурации из my.ini системными переменными. Это значит, что их можно изменять и получать их значение с помощью запросов SQL. Перед тем, как настраивать MySQL, проверим данную аксиому на практике. Для начала выведем значение всех системных переменных СУБД:

Ух ты! Да их тут несколько десятков, поэтому найти нужную переменную в этом списке будет очень сложно. Упрощаем процесс поиска:

show variables like ‘%query_cache_size’;

Значение переменной мы получили, вот только в my.ini для этого параметра задано значение 56 метров. А тут какое-то восьмизначное число.

Воспользуемся онлайн-конвертором величин, и переведем возвращенное MySQL значение в мегабайты (Мб). Получается, что запрос вернул результат в байтах.

Это следует учитывать, чтобы уметь и знать, как настраивать MySQL сервер.

Теперь зададим для переменной query_cache_size большее значение. Например, 70 метров. Для этого снова воспользуемся конвектором величин: 70 мегабайт = 73400320 байт

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

SET GLOBAL `query_cache_size`=73400320;

Теперь проверим, поменялось ли значение переменной. Для этого используем предыдущий запрос (show variables):

Мы видим, что значение параметра увеличилось, но оно не изменилось в конфигурационном файле. Из-за этого «повышенный» буфер будет действовать только в рамках текущего сеанса. Во время следующего запуска сервер СУБД снова считает данные из my.ini и кэш под запросы снова уменьшится до 56 МБ.

Получается, что нужно редактировать содержание конфигурационного файла. Так «глобальнее» будет :). Надеюсь, теперь вы знаете, как настроить базы данных MySQL. Это обязательно пригодится. А что мой сосед? Донимает меня расспросами насчет СУБД, поэтому голова теперь болит только у меня, а не у всего дома.

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать веб-приложение на PHP с полного нуля

Получить курс сейчас!

Хотите изучить MySQL?

Посмотрите курс по базе данных MySQL!

Смотреть

I’ve just installed on my new server MySQL 5.0.24 64bit (till now i’ve used same version of MySQL but 32bit on another server), on the old server i’ve changed in my.ini the parameters of key_buffer_size, innodb_buffer_pool_size and some options for the cache, now on the new server i’ve changed the same key_buffer_size and innodb_buffer_pool_size but by incrementing the assigned memory to 20G on both.

The new server is like three times more powerful than the old one, but, after i’ve done the backup of all the databases from the old server to the new i tought it will be more faster while by doing the same select query on both servers the new one result more slower..

OLD Server:

enter image description here

NEW Server (same db and table):

enter image description here

So how should i configure the my.ini for get the best performance for that server?
Here is how’s the my.ini right now (almost all tables are in MyISAM):

# MySQL Server Instance Configuration File
# ----------------------------------------------------------------------
# Generated by the MySQL Server Instance Configuration Wizard
#
#
# Installation Instructions
# ----------------------------------------------------------------------
#
# On Linux you can copy this file to /etc/my.cnf to set global options,
# mysql-data-dir/my.cnf to set server-specific options
# (@localstatedir@ for this installation) or to
# ~/.my.cnf to set user-specific options.
#
# On Windows you should keep this file in the installation directory 
# of your server (e.g. C:Program FilesMySQLMySQL Server X.Y). To
# make sure the server reads the config file use the startup option 
# "--defaults-file". 
#
# To run run the server from the command line, execute this in a 
# command line shell, e.g.
# mysqld --defaults-file="C:Program FilesMySQLMySQL Server X.Ymy.ini"
#
# To install the server as a Windows service manually, execute this in a 
# command line shell, e.g.
# mysqld --install MySQLXY --defaults-file="C:Program FilesMySQLMySQL Server X.Ymy.ini"
#
# And then execute this in a command line shell to start the server, e.g.
# net start MySQLXY
#
#
# Guildlines for editing this file
# ----------------------------------------------------------------------
#
# In this file, you can use all long options that the program supports.
# If you want to know the options a program supports, start the program
# with the "--help" option.
#
# More detailed information about the individual options can also be
# found in the manual.
#
#
# CLIENT SECTION
# ----------------------------------------------------------------------
#
# The following options will be read by MySQL client applications.
# Note that only client applications shipped by MySQL are guaranteed
# to read this section. If you want your own MySQL client program to
# honor these values, you need to specify it as an option during the
# MySQL client library initialization.
#
[client]

port=3306

[mysql]

default-character-set=latin1


# SERVER SECTION
# ----------------------------------------------------------------------
#
# The following options will be read by the MySQL Server. Make sure that
# you have installed the server correctly (see above) so it reads this 
# file.
#
[mysqld]

# The TCP/IP Port the MySQL Server will listen on
port=3306
#skip-name-resolve

#Path to installation directory. All paths are usually resolved relative to this.
basedir="C:/Program Files (x86)/MySQL/MySQL Server 5.0/"

#Path to the database root
datadir="C:/Program Files (x86)/MySQL/MySQL Server 5.0/Data/"

# The default character set that will be used when a new schema or table is
# created and no character set is defined
default-character-set=latin1

# The default storage engine that will be used when create new tables when
default-storage-engine=INNODB

# Set the SQL mode to strict
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

# The maximum amount of concurrent sessions the MySQL server will
# allow. One of these connections will be reserved for a user with
# SUPER privileges to allow the administrator to login even if the
# connection limit has been reached.
max_connections=341

# Query cache is used to cache SELECT results and later return them
# without actual executing the same query once again. Having the query
# cache enabled may result in significant speed improvements, if your
# have a lot of identical queries and rarely changing tables. See the
# "Qcache_lowmem_prunes" status variable to check if the current value
# is high enough for your load.
# Note: In case your tables change very often or if your queries are
# textually different every time, the query cache may result in a
# slowdown instead of a performance improvement.
query_cache_size=9M

# The number of open tables for all threads. Increasing this value
# increases the number of file descriptors that mysqld requires.
# Therefore you have to make sure to set the amount of open files
# allowed to at least 4096 in the variable "open-files-limit" in
# section [mysqld_safe]
table_cache=700

# Maximum size for internal (in-memory) temporary tables. If a table
# grows larger than this value, it is automatically converted to disk
# based table This limitation is for a single table. There can be many
# of them.
tmp_table_size=16M


# How many threads we should keep in a cache for reuse. When a client
# disconnects, the client's threads are put in the cache if there aren't
# more than thread_cache_size threads from before.  This greatly reduces
# the amount of thread creations needed if you have a lot of new
# connections. (Normally this doesn't give a notable performance
# improvement if you have a good thread implementation.)
thread_cache_size=17

#*** MyISAM Specific options

# The maximum size of the temporary file MySQL is allowed to use while
# recreating the index (during REPAIR, ALTER TABLE or LOAD DATA INFILE.
# If the file-size would be bigger than this, the index will be created
# through the key cache (which is slower).
myisam_max_sort_file_size=100G

# If the temporary file used for fast index creation would be bigger
# than using the key cache by the amount specified here, then prefer the
# key cache method.  This is mainly used to force long character keys in
# large tables to use the slower key cache method to create the index.
myisam_max_extra_sort_file_size=100G

# If the temporary file used for fast index creation would be bigger
# than using the key cache by the amount specified here, then prefer the
# key cache method.  This is mainly used to force long character keys in
# large tables to use the slower key cache method to create the index.
myisam_sort_buffer_size=8M

# Size of the Key Buffer, used to cache index blocks for MyISAM tables.
# Do not set it larger than 30% of your available memory, as some memory
# is also required by the OS to cache rows. Even if you're not using
# MyISAM tables, you should still set it to 8-64M as it will also be
# used for internal temporary disk tables.
key_buffer_size=20G

# Size of the buffer used for doing full table scans of MyISAM tables.
# Allocated per thread, if a full scan is needed.
read_buffer_size=64K
read_rnd_buffer_size=256K

# This buffer is allocated when MySQL needs to rebuild the index in
# REPAIR, OPTIMZE, ALTER table statements as well as in LOAD DATA INFILE
# into an empty table. It is allocated per thread so be careful with
# large settings.
sort_buffer_size=208K


#*** INNODB Specific options ***


# Use this option if you have a MySQL server with InnoDB support enabled
# but you do not plan to use it. This will save memory and disk space
# and speed up some things.
#skip-innodb

# Additional memory pool that is used by InnoDB to store metadata
# information.  If InnoDB requires more memory for this purpose it will
# start to allocate it from the OS.  As this is fast enough on most
# recent operating systems, you normally do not need to change this
# value. SHOW INNODB STATUS will display the current amount used.
innodb_additional_mem_pool_size=2M

# If set to 1, InnoDB will flush (fsync) the transaction logs to the
# disk at each commit, which offers full ACID behavior. If you are
# willing to compromise this safety, and you are running small
# transactions, you may set this to 0 or 2 to reduce disk I/O to the
# logs. Value 0 means that the log is only written to the log file and
# the log file flushed to disk approximately once per second. Value 2
# means the log is written to the log file at each commit, but the log
# file is only flushed to disk approximately once per second.
innodb_flush_log_at_trx_commit=2
innodb_flush_method=normal

# The size of the buffer InnoDB uses for buffering log data. As soon as
# it is full, InnoDB will have to flush it to disk. As it is flushed
# once per second anyway, it does not make sense to have it very large
# (even with long transactions).
innodb_log_buffer_size=1M

# InnoDB, unlike MyISAM, uses a buffer pool to cache both indexes and
# row data. The bigger you set this the less disk I/O is needed to
# access data in tables. On a dedicated database server you may set this
# parameter up to 80% of the machine physical memory size. Do not set it
# too large, though, because competition of the physical memory may
# cause paging in the operating system.  Note that on 32bit systems you
# might be limited to 2-3.5G of user level memory per process, so do not
# set it too high.
innodb_buffer_pool_size=20G

# Size of each log file in a log group. You should set the combined size
# of log files to about 25%-100% of your buffer pool size to avoid
# unneeded buffer pool flush activity on log file overwrite. However,
# note that a larger logfile size will increase the time needed for the
# recovery process.
innodb_log_file_size=256M

# Number of threads allowed inside the InnoDB kernel. The optimal value
# depends highly on the application, hardware as well as the OS
# scheduler properties. A too high value may lead to thread thrashing.
innodb_thread_concurrency=16

The new server has 64GB Ram, 1.5TB os SSD and 10x Intel(R) Xeon(R) CPU E5-2630 @ 2.20GHz

# MySQL Server Instance Configuration File # ———————————————————————- # Generated by the MySQL Server Instance Configuration Wizard # # # Installation Instructions # ———————————————————————- # # On Linux you can copy this file to /etc/my.cnf to set global options, # mysql-data-dir/my.cnf to set server-specific options # (@localstatedir@ for this installation) or to # ~/.my.cnf to set user-specific options. # # On Windows you should keep this file in the installation directory # of your server (e.g. C:Program FilesMySQLMySQL Server X.Y). To # make sure the server reads the config file use the startup option # «—defaults-file». # # To run run the server from the command line, execute this in a # command line shell, e.g. # mysqld —defaults-file=»C:Program FilesMySQLMySQL Server X.Ymy.ini» # # To install the server as a Windows service manually, execute this in a # command line shell, e.g. # mysqld —install MySQLXY —defaults-file=»C:Program FilesMySQLMySQL Server X.Ymy.ini» # # And then execute this in a command line shell to start the server, e.g. # net start MySQLXY # # # Guildlines for editing this file # ———————————————————————- # # In this file, you can use all long options that the program supports. # If you want to know the options a program supports, start the program # with the «—help» option. # # More detailed information about the individual options can also be # found in the manual. # # # CLIENT SECTION # ———————————————————————- # # The following options will be read by MySQL client applications. # Note that only client applications shipped by MySQL are guaranteed # to read this section. If you want your own MySQL client program to # honor these values, you need to specify it as an option during the # MySQL client library initialization. # [client] port=3306 [mysql] default-character-set=utf8 # SERVER SECTION # ———————————————————————- # # The following options will be read by the MySQL Server. Make sure that # you have installed the server correctly (see above) so it reads this # file. # [mysqld] #skip-innodb # The TCP/IP Port the MySQL Server will listen on port=3306 max_allowed_packet=16M #Path to installation directory. All paths are usually resolved relative to this. #basedir=»C:/Program Files/MySQL/MySQL Server 5.1/» basedir=«C:/MySQL/« #Path to the database root #datadir=»C:/Documents and Settings/All Users/Application Data/MySQL/MySQL Server 5.1/Data/» datadir=«C:/MySQLData/« # The default character set that will be used when a new schema or table is # created and no character set is defined default-character-set=utf8 # The default storage engine that will be used when create new tables when default-storage-engine=INNODB # Set the SQL mode to strict sql-mode=«STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION« # The maximum amount of concurrent sessions the MySQL server will # allow. One of these connections will be reserved for a user with # SUPER privileges to allow the administrator to login even if the # connection limit has been reached. max_connections=1000 # Query cache is used to cache SELECT results and later return them # without actual executing the same query once again. Having the query # cache enabled may result in significant speed improvements, if your # have a lot of identical queries and rarely changing tables. See the # «Qcache_lowmem_prunes» status variable to check if the current value # is high enough for your load. # Note: In case your tables change very often or if your queries are # textually different every time, the query cache may result in a # slowdown instead of a performance improvement. query_cache_type = 1 query_cache_size=256M thread_concurrency = 8 query_cache_limit = 768M # The number of open tables for all threads. Increasing this value # increases the number of file descriptors that mysqld requires. # Therefore you have to make sure to set the amount of open files # allowed to at least 4096 in the variable «open-files-limit» in # section [mysqld_safe] table_cache=1024 # Maximum size for internal (in-memory) temporary tables. If a table # grows larger than this value, it is automatically converted to disk # based table This limitation is for a single table. There can be many # of them. tmp_table_size=128M # How many threads we should keep in a cache for reuse. When a client # disconnects, the client’s threads are put in the cache if there aren’t # more than thread_cache_size threads from before. This greatly reduces # the amount of thread creations needed if you have a lot of new # connections. (Normally this doesn’t give a notable performance # improvement if you have a good thread implementation.) thread_cache_size=256 #*** MyISAM Specific options # The maximum size of the temporary file MySQL is allowed to use while # recreating the index (during REPAIR, ALTER TABLE or LOAD DATA INFILE. # If the file-size would be bigger than this, the index will be created # through the key cache (which is slower). myisam_max_sort_file_size=100G # If the temporary file used for fast index creation would be bigger # than using the key cache by the amount specified here, then prefer the # key cache method. This is mainly used to force long character keys in # large tables to use the slower key cache method to create the index. myisam_sort_buffer_size=256M # Size of the Key Buffer, used to cache index blocks for MyISAM tables. # Do not set it larger than 30% of your available memory, as some memory # is also required by the OS to cache rows. Even if you’re not using # MyISAM tables, you should still set it to 8-64M as it will also be # used for internal temporary disk tables. key_buffer_size=512M # Size of the buffer used for doing full table scans of MyISAM tables. # Allocated per thread, if a full scan is needed. read_buffer_size=64K read_rnd_buffer_size=256K # This buffer is allocated when MySQL needs to rebuild the index in # REPAIR, OPTIMZE, ALTER table statements as well as in LOAD DATA INFILE # into an empty table. It is allocated per thread so be careful with # large settings. sort_buffer_size=2M #*** INNODB Specific options *** # Use this option if you have a MySQL server with InnoDB support enabled # but you do not plan to use it. This will save memory and disk space # and speed up some things. #skip-innodb # Additional memory pool that is used by InnoDB to store metadata # information. If InnoDB requires more memory for this purpose it will # start to allocate it from the OS. As this is fast enough on most # recent operating systems, you normally do not need to change this # value. SHOW INNODB STATUS will display the current amount used. innodb_additional_mem_pool_size=12M # If set to 1, InnoDB will flush (fsync) the transaction logs to the # disk at each commit, which offers full ACID behavior. If you are # willing to compromise this safety, and you are running small # transactions, you may set this to 0 or 2 to reduce disk I/O to the # logs. Value 0 means that the log is only written to the log file and # the log file flushed to disk approximately once per second. Value 2 # means the log is written to the log file at each commit, but the log # file is only flushed to disk approximately once per second. innodb_flush_log_at_trx_commit=1 # The size of the buffer InnoDB uses for buffering log data. As soon as # it is full, InnoDB will have to flush it to disk. As it is flushed # once per second anyway, it does not make sense to have it very large # (even with long transactions). innodb_log_buffer_size=6M # InnoDB, unlike MyISAM, uses a buffer pool to cache both indexes and # row data. The bigger you set this the less disk I/O is needed to # access data in tables. On a dedicated database server you may set this # parameter up to 80% of the machine physical memory size. Do not set it # too large, though, because competition of the physical memory may # cause paging in the operating system. Note that on 32bit systems you # might be limited to 2-3.5G of user level memory per process, so do not # set it too high. innodb_buffer_pool_size=550M # Size of each log file in a log group. You should set the combined size # of log files to about 25%-100% of your buffer pool size to avoid # unneeded buffer pool flush activity on log file overwrite. However, # note that a larger logfile size will increase the time needed for the # recovery process. innodb_log_file_size=110M # Number of threads allowed inside the InnoDB kernel. The optimal value # depends highly on the application, hardware as well as the OS # scheduler properties. A too high value may lead to thread thrashing. innodb_thread_concurrency=10 #This option makes InnoDB to store each created table into its own .ibd file. innodb_file_per_table

Portable MySQL 5.7 в Windows

В статье представлена установка и настройка портативного варианта базы данных MySQL 5.7 Community Server на Windows из zip архива. Описаны все действия — загрузка zip архива с дистрибутивом MySQL сервера, организация каталогов, настройка конфигурации, инициализация, запуск и подключение к серверу из программы MySQL Workbench. Статья так же содержит скринкаст.

Портативный вариант инсталляции базы данных MySQL в OS Windows может быть особо удобным для организации среды web разработки для приложений, рассчитанных под LAMP. Конечно, в идеальном случае, для LAMP веб разработки лучше работать в OS Linux, но для тех случаев, когда это по каким-либо причинам невозможно, приходиться организовывать нужное окружение на Win машине. Для этих целей существуют разные подходы и варианты сборок WinAMP для организации среды для web разработки. Однако в таких сборках база данных MySQL представлена в минимальном, урезанном варианте и часто не в самой свежей и последней версии. Поэтому, как раз для того, чтобы иметь свой полный и актуальный вариант portable установки MySQL сервера и есть смысл делать такую инсталляцию. Ее можно разместить прямо в каталоге вашей WAMP сборки, и использовать вместо имеющейся там изначально версии MySQL. Или вообще можно собрать свою WAMP сборку, установив в нее самостоятельно MySQL и другие компоненты, и выполнив их настройку и связку.

Основные преимущества такого варианта инсталляции MySQL сервера могут быть в следующем:

  • портативность установки, т.е. вы сможете переносить и использовать MySQL сервер на других PC с Windows. Так же инсталляция не будет связана с системой и не будет прописываться в реестре. Однако, если вам не нужна именно портативная установка, то тогда, наверное, технически будет проще выполнить обычную для Windows установку при помощи MySQL Installer for Windows, который можно скачать на странице загрузки.
  • возможность иметь последую актуальную версию MySQL сервера. Так на момент написания статьи MySQL имеет версию 5.7.13, которая имеет существенные преимущества перед версией 5.6 по производительности и дополнительному функционалу. Чего только стоит появление нового типа данных json, что позволяет хранить в столбце таблицы, извлекать и обрабатывать данные в виде объекта json.
  • независимая настройка базы данных MySQL под свои нужды и возможность использования дополнений и плагинов, входящих в полный дистрибутив MySQL 5.7.13 Community Server.
  • полезный опыт по ручной настройке базы данных MySQL, который даст вам неоспоримые преимущества при самостоятельном развертывании продуктивного LAMP web сервера, т.к. по своей сути все настройки MySQL будут одинаковы как для Windows, так и для Linux OS.

Перейти к скринкасту Установка MySQL 5.7.13 в Windows из zip архива, MySQL Workbench

В этой статье все описания и примеры представлены для версии MySQL Community Server 5.7.13, но все это будет так же подходить и для более новых версий MySQL. Однако могут быть нюансы, поэтому, если что либо не будет получаться, то пишите в комментариях и читайте официальную документацию MySQL.

Скачивание дистрибутивов MySQL 5.7 и Workbench

Загрузить zip архив с дистрибутивом MySQL Community Server 5.7.13 (mysql-5.7.13-winx64-debug-test.zip) для выполнения portable установки можно с официального сайта, где в низу страницы представлены разные варианты дистрибутивов, в том числе и в формате zip архива. Загрузить программу MySQL Workbench (mysql-workbench-community-6.3.7-winx64-noinstall.zip) можно так же с официального сайта MySQL. На этих страницах загрузки данные дистрибутивы доступны как в варианте универсального инсталлятора для Windows, так и в виде простого zip архива.

Так же для работы MySQL 5.7 в Windows необходимо, что бы в системы были установлены следующие библиотеки:

  • Microsoft .NET Framework 4 Client Profile
  • Visual C++ Redistributable for Visual Studio 2013

Настройка MySQL

Настройка каталогов MySQL

Загруженный zip архив с дистрибутивом MySQL сервера нужно распаковать в выбранную вами папку. Путь до каталога и само название каталога целесообразно (но не обязательно) создавать такими, что бы они содержали только английские буквы и цифры и не имели пробелов. В таком варианте вам не придется заключать в кавычки пути в конфигурационном файле MySQL. Так же чем короче будет путь, например, "Z:/mysql", тем легче вам его будет править, в особенности при миграции каталога с дистрибутивом между вашими PC. Если вы собираете свою WINAMP сборку, то удобно будет выделить для нее даже отдельный диск.

Распакованный дистрибутив MySQL сервера по умолчанию будет иметь следующую структуру каталогов:

|-- bin
|-- docs
|-- include
|-- lib
|-- share
|-- COPYING
|-- my-default.ini
|-- README

В дополнении к уже имеющимся каталогам нужно создать дополнительно в домашней директории MySQL сервера следующие каталоги:

  • data — каталог для файлов баз данных;
  • files — каталог для файлов, с которыми может работать MySQL сервер;
  • logs — каталог для логов сервера;
  • tmp — каталог для временных файлов.

Эти директории нужно создать самостоятельно вручную, т.к. MySQL сервер сам не создает директории. Позднее, пути к этим папкам будут указываться в конфигурационном файле my.ini. Такой подход позволяет вам удобно организовать структуру домашнего каталога MySQL. Так же, при необходимости, вы можете расположить эти каталоги и вне домашней директории программы MySQL, но это более актуально на продуктивном сервере т.к. позволяет вынести, например, файлы базы данных на отдельный раздел/диск.

Создание конфига my.ini

Перед инициализацией или переинициализацией MySQL сервера необходимо создать в корне его домашней директории конфигурационный файл my.ini и записать в него необходимые директивы. Файл my.ini является главным конфигурационным файлом MySQL сервера в Windows. Создать файл my.ini удобно путем копирования файла заготовки my-default.ini. Ниже приводиться пример файла my.ini с необходимыми настройками, которых достаточно для инициализации MySQL. Для более детальной настройки необходимо обращаться к документации MySQL сервера.

Пример файла my.ini

Ниже приведен пример файла my.ini для портативной установки MySQL сервера в Windows из zip архива. Пути в файле-примере заданы, исходя из того, что домашний каталог MySQL задан как «Z:/mysql» директория.

Приведенный пример файла my.ini предназначен только для

первичной инициализации

MySQL сервера и тестовой его эксплуатации. Для продуктивной эксплуатации MySQL сервера этот файл необходимо

пересмотреть

и

изменить

под ваши требования.

# Пример файла my.ini для mysql-5.7.13-winx64 portable installation
# Только для тестов!
# В примере домашний каталог - Server Root "Z:/mysql"
# Cлеши в путях должны быть ПРЯМЫМИ И ОДИНАРНЫМИ! Завершающий слеш НЕ НУЖЕН.
# Если путь содержит пробелы его нужно обязательно заключать в кавычки.
#
# Ссылки на документацию:
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
# http://dev.mysql.com/doc/refman/5.7/en/option-files.html

[client]
# Необязательный блок директив для клиента
port=3306
socket=Z:/mysql/tmp/mysql.sock
default-character-set=utf8

[mysqld]
#Обязательный блок директив для сервера

#Явное указание движка таблиц по умолчанию, не обязательно
default-storage-engine = InnoDB
default_tmp_storage_engine = InnoDB

#кодировки сервера
character-set-server=utf8
collation-server=utf8_general_ci

#Временная зона(не обязательно)
#default-time-zone='+00:00'

#Выделение памяти под буфер innodb
#Для разработческого сервера достаточно 10% от RAM
innodb_buffer_pool_size = 512M

#Пути к папкам с прямыми слешами без завершающего слеша
#Путь к домашней директории сервера
basedir=Z:/mysql

#Путь к директории для файлов баз данных
datadir=Z:/mysql/data

#Путь к директории для экспорта и импорта файлов сервером
#Не обязательный параметр
secure-file-priv=Z:/mysql/files

#IP адрес который будет слушать сервер
bind-address=127.0.0.1
#Порт
port=3306
socket=Z:/mysql/tmp/mysql.sock

#Разкомментировать если не нужно что бы сервер
#использовал ip клиента вместо имени хоста (localhost)
#skip-name-resolve

#LOGS
#Отключить запись в системный лог
log_syslog=0

#Путь к файлу ошибок. Этот файл будет создан сервером
log_error="Z:/mysql/logs/mysql-error.log"
#log_timestamps = UTC

#Не обязательно - логирование медленных запросов
#log-queries-not-using-indexes=1
#slow-query-log=1
#long_query_time=1
#slow-query-log-file="Z:/mysql/logs/mysql-slow.log"

#Не обязательный блок выделения памяти для SQL запросов
#key_buffer_size = 32M
#max_allowed_packet = 32M
#table_open_cache = 2048
#join_buffer_size=128M
#sort_buffer_size = 32M
#read_buffer_size = 32M
#read_rnd_buffer_size = 32M
#myisam_sort_buffer_size = 16M
#max_connect_errors      = 1000000
#option 'net_buffer_length': unsigned value 16777216 adjusted to 1048576
#net_buffer_length = 1M

#Режимы, не обязательно.
# sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysqld-5.7]
sql_mode=TRADITIONAL

[mysqldump]
#Не обязательный блок
quick
#max_allowed_packet = 32M

[mysqladmin]
#Не обязательный блок
force

[mysql]
#Не обязательный блок
no-auto-rehash
#connect_timeout=2

Инициализация и переинициализация MySQL сервера

Если MySQL сервер уже был установлен и инициализирован ранее на машине и требуется выполнить его инициализацию/переинициализацию заново/повторно, то необходимо сделать резервные копии всех баз данных на сервере MySQL (кроме служебных), остановить MySQL сервер, удалить содержимое каталога data, если нужно, то обновить дистрибутив MySQL и выполнить все настройки конфигурации, описанные выше и затем можно выполнить инициализацию заново, как это описано ниже.

Когда все каталоги и файл my.ini созданы в домашней директории MySQL сервера, то можно сделать инициализацию или переинициализацию MySQL, которая является первым необходимым действием перед запуском MySQL.  В результате инициализации MySQL сервера будут созданы все необходимые для его работы файлы, базы данных и пользователь root с паролем. Для инициализации MySQL необходимо запустить файл mysqld.exe передав ему параметр initialize. Для выполнения этого перейдите в проводнике Windows в каталог /bin домашней директории MySQL сервера и находясь в этой папке запустите командную строку Windows cmd.exe. Что бы запустить cmd.exe именно в текущей папке зажмите клавишу Shift и щелкните правой кнопкой мыши в текущей папке, и в открывшемся контекстном меню выберите пункт «Открыть меню команд«. В таком варианте cmd.exe запуститься именно в текущей папке. Затем в командной строке наберите команду:

>mysqld --initialize --console

где:

  • mysqld — это запускаемый файл mysqld.exe;
  • —initialize — это параметр, указывающий на необходимость выполнить инициализацию MySQL сервера;
  • —console — это параметр задает вывод всех сообщения mysqld прямо консоли, что удобно. Так же эти сообщения будут записаны и в лог файл MySQL сервера.

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

Z:mysqlbin>mysqld --initialize --console
2016-05-13T17:27:32.663509Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please
2016-05-13T17:27:33.303111Z 0 [Warning] InnoDB: New log files created, LSN=45790
2016-05-13T17:27:33.381111Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2016-05-13T17:27:33.412311Z 0 [Warning] No existing UUID has been found, so we assume that this is t
2016-05-13T17:27:33.412311Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_execut
2016-05-13T17:27:33.490311Z 1 [Note] A temporary password is generated for root@localhost: Zqw6vMfxw

Как видно из примера в процессе инициализации был создан пользователь root@localhost с паролем Zqw6vMfxw. В MySQL 5.7 теперь пользователю root присваивается пароль при инициализации, раньше в предыдущих версиях пароль был пустой. Этот пароль нужно записать, для того что бы иметь возможность подключиться в MySQL в последствии. Так же в процессе инициализации в паке /data будут созданы файлы базы данных и служебных таблиц:

|-- data
|   `-- mysql
|   `-- performance_schema
|   `-- sys
|   `-- auto.cnf
|   `-- ib_buffer_pool
|   `-- ib_logfile0
|   `-- ib_logfile1
|   `-- ibdata1

В папке /logs будут созданы указанные вами в файле my.ini лог файлы:

|-- logs
|   `-- mysql-error.log
|   `-- mysql-slow.log

Запуск MySQL сервера

После инициализации можно уже выполнить запуск MySQL сервера, для чего наберите в командой строке:

>mysqld --console

где: —console — это необязательный параметр, указывающий на вывод сообщений от MySQL прямо в командной строке. Их также можно прочитать в лог файле mysql-error.log.

В результате выполнения этой команды MySQL сервер будет запущен и в консоли будут выведены примерно следующие сообщения от mysqld.

Примерный лог при запуске MySQL сервера:

2016-05-13T18:02:26.282563Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is
 deprecated. Please use --explicit_defaults_for_timestamp server option (see doc
umentation for more details).
2016-05-13T18:02:26.282563Z 0 [Warning] Insecure configuration
for --secure-file-priv: Current value does not restrict location of generated
files. Consider set ting it to a valid, non-empty path.
2016-05-13T18:02:26.282563Z 0 [Note] Z:mysqlbinmysqld (mysqld 5.7.12-log)
starting as process 3504 ...
2016-05-13T18:02:26.297564Z 0 [Note] InnoDB: Mutexes and rw_locks use Windows in
terlocked functions
2016-05-13T18:02:26.297564Z 0 [Note] InnoDB: Uses event mutexes
2016-05-13T18:02:26.297564Z 0 [Note] InnoDB: _mm_lfence() and _mm_sfence() are u
sed for memory barrier
2016-05-13T18:02:26.297564Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.3
2016-05-13T18:02:26.298564Z 0 [Note] InnoDB: Number of pools: 1
2016-05-13T18:02:26.298564Z 0 [Note] InnoDB: Not using CPU crc32 instructions
2016-05-13T18:02:26.386569Z 0 [Note] InnoDB: Initializing buffer pool, total siz
e = 512M, instances = 1, chunk size = 128M
2016-05-13T18:02:26.446572Z 0 [Note] InnoDB: Completed initialization of buffer
pool
2016-05-13T18:02:26.491575Z 0 [Note] InnoDB: Highest supported file format is Ba
rracuda.
2016-05-13T18:02:26.575579Z 0 [Note] InnoDB: Creating shared tablespace for temp
orary tables
2016-05-13T18:02:26.575579Z 0 [Note] InnoDB: Setting file '.ibtmp1' size to 12
MB. Physically writing the file full; Please wait ...
2016-05-13T18:02:26.626582Z 0 [Note] InnoDB: File '.ibtmp1' size is now 12 MB.
2016-05-13T18:02:26.632583Z 0 [Note] InnoDB: 96 redo rollback segment(s) found.
96 redo rollback segment(s) are active.
2016-05-13T18:02:26.633583Z 0 [Note] InnoDB: 32 non-redo rollback segment(s) are
 active.
2016-05-13T18:02:26.635583Z 0 [Note] InnoDB: Waiting for purge to start
2016-05-13T18:02:26.686586Z 0 [Note] InnoDB: 5.7.12 started; log sequence number
 2522095
2016-05-13T18:02:26.688586Z 0 [Note] Plugin 'FEDERATED' is disabled.
2016-05-13T18:02:26.691586Z 0 [Note] InnoDB: Loading buffer pool(s)
from Z:mysqldataib_buffer_pool
2016-05-13T18:02:26.700587Z 0 [Warning] Failed to set up SSL because of the foll
owing SSL library error: SSL context is not usable without certificate and priva
te key
2016-05-13T18:02:26.701587Z 0 [Note] Server hostname (bind-address): '127.0.0.1'
; port: 3306
2016-05-13T18:02:26.705587Z 0 [Note]   - '127.0.0.1' resolves to '127.0.0.1';
2016-05-13T18:02:26.706587Z 0 [Note] Server socket created on IP: '127.0.0.1'.
2016-05-13T18:02:26.723588Z 0 [Note] InnoDB: Buffer pool(s) load completed at 16
0513 21:02:26
2016-05-13T18:02:26.766590Z 0 [Note] Event Scheduler: Loaded 0 events
2016-05-13T18:02:26.769591Z 0 [Note] Z:mysqlbinmysqld: ready for connections.
Version: '5.7.12-log'  socket: ''  port: 3306  MySQL Community Server (GPL)

Пояснения для некоторых предупреждений [Warning] из log файла при запуске MySQL:

  • сообщение: 2016-05-13T18:02:26.282563Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use —explicit_defaults_for_timestamp server option (see doc
    umentation for more details)
    . Пояснение: Это предупреждение, что TIMESTAMP с неявным указанием значению по умолчанию устарело. Это просто информационное напоминание, с ним ни чего делать не надо. Смысл этого сообщения в том, что начиная с версии MySQL 5.6 для столбцов TIMESTAMP уже не работает нестандартное поведение (это когда при не указании значения сервер сам подставлял значение). Теперь столбцы TIMESTAMP начиная с версии MySQL 5.6 ведут как и все столбцы. Если значение не передано и по умолчанию тоже не задано, то будет записано NULL, а не текущее время как раньше. Опция explicit_defaults_for_timestamp, которая предназначалась для включения нестандартного поведения теперь является устаревшей и будет удалена.
  • сообщение: 2016-05-13T18:02:26.282563Z 0 [Warning] Insecure configuration for —secure-file-priv: Current value does not restrict location of generated files. Consider set ting it to a valid, non-empty path. Пояснение: Это предупреждающее сообщение, что не указана директория для выгружаемых и загружаемых файлов. Это не обязательный параметр. Его можно задать как директорию, которая должна существовать. По умолчанию, параметр не задан и MySQL может использовать файлы из любой директории. Для указания явным образом этой директивы добавьте в my.ini как выше в примере значение secure-file-priv=Z:/mysql/files, где Z:/mysql/files директория в которой MySQL будет ограничен при работе с внешними файлами.

Если все прошло удачно и не возникло ошибок [Error], то вы увидите в диспетчере задач Windows работающий процесс mysqld.exe, который и является MySQL сервером.

Подключение к MySQL из Workbench

Для настройки и администрирования MySQL сервера удобно пользоваться программой MySQL Workbench. Желательно использовать последнею актуальную версию Workbench, которая поддерживает данный релиз MySQL 5.7, потому что при использовании старых SQL менеджеров, не поддерживающих новую версию MySQL 5.7 можно повредить системные таблицы, например, при редактировании пользователей с помощью интерфейса устаревшего SQL менеджера.

Если сервер успешно запустился и нет критических ошибок, то можно выполнить подключение к нему из программы MySQL Workbench. Для этого запустите программу Workbench и сдайте новое подключение к MySQL серверу, в параметрах которого укажите следующее:

  • Hostname = 127.0.0.1
  • Port = 3306
  • Username = root
  • Password = пароль выданный при инициализации

Теперь, созданное подключение нужно сохранить, нажав Close. Если, еще до сохранения/закрытия создаваемого подключения попробовать протестировать соединение, то будет выдано сообщение о невозможности подключения к MySQL серверу по причине необходимости выполнить смену первичного пароля. Поэтому, просто закройте только что созданное подключение и оно сохраниться, и будет доступно на вкладке Home Workbench.

Запустите на вкладке Home только что созданное новое подключение к MySQL серверу. При первом подключении будет открыт диалог смены первичного, выданного при инициализации MySQL сервера пароля. Выполните смену пароля, установив новый пароль для root пользователя. Вы так же вы можете задать здесь пустой пароль для root, что может быть удобно, если это локальная установка MySQL, предназначенная для вашей среды web разработки.

Если все прошло успешно, то вы подключитесь к MySQL серверу и в Workbench откроется окно с опциями для выполнения различных манипуляций. Вы можете просмотреть статус сервера, его текущее состояние, имеющиеся подключения и т.п. Программа MySQL Workbench является достаточно мощным инструментом для управления, мониторинга, разработки и администрирования MySQL сервера. Так же через Workbench вы можете выполнять правку конфигурационного файла my.ini. Для этого вам нужно будет на вкладке Home открыть правой кнопкой мыши на редактирование созданное подключение к вашему portable MySQL серверу и на закладке System Profile отредактировать в параметре Configuration File путь к вашему my.ini и заново подключиться к серверу. После чего в пункте Option File в левой части окна Workbench вы сможете открыть графический диалог редактирования директив конфигурационного файла MySQL my.ini. В этом графическом интерфейсе вы сможете изменить или удалить существующие и добавить новые параметры. Все ваши изменения будут занесены в файл my.ini программой Workbench. Так же удобство этого графического интерфейса в том, что там отображаются параметры по умолчанию для не указанных явно в файле my.ini директив и приведены краткие описания к ним (детали см. в скринкасте).

Смена пароля root пользователя

Если вам не удается подключиться к MySQL серверу по причине неверного пароля, например, если вы не записали первичный пароль root пользователя, выданный сервером при инициализации, или вы хотите сменить пароль любого другого пользователя. В таких случаях вы можете выполнить изменение пароля пользователя MySQL при помощи SQL запроса путем запуска сервера с параметром init-file. Для этого создайте в домашней директории MySQL сервера текстовый файл с названием, например, mysql-init.txt (название файла может быть любым). В этот файл поместите SQL запрос вида:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
-- ИЛИ
ALTER USER 'root'@'localhost' IDENTIFIED BY ''; -- пустой пароль

где:

  • ‘root’@‘localhost’ — пользователь, для которого требуется сменить пароль;
  • ‘MyNewPass’ — новый пароль для пользователя. Если нужно задать пустой пароль, просто укажите пустые одинарные кавычки.

Теперь можно приступать к смене пароля. Для этого убедитесь, что процесс mysqld.exe не запущен в настоящий момент. Если это не так, то завершите в диспетчере задач Windows процесс mysqld.exe т.к. завершить его из командной строки при неизвестном пароле root пользователя не удастся. Затем откройте окно команд в папке /bin и выполните команду:

>mysqld --init-file=Z:/mysql/mysql-init.txt

где в параметре —init-file укажите путь к файлу с SQL запросом на смену пароля. В примере это Z:/mysql/mysql-init.txt файл.

Выполнение этой команды приведет к запуску MySQL сервера и к смене пароля указанного пользователя. Если все прошло успешно, то вы увидите в диспетчере задач запущенный процесс mysqld.exe и сможете подключиться к MySQL серверу под данным пользователем с новым паролем. Если при выполнении этой команды cmd зависает, ее окно нужно закрыть. После смены пароля файл mysql-init.txt можно удалить. Если при смене пароля допустили ошибки и пароль не сменился, и подключиться не получается, то нужно все сделать заново. Остановить сервер в диспетчере задач, выбрав завершение процесса, проверить файл и SQL запрос на смену пароля в нем и попробовать снова.

Запуск и остановка MySQL .bat файлами

Для удобства запуска и остановки вашего portable MySQL сервера можно в его домашнем каталоге создать два .bat файла командной строки. Например, start.bat и stop.bat, в которые записать команды запуска и остановки MySQL. Таким образом вы сможете запускать и останавливать ваш MySQL сервер простым кликом по соответствующему файлу, что удобно т.к. не нужно открывать cmd и набирать команду руками.

Пример файла запуска MySQL — start.bat:

@echo off
start Z:mysqlbinmysqld
exit

Пример файла остановки MySQL — stop.bat:

@echo off
start Z:mysqlbinmysqladmin -u root shutdown
exit

Настройки Windows для MySQL

Для удобства работы в cmd с mysqld можно добавить в конец переменной PATH через точку с запятой путь к директории с файлом mysqld.exe вашего MySQL сервера, например, Z:mysqlbin. Это нужно делать в настройках Windows: Computer > Properties > Advanced > System Properties > System Variables, где выбрать редактирование переменной Path. Тогда уже будет не важно в каком каталоге запущена cmd для вызова mysqld, значение пути будет барться из системной переменной Windows — PATH.

Также можно настроить запуск и остановку MySQL как системной службы, для чего выполните в cmd следующие необходимые вам команды:

Установка MySQL как службы с авто запуском:

>"Z:mysqlbinmysqld" --install

Установка MySQL как службы с ручным запуском:

>"Z:mysqlbinmysqld" --install-manual

Удаление MySQL службы:

>"Z:mysqlbinmysqld" --remove

Команды MySQL в cmd Windows

Ниже представлены некоторые необходимые команды для работы с MySQL сервером из командной строки Windows — cmd:

Запуск MySQL сервера:

>Z:mysqlbinmysqld

Вход к консоль mysql при наличии пароля:

>mysql -u root -p
Enter password: (enter root password here)

Вход к консоль mysql, если пароля у пользователя нет, то без ключа -p:

>mysql -u root

Начало строки вида mysql>… означает, что вы в данный момент находитесь в консоли MySQL сервера и здесь можно писать SQL запросы.

Выйти из консоли MySQL:

mysql>exit

Показать имена имеющихся баз данных:

>mysqlshow -u root

Показать имена таблиц базы данных mysql (служебная база данных MySQL)

>mysqlshow -u root mysql

Остановка в cmd запущенного MySQL сервера:

>mysqladmin -u root -p shutdown
Enter password: (enter root password here)

Остановка в cmd запущенного MySQL сервера если root не имеет пароля:

>mysqladmin -u root shutdown

Полезные ссылки:

Installing MySQL on Microsoft Windows Using a noinstall Zip Archive

The location of the options file is greyed out in

Database/Manage Connections/Local instance MySQL80/System Profile/Configuration file

My options file is located elsewhere. How do I change this?

Screenshot of Problem

asked Sep 13, 2020 at 11:20

Old Salt's user avatar

2

Can be that upgrading to MySQL Server 8.0 from several versions resulted in old values remaining unchanged in the

%AppData%RoamingMySQLWorkbenchserver_instances.xml

on my machine is c:Users<user>AppDataRoamingMySQLWorkbenchserver_instances.xml
Please open that file and try to search sys.config.path.lock and change value from 1 to 0 or remove that xml entry. restart workbench and you should be able to edit that path.

answered Sep 15, 2020 at 7:19

Marcin Marek's user avatar

1

The file ‘server_instances.xml’ must be edited to reflect the location of the options file. We can locate this file ourselves, as it’s usually in our roaming user profile. Edit the line starting with ‘<value type=»string»key=»sys.config.path»‘ to reflect the options file location. Alternately we can:

  1. Open MySQL Workbench 8.0 CE from the ‘Start’ menu
  2. Connect to the database
  3. Select Tools/Configuration/Backup Connections
  4. Choose a file name and save the file.
  5. Open the archive (I used 7-Zip)
  6. Open the file ‘server_instances.xml’ within the archive (I used
    Notepad++)
  7. Look for the line starting with ‘<value type=»string»
    key=»sys.config.path»‘
  8. Edit the value to reflect the full path and file name of your
    configuration file
  9. Save your edit back to the archive
  10. Select DatabaseManage Connections
  11. Select the database (‘Local instance MySQL80’ in my case) and
    delete the connection (Button under the list of connections)
  12. Select Tools/Configuration/Restore Connections
  13. Open the modified archive (using mySQL Workbench 8.0)

You should see the updated location in Database/Manage Connections/Local instance MySQL80/System Profile/Configuration File.

answered Sep 13, 2020 at 11:55

Old Salt's user avatar

Понравилась статья? Поделить с друзьями:
  • Как изменить mui windows 7
  • Как изменить mtu через командную строку
  • Как изменить mtu реестр
  • Как изменить mtu на микротике
  • Как изменить mtu на компьютере