Первоначальная настройка MySQL

Оглавление (нажмите, чтобы открыть):

Установка и первоначальная настройка MySQL

Чтобы установить пакет:
emerge -av mysql

Далее нужно проинициализировать служебные файлы и БД MySQL, а также задать пароль для пользователя root:
emerge —config =dev-db/mysql-5.1.51
или
/usr/bin/mysql_install_db

Далее заглядываем в файл /etc/mysql/my.cnf
Интересует строчка:
bind-address = 127.0.0.1
Если доступ к MySQL серверу необходимо обеспечить не только с локального компьютера, то сюда нужно вписать адрес интерфейса, на котором будет открыт порт для прослушивания.

Для редактирования пользователей MySQL, нужно редактировать системную таблицу, делается это так:
mysql -u root -p
USE mysql;
SELECT * FROM user;
Мы увидим содержимое системной таблицы с пользователями.
Часто необходимо некоему пользователю разрешить доступ с любого адреса сети, для этого выполняем следующий запрос:
UPDATE user SET Host = ‘%’ WHERE User = ‘root’ AND Host = ‘hostname’;
commit;
Где root — пользователь которому необходимо изменить права доступа, а hostname имя/адрес узла с которого необходимо осуществить доступ.
(если MySQL уже запущен, то для применения прав пользователей понадобится перезапуск сервера БД)

Установка и первоначальная настройка MySQL в linux. Оптимальная настройка MySQL сервера

Сегодня мы поговорим с Вами о настройке mysql под linux (unix, freebsd) на VPS/VDS сервере. Я не буду касаться аспектов установки mysql на сервер, благо, в интернете достаточно информации.

Где же хранятся настройки mysql?

На Вашем сервере настройки mysql могут находиться или в /etc/my.cnf , или в /etc/mysql/my.cnf , в крайнем случае используйте команду locate , find или им подобные с заданным именем файла

Как изменить настройки mysql?

Итак, файл найден, открыть его можно непосредственно через mc (midnight commander) + F4 или же используя VI(vim): vi my.cnf .

В случае с mc перед Вами будет старый добрый «Norton Commander», если же Вы не знаете, как пользоваться vi , Вам поможет man vi

Когда требуется настройка mysql? Анализ нагрузки mysql

Подсоединитесь с правами администратора базы данных к консоли mysql или же выполните запрос любым удобным для Вас способом, например через phpmyadmin , запрос:

Все запросы к mysql для проверки значения (мониторинга) тех или иных параметров необходимо выполнять из под пользователя с правами администратора Вашего mysql сервера.

Итак, если после выполнения этого запроса Вы видите огромную очередь, то уже есть над чем задуматься. Если в очереди находится больше нескольких сотен запросов, точно требуется тонкая настройка mysql.

А также большое значение в колонке Time во времени выполнения этих запросов указывает на возникновение «медленных» запросов. Также показателем к оптимизации mysql может быть вывод команды top , выполненный через linux консоль.

Вводим в консоли Top , после чего на английской раскладке нажимаем «О», зажимаем «shift» и нажимаем «K» до тех пор, пока %CPU не окажется вначале списка. Зажимаем «shift» и «N» и двигаем в начало списка %MEM . После чего нажимаем «Enter».

Если во главе списка у Вас оказывается «mysql» и показатели в столбце %CPU и %MEM довольно существенны (под 100% загрузка на процессор и почти полностью используется память), Вам точно необходима оптимизация mysql.

Тонкая настройка mysql. Кэширование средствами mysql

Перейдем к тюнингу mysql. Откройте файл my.cnf. Найдите раздел mysqld, все последующие переменные мы будем размещать именно в этом разделе, после строки:

Настраиваем кэш MYSQL

Внутренний кэш запросов mysql:

Query_cache_limit – «ограничиться» максимальным размером данных, которые можно поместить в кэш. Скажу Вам по опыту, в очень редких ситуациях «mysql» запросы будут возвращать данные размером больше 10 MB. Обычно и размера в 2-6 MB хватит с головой.

Например, укажите в my.cnf:

Query_cache_size – здесь Вы можете указать, сколько памяти выделить для внутреннего кэша запросов «mysql». В кэш будет добавляться результат запроса целиком («таблица», полученная в результате запроса).

Например, укажите в my.cnf:

Выбор значения query_cache_size

Совет первый: не указывайте слишком большое значение query_cache_size . Обычно указывается значение, равное одной десятой, одной пятой от размера доступной физической оперативной памяти.

Совет второй: указание также большого значения может существенно снизить эффективность использования кэша при частом обращении к нему при поиске данных. Тем более, если максимальный размер данных для помещения в кэш ограничен слишком «малым» значением query_cache_limit : поиск среди блоков небольших фрагментированных данных становится гораздо медленнее при большем объеме используемой памяти.

Как оптимально подобрать значения для query_cache_size, query_cache_limit?

После настройки my.cnf и перезапуска mysql (обычно: /etc/init.d/mysql restart, /etc/rc.d/mysql restart ).

Совет: впрочем, перезапускать mysql после изменения my.cnf нет надобности. Достаточно войти в консоль управления mysql с правами администратора или корневого пользователя root и выполнить запрос на изменение тех или иных переменных.

Set @@global.[название] =[новое значение my.cnf];

Например, для query_cache_size:

Какие mysql запросы не кэшируются (qcache_not_cached)?

  • insert, update запросы, по существу они приводят к очистки кэша таблицы, для которой выполняются;
  • запросы с применением пользовательских функций и процедур;
  • запросы, использующие временные таблицы;
  • запросы с включением локальных переменных;
  • запросы, использующие SELECT … FOR UPDATE, SELECT … INTO OUTFILE, SELECT … IN SHARE MODE, SELECT * FROM … WHERE autoincrement_col IS NULL, SELECT … INTO DUMPFILE;
  • запросы без обращения к таблицам;
  • запросы с включением некоторых недетерминированных функций: SLEEP(), NOW(),CURTIME(), LAST_INSERT_ID(), RAND();
  • в случае, если пользователь имеет права только на часть таблицы: некоторые ее колонки и т.п.
  • запросы с генерацией предупреждений (warnings).

Через сутки – другие зайдите в консоль управления mysql или выполните запрос любым, удобным для вас способом:

SHOW GLOBAL STATUS LIKE «Qcache%»

Здесь нас интересуют следующие переменные:

  • qcache_not_cached – количество запросов, не подлежащих кэшированию;
  • qcache_inserts – показывает количество результатов mysql запросов, добавляемых в кэш;
  • qcache_hits – показывает количество результатов mysql запросов, извлеченных из кэша, без реального обращения к базе данных;
  • qcache_free_memory – показывает свободную «доступную» память для кэширования;
  • qcache_lowmem_prunes – счетчик, который показывает, сколько раз mysql пришлось принудительно освободить память для добавления новых запросов в кэш mysql.

Эффективностью работы кэша является соотношение qcache_inserts к qcache_hits , которое показывает отношение результатов запросов помещенных в кеш, к результатам запросов, извлеченным из кеша.

Также «эффективность» работы кэширования можно рассчитать по формуле:

Qcache_hits / (Qcache_inserts + Qcache_not_cached)

Как узнать, что query_cache_size был выбран верно?

На это обычно указывает qcache_free_memory , отличный от нуля. При этом желательно, чтобы параметр qcache_lowmem_prunes стремился к 0. Если же qcache_lowmem_prunes очень велик, рекомендую увеличить query_cache_size .

Настраиваем многопоточность в mysql

Thread_concurrency – количество одновременных процессов, «обрабатывающих» конкурентные запросы к mysql. По документации советуют установить это значение, равное процессорам (ядрам) системы, умноженное на два.

Но и советуют обращать внимание на количество винчестеров, которое использует система, чтобы избежать излишней нагрузки на файловую систему. Тоесть, если Ваш сервер оснащен четырьмя Intel Xeon по 2.8 ГГЦ с hyper Threading, тогда Вам следует установить значение в my.cnf:

Как понять, что значение thread_concurrency установлено верно?

Во время большой нагрузки на сервер после изменения параметра thread_concurrency (наплыва посетителей или при помощи эмуляции нагрузки (например, при помощи Apache Bench с другого сервера )) понаблюдайте за количеством свободной оперативной памяти при помощи той же команды top . Кроме этого обратите внимание на параметр в строке Cpu(s): %wa .

Если значение этого параметра после изменения thread_concurrency выросло, и дошло до 60-90% , советую Вам снизить количество thread_concurrency . Обычно высокое значение %wa свидетельствует о возрастающей нагрузке на файловую подсистему (винчестер).

thread_cache_size – число потоков, которые сервер будет держать в кэше открытыми для обслуживания новых подсоединений. Можно установить равным значению max_connections + 1 (максимально возможному количеству соединений с б.д. +1). Но, чтобы достигнуть максимальной производительности, потребуется мониторинг переменной max_used_connections во время длительного промежутка времени (см. далее).

Т акже советую Вам просмотреть логии Mysql: обычно /var/log/mysql.log на предмет too many connections , когда mysql сервер отвергает подсоединение к базе данных из за того, что было достигнуто максимальное количество разрешенных подсоединений.

Например, при помощи команды grep, выполненной из ssh консоли linux:

Grep «Too many connections» /var/log/mysql.log | more

Совет: путь к логу mysql Вы сможете найти в файле my.cnf.

Если Вы нашли несколько строк с подобной ошибкой, тогда советую Вам увеличить значение max_connections , thread_cache_size , back_log , thread_concurrency :

Например для max_connections, thread_cache_size укажите в my.cnf:

Max_connections = 500 thread_cache_size = 501

Как узнать текущее значение параметра MYSQL, если оно не указано в my.cnf?

Для этого в консоли mysql с правами администратора mysql можно выполнить запрос:

SHOW VARIABLES LIKE «[имя переменных или wild card]»;

Например, текущее значение max_connections можно узнать так

SHOW VARIABLES LIKE «max_connections»;

Если Вы хотите вывести все переменные, содержащие в своем названии max, можно сформировать такой запрос в консоли mysql:

SHOW VARIABLES LIKE «%max%»;

Чтобы получить значения и имена всех без исключения параметров mysql, можно выполнить такой запрос в консоли mysql с правами администратора mysql:

Как подобрать оптимальное значение thread_cache_size?

Выполните из консоли mysql с правами рута или администратора баз данных запрос:

SHOW STATUS LIKE «Max_used_connections»;

И постоянно отслеживайте переменную max_used_connections через определенные промежутки времени, ее значение. Если значение max_used_connections = 72 , то устанавливаем значение thread_cache_size = 100 и выше (немногим больше max_used_connections ).

Настраиваем «очередь» конкурентных запросов back_log на подсоединение к mysql серверу.

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

Количество одновременно открытых таблиц в mysql.

table_cache (с версии Mysql с 5.1.3 – table_open_cache ) — количество открытых таблиц для всех потоков. Дело в том, что открытие таблиц – очень ресурсоемкий процесс, поэтому есть смысл «держать» определенное количество таблиц открытыми в кэше. Если у Вас на сервере используется большое количество таблиц одновременно, можно начать со значения в 1000:

Укажите в my.cnf:

SHOW STATUS LIKE «Opened_tables»;

Opened_tables характеризует число таблиц, открытых в обход кэша, желательно, чтобы ее значение стремилось к 0.

Таблицы какого размера хранить в памяти?

max_heap_table_size — максимальный допустимый размер временной таблицы (типа MEMORY (HEAP)), хранящейся в памяти. При превышении этого раз мера таблица будет «создана» на жестком диске.

Например, укажите в my.cnf:

tmp_table_size — максимальный размер памяти для временных таблиц, создаваемых MySQL, которые «хранятся» в оперативной памяти. Если размер временной таблицы превышает указанный, тогда таблица будет «создана» на диске.

Попробуйте установить значение в my.cnf равным 32 – 128 МБ:

Понаблюдайте также за состоянием created_tmp_disk_tables , ее значение должно стремиться к 0.

Для этого нужно выполнить запрос в консоли mysql:

SHOW STATUS LIKE «Created_tmp_disk_tables»;

Если значение created_tmp_disk_tables гораздо больше нуля, попробуйте увеличить параметр tmp_table_size

В MySQL существует 2 основных движка: InnoDB и MyISAM . Таблицы баз данных обоих типов могут существовать на одном сервере. При необходимости их можно конвертировать, использование MyISAM оправдано при преобладающем количестве операций с данными одного вида: например SELECT или INSERT.

Во всех остальных случаях выгоднее использовать InnoDB — этот движок обеспечивает лучшую сохранность данность и более высокую скорость работы с ними (блокируется при операции с таблицей строка, а не вся таблица как в случае с MyISAM).

Любой тюнинг MySQL — любая тонкая настройка должна начинаться с определения преобладающего количества таблиц определенного типа.

Определение типа таблиц в MySQL

Делается это при помощи запроса вида (для innodb):

SELECT table_schema, table_name
FROM INFORMATION_SCHEMA.TABLES
WHERE engine = «myisam»;

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

Конфигурация MySQL в my.cnf

Ниже рассматриваются основные опции при конфигурации MySQL с преимущественным использованием InnoDB .

Все дальнейшие модификации производятся в конфигурационном файле /etc/mysql/my.cnf

innodb_buffer_pool_size — размер буфера под InnoDB таблицы и индексы. При преобладании InnoDB таблиц стоит устанавливать значение равным 80% общего количества ОЗУ (8 Гб для сервера с 10 Гб RAM является нормой). Для более мощных серверов данное значение можно увеличивать еще вплоть до 95% доступной RAM.

innodb_buffer_pool_instances — очень важный параметр, определяющий количество инстансов, которые могут существовать, по умолчанию значение параметра равно 1, более оправданным является значение вычисляемое как сумма innodb_buffer_pool_size в гигабайтах и ядер CPU, деленная пополам.

innodb_buffer_pool_size in Gb + CPUs)/2

innodb_flush_log_at_trx_commit — значение устанавливается в 0, 1, 2. 0 означает, что лог сбрасывается на диск раз в секунду, вне зависимости от транзакций. При 1 лог сбрасывается при каждой завершенной транзакции. 2 — лог хранится в ОЗУ. Быстрее всего сервер баз данных будет работать при 0.

innodb_log_buffer_size — размер буфера лога 1-8 Мб являются хорошими значениями

innodb_log_file_size — максимальный размер каждого лог-файла. Можно увеличивать значение, это даст большую производительность поскольку не нужно будет ротировать лог слишком часто, открывать и закрывать новые файлы.

Общие параметры (не имеющие отношения к типу движка)

max_connections=2000 — устанавливаем параметр минимальным возможным при необходимости экономить ресурсы сервера, при возникновении в логе записей вида «Too many connections…» увеличиваем значение. 4000 клиентов является максимумом. Можно довести максимальное количество клиентов до 7000, но для стандартных сборок 4000 является пределом.

key_buffer=1024M — размер буфера под индексы в оперативной памяти. Оптимальное значение 20-25% доступной RAM. Если значение параметра слишком маленькое — данные начнут писаться в SWAP, что снизит скорость работы в разы.

Памяти под индексы выделяется достаточно если отношение значений Key_reads/Key_read_request оказывается кодировку по умолчанию можно так:

character-set-server = utf8
collation-server = utf8_unicode_ci

Защитить сервер от кривых рук программиста, способного join`ом на 10 миллионов записей похоронить даже 4-х процессорный сервер, можно так:

Буфер можно выставить 25% от общего объема оперативной памяти:

как я понял, это буфер обмена для всех демонов, т.е. реально будет: key_buffer_size / кол-во демонов = . M

Размер стека для каждого потока (демона):

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

Кол-во потоков, которые сервер должен поместить в кэш для повторного использования:

т.е. если к примеру есть часто повтояющийся SELECT * FROM myTable, то он попадет в кэш, чтобы не выполняться каждый раз.

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

Установить максимальный размер таблиц типа MEMORY (HEAP) можно так:

Размер буфера, выделяемого демону при выполнении операций сортировки. Для ускорения операций ORDER BY, GROUP BY рекомендуется увеличить данное значение

Размер буфера выделяемого для сортировки MyISAM индексов с помощью оператора REPAIR TABLE или при создании индексов операторами CREATE TABLE, ALTER TABLE:

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

Размер буфера, выделяемого для чтения строк после сортировки, что-бы избежать повторного поиска на диске. Увеличение значения данной переменной может существенно увеличить эффективность конструкции ORDER BY. Имейте в виду, так как данный буфер выделяется для каждого демона, не следует устанавливать чересчур большое значение.

Размер буфера использующегося при операциях объединения таблиц (если не используются индексы). Буфер устанавливается один раз во время каждой операции объединения

Величина буфера, который используется для индексов, всех демонов. Если используется много DELETE или INSERT запросов к таблицам с большим кол — индексов, то увеличение значения повысит скорость выполнения таких запросов. Для достижения еще большей скорости нужно использовать LOCK TABLES. Советуют устанавливать не больше чем 1/3 озу и не больше объема всех б.д.

Максимально количество соединений клиентов с сервером

Задает максимально количество неудачных попыток подключения с хоста. Значение по-умолчанию 10. При достижении данного значения, хост блокируется. Разблокировать хост можно с помощью: mysql> FLUSH HOSTS

Максимальное число одновременных подключений для одной учетной записи MySQL. Значение по-умолчанию 0, отсутствие каких-либо ограничений

table_cache старое название для переменной table_open_cache, в нем указывается к оличество открытых таблиц для всех демонов. Увеличение значения приведет к увеличению количества используемых дескрипторов файла. Советуют рассчитывать по формуле : количество одновременных соединений * количество открытых таблиц в соединении. Т .е. для каждого соединения используется свои ячейки из кэша. Для проверки можно запустить mysqltuner.pl

Количество одновременно запускаемых демонов, советуют формулу: количество ядер процессора умножаем на 2

Размер буфера для соединений, устанавливаемый сервером в промежутках между запросами

Максимальный объем одного SQL-запроса к серверу. Изначально буфер сообщений имеет размер net_buffer_length и при необходимости, автоматически увеличивается до значения данной переменной.

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

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

Полезная настройка: объем памяти, выделенной для кэширования результатов запросов. По-умолчанию данный кэш отключен, значение — 0

Полезная настройка: вид кэширования:

0 — ничего не кэшировать (по-умолчанию)
1 — кэшировать все запросы, кроме SELECT SQL_NO_CACHE
2 — кэшировать только запросы, начинающихся с конструкции SELECT SQL_CACHE

Настройки innodb (извините, что без пояснений, просто оставлю их тут, чтобы не забыть):

innodb_data_home_dir = /var/lib/mysql
innodb_data_file_path = ibdata1:2000M;ibdata2:10M :autoextend
innodb_log_group_home_dir = /var/lib/mysql
innodb_buffer_pool_size = 64M
innodb_additional_mem_poo l_size = 32M
innodb_file_io_threads = 8
innodb_lock_wait_timeout = 50
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_c ommit = 2
innodb_flush_method = O_DIRECT

Настройки блока для создания дампов

Старое название следующей настройки: character-set-server = utf8 выдает ошибку: /usr/bin/mysql_upgrade: unknown variable «character-set-server=utf 8

Надеюсь, кому-нибудь помог разобраться, удачки в освоении MySQL.

Начиная с версии 3.22 MySQL может считывать принятые по умолчанию параметры запуска для сервера и клиентов из файлов параметров. В Unix считывание принятых по умолчанию параметров MySQL производится из следующих файлов:

DATADIR является каталогом данных MySQL (обычно «/usr/local/mysql/data» для бинарной установки или «/usr/local/var» для установки из исходных текстов). Обратите внимание, что это тот каталог, который был задан во время настройки, а не указанный при помощи –datadir при запуске mysqld! (–datadir не оказывает влияния на просмотр файлов параметров сервером, так как их просмотр происходит до обработки аргументов командной строки).

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

Приводим список программ, поддерживающих файлы параметров: mysql, mysqladmin, mysqld, mysqld_safe, mysql.server, mysqldump, mysqlimport, mysqlshow, mysqlcheck, myisamchk и myisampack.

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

Параметры my.cnf MySQL 5.5 (кодировки UTF8)

Что такое utf8mb4? utf8mb4 — набор символов, используемый для хранения 4 байта в MySQL, внедрён в 2010 году начиная с версии 5.5.3. Главное отличие utf8mb4 от utf8 в том, что utf8mb4 задействует более полные возможности кодировки UTF8, позволяя поддерживать все языки и специальные символы, не поддерживающие utf8 (например японский язык или смайлики из ios — emoji). Однако, как можно догадаться, если utf8mb4 использует для хранения 1 символа 4 байта, то база данных может увеличиться в размере, если сравнивать с точно такой же базой данных в utf8. В наше время немного увеличенный размер базы данных не является существенно проблему, по этому, если вы стоите перед выбором использовать utf8 или utf8mb4 набор символов — используйте utf8mb4.

Некоторые параметры my.cnf в MySQL 5.5.22 устарели (deprecated) и были заменены другими и удалены. Например, изменение кодировки по умолчанию в my.cnf в секции будет выглядит так:

#. character_set_server = utf8 # ранее default-character-set = utf8 и character_set_server = utf8 collation-server = utf8_unicode_ci # ранее collation_server = utf8_unicode_ci

collation-server = utf8_unicode_ci или collation-server = utf8_general_ci? utf8_unicode_ci поддерживает expansions в отличии от utf8_general_ci, то есть умеет сопоставлять один символ нескольким (например — в Германии ß = ss). Подобнее Unicode Character Sets .

Сравнение utf8_unicode_ci _ci без учета регистра, utf8_unicode_bin _bin с учетом регистра.

Параметры my.cnf

> ee /etc/my.cnf # The following options will be passed to all MySQL clients #password = your_password port = 3306 socket = /tmp/mysql.sock # Here follows entries for some specific programs # The MySQL server port = 3306 socket = /tmp/mysql.sock skip-locking key_buffer_size = 16M max_allowed_packet = 1M table_open_cache = 64 sort_buffer_size = 512K net_buffer_length = 8K read_buffer_size = 256K read_rnd_buffer_size = 512K myisam_sort_buffer_size = 8M default-character-set = utf8 character_set_server = utf8 collation_server = utf8_unicode_ci bind-address = 127.0.0.1 # Don»t listen on a TCP/IP port at all. This can be a security enhancement, # if all processes that need to connect to mysqld run on the same host. # All interaction with mysqld must be made via Unix sockets or named pipes. # All interaction with mysqld must be made via Unix sockets or named pipes. # Note that using this option without enabling named pipes on Windows # (via the «enable-named-pipe» option) will render mysqld useless! # #skip-networking #.

Мастер Йода рекомендует:  Правила написания сообщений об ошибках

Установка сервера MySQL из репозитория

Для установки сервера MySQL в Debian достаточно набрать команду:
apt-get install mysql-server

В операционной системе RHEL / CentOS также все довольно просто:
yum install mysql-server

Обратите внимание: после установки сервера MySQL его необходимо запустить. Для этого (как в Debian, так и в RHEL / CentOS) необходимо выполнить команду:
service mysqld start

Установка клиента MySQL из репозитория

Для установки клиента mysql запустите в debian следующую команду:
apt-get install mysql-client

В случае, если у Вас установлен RHEL / CentOS, выполните такую команду:
yum install mysql

При этом будет установлена актуальная (на момент выполнения команды) версия MySQL. На момент написания статьи это версия 5.5.

Установка библиотек MySQL для поддержки компиляции (MySQL development) из репозитория

Если Вы устанавливаете MySQL не по своему желанию, а потому, что это необходимо для установки какой-либо программы (например, asterisk, поддержка cdr_mysql), то просто установить сервер (и/или клиент) MySQL недостаточно. Необходимо также поставить библиотеки MySQL, чтобы компиляция зависящей от MySQL программы была успешной.

Для debian это будет команда:
apt-get install libmysqlclient-dev

Для RHEL / CentOS выполните:
yum install mysql-devel

Первоначальная настройка MySQL

Даже в случае, если Вы устанавливаете MySQL на домашнем/тестовом компьютере (не говоря уже об установке в производственной среде) необходимо совершить хотя бы минимальные действия по настройке MySQL сервера (клиента, как правило, настраивать не нужно). Например, задать пароль пользователя root в системе MySQL. По умолчанию пароль для root — пустой (без пароля).

Задать пароль MySQL root

Для простой установки пароля пользователю root (в случае, если пароль не был запрошен при установке самого MySQL) выполните команду:

Где rootpass — пароль для пользователя root. Совет : если Вы хотите, чтобы эта команда не отображалась в истории команд (и никто впоследствии не смог бы подсмотреть пароль рута из истории команд), перед этой командой просто поставьте пробел. То есть:
/usr/bin/mysqladmin -u root password «rootpass»

Настройка MySQL для работы в производственной среде

Выполните из командной строки:
/usr/bin/mysql_secure_installation

Данный скрипт (если ответить на задаваемые вопросы yes) — установит новый пароль root (пароль будет запрошен), удалит пользователя anonymous, запретит логинится с удаленных машин под root-ом, удалит тестовую базу.

Создать необходимую базу данных и пользователя для нее

Для создания базы данных в MySQL необходимо сначала подключиться к MySQL, после чего выполнить mysql запрос для создания базы данных. Для этого выполните из командной строки linux:
mysql -u root -p

При этом будет запрошен пароль для пользователя, имя которого указано после опции -u (в данном случае — пароль пользователя root). При правильном введении пароля появится приглашение MySQL к вводу команд:
mysql>_

Это командная строка MySQL. Все SQL запросы и команды на создание баз данных, пользователей и т.д. вводятся в этой командной строке.

Для создания базы данных выполните в командной строке MySQL:
create database имя-базы-данных character set кодировка-базы-данных;

например:
create database asterisk character set utf8;

Кодировку можно не указывать, при этом будет использоваться кодировка по умолчанию (см. настройки сервера MySQL):
create database mydatabase;

Теперь создадим пользователя MySQL и дадим ему полные права на созданную базу данных:
grant all privileges on имя-базы-данных.* to имя-пользователя @localhost identified by » пароль-пользователя «;
например:
grant all privileges on asterisk.* to [email protected] identified by «asterisk_password»;

Оптимальная настройка MySQL сервера. Установка и первоначальная настройка MySQL в linux

Дефолтные конфигурационные параметры в Mysql рассчитаны на микроскопические базы данных, работающие под малыми нагрузками на скромном железе.

Настройка некоторых параметров может повысить производительность базы данных в сотни раз!

Процесс оптимальной настройки Mysql состоит из двух частей — первоначальная настройка и корректировка параметров во время работы. Корректировка параметров в рабочем режиме во многом зависит от специфики Вашей системы и ее мониторинга. Разберемся с параметрами и рекомендациями по установке их значений.

innodb_buffer_pool_size

Если Вы используете только InnoDB таблицы, устанавливайте это значение максимально возможным для Вашей системы. Буфер InnoDB кеширует и данные и индексы. Поэтому значение этого ключа стоит устанавливать в 70%. 80% всей доступной памяти.

# При том, что на нашем сервере 32Гб оперативной памяти

innodb_log_file_size

Эта опция влияет на скорость записи. Она устанавливает размер лога операций (так операции сначала записываются в лог, а потом применяются к данным на диске). Чем больше этот лог, тем быстрее будут работать записи (т.к. их поместится больше в файл лога). Файлов всегда два, а их размер одинаковый. Значением параметра задается размер одного файла:

# Так два файла дадут размер лога в 2x512M = 1G

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

innodb_log_buffer_size

Это размер буфера транзакций, которые не были еще закомичены. Значение этого параметра стоит менять в случаях, если вы используете большие поля вроде BLOB или TEXT.

# Значения по умолчанию в 1М должно быть достаточно для большинства случаев

innodb_file_per_table

Если включить эту опцию, Innodb будет сохранять данные всех таблиц в отдельных файлах (вместо одного файла по умолчанию). Прироста в производительности не будет, однако есть ряд преимуществ:

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

innodb_file_per_table = ON

# С версии 5.6 этот параметр включен по умолчанию

innodb_flush_method

Этот параметр определяет логику сброса данных на диск. В современных системах при использовании RAID и резервных узов, вы будете выбирать между O_DSYNC и O_DIRECT :

# Помните об обязательном использовании резервных узлов (например, реплик)

innodb_flush_log_at_trx_commit

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

Тут следует руководствоваться такой логикой:

  • innodb_flush_log_at_trx_commit = 1 для случаев, когда сохранность данных — это приоритет номер один.
  • innodb_flush_log_at_trx_commit = 2 для случаев, когда небольшая потеря данных не критична (например, вы используете дублирование и сможете восстановить небольшую потерю). В этом случае транзакции будут сбрасываться в лог на диск только раз в секунду.

Устанавливайте значение на свое усмотрение, однако в большинстве случаев подойдет второй вариант:

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

query_cache_size

Значение этого параметра определяет сколько памяти стоит использовать под кеш запросов. Самый правильный подход — не полагаться на этот механизм. На практике он работает очень неэффективно. Так, весь кеш запросов для определенной таблицы сбрасывается всякий раз, когда в таблицу вносится хотя бы одно изменение. Это может привести к тому, что включение кеширования даже замедлит базу данных:

# Однако убедитесь, что используете индексы для обеспечения высокой скорости работы запросов

max_connections

Не следует изменять значение этого параметра на старте. Однако, если вы получаете ошибки «Too many connections» , эту опцию стоит поднимать. Она определяет максимальное количество одновременных соединений с базой данных:

# Поднимайте значение постепенно при появлении ошибок соединений

Настройки по умолчанию скорее всего не подойдут. Поэтому обязательно стоит пройтись по указанным параметрам в статье и подобрать для них значения. Если совсем лень — .

Начиная с версии 3.22 MySQL может считывать принятые по умолчанию параметры запуска для сервера и клиентов из файлов параметров.

В Unix считывание принятых по умолчанию параметров MySQL производится из следующих файлов:

DATADIR является каталогом данных MySQL (обычно /usr/local/mysql/data для бинарной установки или /usr/local/var для установки из исходных текстов). Обратите внимание, что это тот каталог, который был задан во время настройки, а не указанный при помощи —datadir при запуске mysqld ! (—datadir не оказывает влияния на просмотр файлов параметров сервером, так как их просмотр происходит до обработки аргументов командной строки).

В Windows считывание принятых по умолчанию параметров MySQL производится из следующих файлов:

Обратите внимание на то, что в Windows все пути необходимо указывать при помощи / вместо \. Если необходимо использовать \, то его нужно указать дважды, так как \ является знаком перехода в MySQL.

MySQL пытается прочитать файлы параметров в указанном выше порядке. Если существует несколько таких файлов, то параметр, указанный в файле, идущем позже, имеет преимущество над таким же параметром, указанным в файле, расположенном ранее. Параметры, указанные в командной строке, обладают более высоким приоритетом по отношению к параметрам, указанным в любом из файлов параметров. Некоторые параметры можно задавать при помощи переменных окружения. Параметры, указанные в командной строке или в файлах параметров, обладают преимуществом по отношению к переменным окружения (see Приложение F, Переменные окружения ).

Приводим список программ, поддерживающих файлы параметров: mysql , mysqladmin , mysqld , mysqld_safe , mysql.server , mysqldump , mysqlimport , mysqlshow , mysqlcheck , myisamchk и myisampack .

Любой параметр, который может быть задан в командной строке при запуске программы MySQL, может быть также задан в файле параметров (без предваряющего двойного слэша). Чтобы получить список доступных параметров, следует запустить программу с параметром —help .

Файлы параметров могут содержать строки следующего вида:

Строки комментариев начинаются с символа » # » или » ; «. Пустые строки игнорируются.

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

Эквивалент —option в командной строке.

Эквивалент —option=value в командной строке.

Эквивалент —set-variable variable=value в командной строке. Данный синтаксис необходимо использовать для задания переменных mysqld . Заметьте, —set-variable не используется с MySQL 4.0. Просто используйте —variable=value .

Группа client обеспечивает возможность задавать параметры, относящиеся ко всем клиентам MySQL (кроме самого mysqld). Эта группа великолепно подходит для указания пароля, используемого при подсоединении к серверу (но при этом следует убедиться, что разрешение на чтение и запись этого файла есть только у вас).

Обратите внимание на то, что для параметров и значений все введенные перед ними и после них пробелы автоматически удаляются. В строках значений можно использовать такие экранирующие секвенции: » \b «, » \t «, » \n «, » \r «, » \\ » и » \s » (» \s » — это пробел).

Пример типичного глобального файла параметров:

Port=3306 socket=/tmp/mysql.sock port=3306 socket=/tmp/mysql.sock set-variable = key_buffer_size=16M set-variable = max_allowed_packet=1M quick

Пример типичного файла параметров пользователя:

# Указанный пароль будет направлен всем стандартным клиентам MySQL password=my_password no-auto-rehash set-variable = connect_timeout=2 interactive-timeout

Если у вас дистрибутив исходного кода, то примеры конфигурационных файлов с именами my-xxxx.cnf можно найти в каталоге support-files . В случае бинарного дистрибутива следует обратиться к каталогу DIR/support-files , где DIR — имя каталога установки MySQL (обычно /usr/local/mysql). На данный момент там приведены примеры файлов конфигурации для малых, средних, больших и очень больших систем. Чтобы поэкспериментировать с файлом, можно скопировать my-xxxx.cnf в свой домашний каталог (переименуйте копию в.my.cnf).

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

Обратите внимание на то, что указанные выше параметры должны идти первыми в командной строке! Однако параметр —print-defaults может использоваться сразу после команд —defaults-xxx-file .

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

Прямая ссылка: mysql-5.5.23-win32.msi
Скачайте самораспаковывающийся архив «Windows (x86, 32-bit), MSI Installer» и запустите его.

Установка MySQL в картинках

Нажмите в данном окне выборочную установку компонентов «Custom».

Теперь приступим к настройке MySQL сервера.

Выбираем детализированную настройку — «Detailed Configuration».

Отмечаем пункт «Developer Machine». Мы ведь разработчики – правда? 🙂

Выбрав пункт «Multifunctional Database», вы сможете работать как с таблицами типа InnoDB (с возможностью использования транзакций), так и с высокоскоростной MyISAM (как правило для веб-разработок используется именно этот тип таблиц).

Выбор диска и директории для хранения таблиц типа InnoDB.

В данном диалоговом окне выбирается максимально возможное количество подключений к серверу MySQL. При выборе «Decision Support (DSS)/OLAP», максимальное количество подключений будет ограничено двадцатью, чего более чем достаточно при установке сервера на домашнем компьютере и отсутствии большого количества одновременных подключений.

Отметив «Enable TCP/IP Networking» мы включаем поддержку TCP/IP соединений и выбираем порт, через который они будут осуществляться. Стандартным для сервера MySQL является порт 3306. Отметив «Enable Strict Mode», мы задаем режим строгого соответствия стандарту SQL (данную опцию рекомендуется оставлять включенной).

Обратите внимание на выставление настроек данного окна. Отметив «Manual Selected Default Character Set / Collation» и выбрав из ниспадающего меню «cp1251» определяем, что изначально для таблиц будет использоваться кодировка Cyrillic Windows (cp1251), что означает корректную работу с русским языком в данной кодировке.

Если отметить «Install As Windows Service», сервер будет запускаться в виде сервиса, что является рекомендуемым способом запуска. Ниже, в ниспадающем списке, задается имя сервиса. Далее, уберите галочку рядом с «Launch the MySQL Server automatically» — мы будем запускать сервер вручную. Также поставьте галочку рядом с «Include Bin Directory in Windows PATH» — это позволит установить видимость директории «bin», для командной строки.

Установите пароль пользователя «root». Советую сделать это. Поставьте хотя бы какой-нибудь простенький пароль, только не оставляйте поле пустым, это убережёт вас от возможных неприятностей в дальнейшем.

В данном окне обратите внимание на строку «Write configuration file», которая указывает на месторасположение — «my.ini», далее, его необходимо будет немного отредактировать.

Откройте для редактирования файл «my.ini».

  1. В раздел , после строки:
    port=3306
    Добавьте строку определяющую каталог содержащий файлы описания кодировок:
    character-sets-dir=»C:/Program Files/MySQL/MySQL Server 5.5/share/charsets»
  2. В раздел , после строки:
    port=3306
    Добавьте следующие две строки, первая из которых вам уже известна, вторая – устанавливает кодировку в которой данные передаются MySQL:
    character-sets-dir=»C:/Program Files/MySQL/MySQL Server 5.5/share/charsets»
    init-connect=»SET NAMES cp1251″
  3. Далее, найдите строку:
    default-storage-engine=INNODB
    Замените изначально устанавливаемый тип таблиц на MYISAM:
    default-storage-engine=MYISAM

Сохраните изменения и закройте файл «my.ini».
Установка и настройка сервера MySQL – завершена.

Сегодня мы поговорим с Вами о настройке mysql под linux (unix, freebsd) на VPS/VDS сервере. Я не буду касаться аспектов установки mysql на сервер, благо, в интернете достаточно информации.

Где же хранятся настройки mysql?

На Вашем сервере настройки mysql могут находиться или в /etc/my.cnf , или в /etc/mysql/my.cnf , в крайнем случае используйте команду locate , find или им подобные с заданным именем файла

Как изменить настройки mysql?

Итак, файл найден, открыть его можно непосредственно через mc (midnight commander) + F4 или же используя VI(vim): vi my.cnf .

В случае с mc перед Вами будет старый добрый «Norton Commander», если же Вы не знаете, как пользоваться vi , Вам поможет man vi

Когда требуется настройка mysql? Анализ нагрузки mysql

Подсоединитесь с правами администратора базы данных к консоли mysql или же выполните запрос любым удобным для Вас способом, например через phpmyadmin , запрос:

Все запросы к mysql для проверки значения (мониторинга) тех или иных параметров необходимо выполнять из под пользователя с правами администратора Вашего mysql сервера.

Итак, если после выполнения этого запроса Вы видите огромную очередь, то уже есть над чем задуматься. Если в очереди находится больше нескольких сотен запросов, точно требуется тонкая настройка mysql.

А также большое значение в колонке Time во времени выполнения этих запросов указывает на возникновение «медленных» запросов. Также показателем к оптимизации mysql может быть вывод команды top , выполненный через linux консоль.

Вводим в консоли Top , после чего на английской раскладке нажимаем «О», зажимаем «shift» и нажимаем «K» до тех пор, пока %CPU не окажется вначале списка. Зажимаем «shift» и «N» и двигаем в начало списка %MEM . После чего нажимаем «Enter».

Если во главе списка у Вас оказывается «mysql» и показатели в столбце %CPU и %MEM довольно существенны (под 100% загрузка на процессор и почти полностью используется память), Вам точно необходима оптимизация mysql.

Тонкая настройка mysql. Кэширование средствами mysql

Перейдем к тюнингу mysql. Откройте файл my.cnf. Найдите раздел mysqld, все последующие переменные мы будем размещать именно в этом разделе, после строки:

Настраиваем кэш MYSQL

Внутренний кэш запросов mysql:

Query_cache_limit – «ограничиться» максимальным размером данных, которые можно поместить в кэш. Скажу Вам по опыту, в очень редких ситуациях «mysql» запросы будут возвращать данные размером больше 10 MB. Обычно и размера в 2-6 MB хватит с головой.

Например, укажите в my.cnf:

Query_cache_size – здесь Вы можете указать, сколько памяти выделить для внутреннего кэша запросов «mysql». В кэш будет добавляться результат запроса целиком («таблица», полученная в результате запроса).

Например, укажите в my.cnf:

Выбор значения query_cache_size

Совет первый: не указывайте слишком большое значение query_cache_size . Обычно указывается значение, равное одной десятой, одной пятой от размера доступной физической оперативной памяти.

Совет второй: указание также большого значения может существенно снизить эффективность использования кэша при частом обращении к нему при поиске данных. Тем более, если максимальный размер данных для помещения в кэш ограничен слишком «малым» значением query_cache_limit : поиск среди блоков небольших фрагментированных данных становится гораздо медленнее при большем объеме используемой памяти.

Как оптимально подобрать значения для query_cache_size, query_cache_limit?

После настройки my.cnf и перезапуска mysql (обычно: /etc/init.d/mysql restart, /etc/rc.d/mysql restart ).

Совет: впрочем, перезапускать mysql после изменения my.cnf нет надобности. Достаточно войти в консоль управления mysql с правами администратора или корневого пользователя root и выполнить запрос на изменение тех или иных переменных.

Set @@global.[название] =[новое значение my.cnf];

Например, для query_cache_size:

Какие mysql запросы не кэшируются (qcache_not_cached)?

  • insert, update запросы, по существу они приводят к очистки кэша таблицы, для которой выполняются;
  • запросы с применением пользовательских функций и процедур;
  • запросы, использующие временные таблицы;
  • запросы с включением локальных переменных;
  • запросы, использующие SELECT … FOR UPDATE, SELECT … INTO OUTFILE, SELECT … IN SHARE MODE, SELECT * FROM … WHERE autoincrement_col IS NULL, SELECT … INTO DUMPFILE;
  • запросы без обращения к таблицам;
  • запросы с включением некоторых недетерминированных функций: SLEEP(), NOW(),CURTIME(), LAST_INSERT_ID(), RAND();
  • в случае, если пользователь имеет права только на часть таблицы: некоторые ее колонки и т.п.
  • запросы с генерацией предупреждений (warnings).

Через сутки – другие зайдите в консоль управления mysql или выполните запрос любым, удобным для вас способом:

SHOW GLOBAL STATUS LIKE «Qcache%»

Здесь нас интересуют следующие переменные:

  • qcache_not_cached – количество запросов, не подлежащих кэшированию;
  • qcache_inserts – показывает количество результатов mysql запросов, добавляемых в кэш;
  • qcache_hits – показывает количество результатов mysql запросов, извлеченных из кэша, без реального обращения к базе данных;
  • qcache_free_memory – показывает свободную «доступную» память для кэширования;
  • qcache_lowmem_prunes – счетчик, который показывает, сколько раз mysql пришлось принудительно освободить память для добавления новых запросов в кэш mysql.

Эффективностью работы кэша является соотношение qcache_inserts к qcache_hits , которое показывает отношение результатов запросов помещенных в кеш, к результатам запросов, извлеченным из кеша.

Также «эффективность» работы кэширования можно рассчитать по формуле:

Qcache_hits / (Qcache_inserts + Qcache_not_cached)

Как узнать, что query_cache_size был выбран верно?

На это обычно указывает qcache_free_memory , отличный от нуля. При этом желательно, чтобы параметр qcache_lowmem_prunes стремился к 0. Если же qcache_lowmem_prunes очень велик, рекомендую увеличить query_cache_size .

Настраиваем многопоточность в mysql

Thread_concurrency – количество одновременных процессов, «обрабатывающих» конкурентные запросы к mysql. По документации советуют установить это значение, равное процессорам (ядрам) системы, умноженное на два.

Но и советуют обращать внимание на количество винчестеров, которое использует система, чтобы избежать излишней нагрузки на файловую систему. Тоесть, если Ваш сервер оснащен четырьмя Intel Xeon по 2.8 ГГЦ с hyper Threading, тогда Вам следует установить значение в my.cnf:

Как понять, что значение thread_concurrency установлено верно?

Во время большой нагрузки на сервер после изменения параметра thread_concurrency (наплыва посетителей или при помощи эмуляции нагрузки (например, при помощи Apache Bench с другого сервера )) понаблюдайте за количеством свободной оперативной памяти при помощи той же команды top . Кроме этого обратите внимание на параметр в строке Cpu(s): %wa .

Если значение этого параметра после изменения thread_concurrency выросло, и дошло до 60-90% , советую Вам снизить количество thread_concurrency . Обычно высокое значение %wa свидетельствует о возрастающей нагрузке на файловую подсистему (винчестер).

thread_cache_size – число потоков, которые сервер будет держать в кэше открытыми для обслуживания новых подсоединений. Можно установить равным значению max_connections + 1 (максимально возможному количеству соединений с б.д. +1). Но, чтобы достигнуть максимальной производительности, потребуется мониторинг переменной max_used_connections во время длительного промежутка времени (см. далее).

Т акже советую Вам просмотреть логии Mysql: обычно /var/log/mysql.log на предмет too many connections , когда mysql сервер отвергает подсоединение к базе данных из за того, что было достигнуто максимальное количество разрешенных подсоединений.

Например, при помощи команды grep, выполненной из ssh консоли linux:

Grep «Too many connections» /var/log/mysql.log | more

Совет: путь к логу mysql Вы сможете найти в файле my.cnf.

Если Вы нашли несколько строк с подобной ошибкой, тогда советую Вам увеличить значение max_connections , thread_cache_size , back_log , thread_concurrency :

Например для max_connections, thread_cache_size укажите в my.cnf:

Max_connections = 500 thread_cache_size = 501

Как узнать текущее значение параметра MYSQL, если оно не указано в my.cnf?

Для этого в консоли mysql с правами администратора mysql можно выполнить запрос:

SHOW VARIABLES LIKE «[имя переменных или wild card]»;

Например, текущее значение max_connections можно узнать так

SHOW VARIABLES LIKE «max_connections»;

Если Вы хотите вывести все переменные, содержащие в своем названии max, можно сформировать такой запрос в консоли mysql:

SHOW VARIABLES LIKE «%max%»;

Чтобы получить значения и имена всех без исключения параметров mysql, можно выполнить такой запрос в консоли mysql с правами администратора mysql:

Как подобрать оптимальное значение thread_cache_size?

Выполните из консоли mysql с правами рута или администратора баз данных запрос:

SHOW STATUS LIKE «Max_used_connections»;

И постоянно отслеживайте переменную max_used_connections через определенные промежутки времени, ее значение. Если значение max_used_connections = 72 , то устанавливаем значение thread_cache_size = 100 и выше (немногим больше max_used_connections ).

Настраиваем «очередь» конкурентных запросов back_log на подсоединение к mysql серверу.

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

Количество одновременно открытых таблиц в mysql.

table_cache (с версии Mysql с 5.1.3 – table_open_cache ) — количество открытых таблиц для всех потоков. Дело в том, что открытие таблиц – очень ресурсоемкий процесс, поэтому есть смысл «держать» определенное количество таблиц открытыми в кэше. Если у Вас на сервере используется большое количество таблиц одновременно, можно начать со значения в 1000:

Мастер Йода рекомендует:  Почему новые условия использования GitHub всколыхнули общественность разбор ситуации без лишних

Укажите в my.cnf:

SHOW STATUS LIKE «Opened_tables»;

Opened_tables характеризует число таблиц, открытых в обход кэша, желательно, чтобы ее значение стремилось к 0.

Таблицы какого размера хранить в памяти?

max_heap_table_size — максимальный допустимый размер временной таблицы (типа MEMORY (HEAP)), хранящейся в памяти. При превышении этого раз мера таблица будет «создана» на жестком диске.

Например, укажите в my.cnf:

tmp_table_size — максимальный размер памяти для временных таблиц, создаваемых MySQL, которые «хранятся» в оперативной памяти. Если размер временной таблицы превышает указанный, тогда таблица будет «создана» на диске.

Попробуйте установить значение в my.cnf равным 32 – 128 МБ:

Понаблюдайте также за состоянием created_tmp_disk_tables , ее значение должно стремиться к 0.

Для этого нужно выполнить запрос в консоли mysql:

SHOW STATUS LIKE «Created_tmp_disk_tables»;

Если значение created_tmp_disk_tables гораздо больше нуля, попробуйте увеличить параметр tmp_table_size

Установка сервера MySQL из репозитория

Для установки сервера MySQL в Debian достаточно набрать команду:
apt-get install mysql-server

В операционной системе RHEL / CentOS также все довольно просто:
yum install mysql-server

Обратите внимание: после установки сервера MySQL его необходимо запустить. Для этого (как в Debian, так и в RHEL / CentOS) необходимо выполнить команду:
service mysqld start

Установка клиента MySQL из репозитория

Для установки клиента mysql запустите в debian следующую команду:
apt-get install mysql-client

В случае, если у Вас установлен RHEL / CentOS, выполните такую команду:
yum install mysql

При этом будет установлена актуальная (на момент выполнения команды) версия MySQL. На момент написания статьи это версия 5.5.

Установка библиотек MySQL для поддержки компиляции (MySQL development) из репозитория

Если Вы устанавливаете MySQL не по своему желанию, а потому, что это необходимо для установки какой-либо программы (например, asterisk, поддержка cdr_mysql), то просто установить сервер (и/или клиент) MySQL недостаточно. Необходимо также поставить библиотеки MySQL, чтобы компиляция зависящей от MySQL программы была успешной.

Для debian это будет команда:
apt-get install libmysqlclient-dev

Для RHEL / CentOS выполните:
yum install mysql-devel

Первоначальная настройка MySQL

Даже в случае, если Вы устанавливаете MySQL на домашнем/тестовом компьютере (не говоря уже об установке в производственной среде) необходимо совершить хотя бы минимальные действия по настройке MySQL сервера (клиента, как правило, настраивать не нужно). Например, задать пароль пользователя root в системе MySQL. По умолчанию пароль для root — пустой (без пароля).

Задать пароль MySQL root

Для простой установки пароля пользователю root (в случае, если пароль не был запрошен при установке самого MySQL) выполните команду:

Где rootpass — пароль для пользователя root. Совет : если Вы хотите, чтобы эта команда не отображалась в истории команд (и никто впоследствии не смог бы подсмотреть пароль рута из истории команд), перед этой командой просто поставьте пробел. То есть:
/usr/bin/mysqladmin -u root password «rootpass»

Настройка MySQL для работы в производственной среде

Выполните из командной строки:
/usr/bin/mysql_secure_installation

Данный скрипт (если ответить на задаваемые вопросы yes) — установит новый пароль root (пароль будет запрошен), удалит пользователя anonymous, запретит логинится с удаленных машин под root-ом, удалит тестовую базу.

Создать необходимую базу данных и пользователя для нее

Для создания базы данных в MySQL необходимо сначала подключиться к MySQL, после чего выполнить mysql запрос для создания базы данных. Для этого выполните из командной строки linux:
mysql -u root -p

При этом будет запрошен пароль для пользователя, имя которого указано после опции -u (в данном случае — пароль пользователя root). При правильном введении пароля появится приглашение MySQL к вводу команд:
mysql>_

Это командная строка MySQL. Все SQL запросы и команды на создание баз данных, пользователей и т.д. вводятся в этой командной строке.

Для создания базы данных выполните в командной строке MySQL:
create database имя-базы-данных character set кодировка-базы-данных;

например:
create database asterisk character set utf8;

Кодировку можно не указывать, при этом будет использоваться кодировка по умолчанию (см. настройки сервера MySQL):
create database mydatabase;

Теперь создадим пользователя MySQL и дадим ему полные права на созданную базу данных:
grant all privileges on имя-базы-данных.* to имя-пользователя @localhost identified by » пароль-пользователя «;
например:
grant all privileges on asterisk.* to [email protected] identified by «asterisk_password»;

добавление в базу данных таблиц из файла

Если у Вас есть таблицы в файлах, которые Вы бы хотели добавить в базу данных, выполните следующую команду:
mysql -u имя-пользователя-mysql -p имя-базы-данных

Установка mysql Ubuntu 16.04

MySQL — это одна из самых популярных систем управления базами данных, которая применяется почти везде, начиная от различных предприятий и промышленности и заканчивая организацией работы веб-сайтов.

Сейчас существует несколько версий MySQL. Непосредственно mysql, разрабатываемая компанией Oracle и свободный форк от основного разработчика mysql — MariaDB. Имя MairaDB программа получила в честь первой дочери программиста, также как и MySQL в честь имени второй. В большинстве дистрибутивов Linux используется MariaDB, в том числе и в Ubuntu. Мы будем рассматривать установку именно этой версии, но для совместимости она называется все еще MySQL. В этой статье мы рассмотрим как выполняется установка MySQL Ubuntu 16.04 или 16.10.

Установка MySQL в Ubuntu 16.04

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

sudo apt update

Затем установим необходимые пакеты:

sudo apt install mariadb-server mariadb-client

На данный момент в репозиториях Ubuntu 16.10 есть только версия MariaDB 10.0, но уже доступна стабильная версия MariaDB 10.1. Для ее установки нужно использовать официальный репозиторий разработчиков. Для добавления репозитория в Ubuntu 16.10 выполните:

sudo apt-get install software-properties-common
$ sudo apt-key adv —recv-keys —keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
$ sudo add-apt-repository ‘deb [arch=amd64,i386] http://mirror.klaus-uwe.me/mariadb/repo/10.1/ubuntu yakkety main’

А в Ubuntu 16.04:

sudo apt-get install software-properties-common
$ sudo apt-key adv —recv-keys —keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
$ sudo add-apt-repository ‘deb [arch=amd64,i386,ppc64el] http://mirror.klaus-uwe.me/mariadb/repo/10.1/ubuntu xenial main’

Затем, чтобы установить mysql Ubuntu 16.04 или 16.04 достаточно выполнить уже знакомую команду:

sudo apt update
$ sudo apt install mariadb-server mariadb-client

Во время установки нужно будет два раза ввести пароль для root пользователя базы данных:

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

sudo systemctl status mysql

Вы должны увидеть зеленую надпись Active Running и версию программы, которую устанавливали.

Настройка mysql в Ubuntu

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

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

Дальше наберите Y чтобы установить пароль root:

Введите два раза новый пароль:

Введите Y для отключения анонимного доступа к mysql:

Еще раз Y чтобы запретить подключаться к базе от имени root удаленно:

Снова Y, чтобы удалить тестовую базу данных:

Последний шаг — это обновление привилегий для пользователей:

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

sudo mysql -u root -p

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

mysql> CREATE DATABASE testDB;

Далее создадим пользователя:

mysql> CREATE USER ‘my_user’@’localhost’ IDENTIFIED BY ‘password’;

Слова my_user и password нужно заменить на свои имя пользователя и пароль. Дальше нужно дать права пользователю на управление этой базой данных:

mysql> GRANT ALL ON testDB.* TO ‘my_user’@’localhost’;

Или вы можете дать права только на несколько инструкций:

mysql> GRANT SELECT,UPDATE,DELETE ON testDB.* TO ‘my_user’@’localhost’;

Если какую-либо инструкцию нужно запретить, удалите ее:

mysql> REVOKE UPDATE ON testDB.* FROM ‘my_user’@’localhost’;

После завершения работы с правами нужно их обновить:

mysql> FLUSH PRIVILEGES;

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

mysql> SELECT user,host,password FROM mysql.user;

Также вы можете посмотреть полномочия для нужного пользователя:

mysql> SHOW GRANTS FOR ‘my_user’@’localhost’;

Теперь установка mysql ubuntu 16.04 полностью завершена и вы можете использовать эту базу данных для решения своих задач.

Удаление MySQL в Ubuntu

Чтобы удалить mysql Ubuntu 16.04 понадобиться немного больше команд чем для удаления простого пакета. После удаления основных пакетов в системе остается еще много файлов. Мы рассмотрим как удалить все.

Сначала остановите сервисы:

sudo service mysql stop
$ sudo killall -KILL mysql mysqld_safe mysqld

Удалите основные пакеты и их зависимости:

sudo apt -y purge mysql-server mysql-client
$ sudo apt -y autoremove —purge
$ sudo apt autoclean

Удалите пользователя mysql и остатки программы в системе:

deluser —remove-home mysql
$ sudo delgroup mysql
$ rm -rf /etc/apparmor.d/abstractions/mysql /etc/apparmor.d/cache/usr.sbin.mysqld /etc/mysql /var/lib/mysql /var/log/mysql* /var/log/upstart/mysql.log* /var/run/mysqld
$ updatedb

Удалите все логи подключений к mysql из терминала:

sudo find / -name .mysql_history -delete

Теперь ваша система полностью очищена от MySQL.

Выводы

В этой статье мы рассмотрели как выполняется установка mysql ubuntu 16.04 или 16.10. Как видите, это не очень трудно, хотя и требует некоторых знаний и немного времени на то, чтобы со всем разобраться. Надеюсь, эта информация была для вас полезной.

Что нужно настроить в mySQL сразу после установки?

Вольный перевод довольно старой статьи с MySQL Performance Blog о том, что лучше сразу же настроить после установки базовой версии mySQL.

Удивительно, сколько народу устанавливает mySQL на свои сервера и оставляют его с настройками по умолчанию.

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

  • key_buffer_size — крайне важная настройка при использовании MyISAM-таблиц. Установите её равной около 30-40% от доступной оперативной памяти, если используете только MyISAM. Правильный размер зависит от размеров индексов, данных и нагрузки на сервер — помните, что MyISAM использует кэш операционной системы (ОС), чтобы хранить данные, поэтому нужно оставить достаточно места в ОЗУ под данные, и данные могут занимать значительно больше места, чем индексы. Однако обязательно проверьте, чтобы всё место, отводимое директивой key_buffer_size под кэш, постоянно использовалось — нередко можно видеть ситуации, когда под кэш индексов отведено 4 ГБ, хотя общий размер всех .MYI-файлов не превышает 1 ГБ. Делать так совершенно бесполезно, Вы только потратите ресурсы. Если у Вас практически нет MyISAM-таблиц, то key_buffer_size следует выставить около 16-32 МБ — они будут использоваться для хранения в памяти индексов временных таблиц, создаваемых на диске.
  • innodb_buffer_pool_size — не менее важная настройка, но уже для InnoDB, обязательно обратите на неё внимание, если собираетесь использовать в основном InnoDB-таблицы, т.к. они значительно более чувствительны к размеру буфера, чем MyISAM-таблицы. MyISAM-таблицы в принципе могут неплохо работать даже с большим количеством данных и при стандартном значении key_buffer_size, однако mySQL может сильно «тормозить» при неверном значении innodb_buffer_pool_size. InnoDB использует свой буфер для хранения и индексов, и данных, поэтому нет необходимости оставлять память под кэш ОС — устанавливайте innodb_buffer_pool_size в 70-80% доступной оперативной памяти (если, конечно, используются только InnoDB-таблицы). Относительно максимального размера данной опции — аналогично key_buffer_size — не стоит увлекаться, нужно найти оптимальный размер, найдите лучшее применение доступной памяти.
  • innodb_additional_mem_pool_size — данная опция практически никак не влияет на производительность mySQL, однако рекомендую оставлять для InnoDB около 20 МБ (или чуть больше) под различные внутренние нужды.
  • innodb_log_file_size — крайне важная настройка в условиях баз данных с частыми операциями записи в таблицы, в особенности при больших объёмах. Большие размеры увеличивают быстродействие, однако будьте осторожны — увеличится и время восстановления данных. Я обычно выставляю значение около 64-512 МБ в зависимости от размера сервера.
  • innodb_log_buffer_size — стандартное значение данной опции вполне подойдёт для большинства систем со средним количеством операций записи и небольшими транзакциями. Если же в Вашей системе бывают всплески активности, или Вы активно работаете с BLOB-данными, то рекомендую немного увеличить значение innodb_log_buffer_size. Однако не переусердствуйте — слишком большое значение будет пустой тратой памяти: буфер сбрасывается каждую секунду, поэтому Вам не понадобится больше места, чем требуется в течение этой секунды. Рекомендуемое значение — около 8-16 МБ, а для небольших баз — и того меньше.
  • innodb_flush_log_at_trx_commit — жалуетесь, что InnoDB работает в 100 раз медленнее MyISAM? Вероятно, Вы забыли про настройку innodb_flush_log_at_trx_commit. Значение по умолчанию «1» означает, что каждая UPDATE-транзакция (или аналогичная команда вне транзакции) должна сбрасывать буфер на диск, что достаточно ресурсоёмко. Большинство приложений, в особенности ранее использовавшие таблицы MyISAM, будут хорошо работать со значением «2» (т.е. «не сбрасывать буфер на диск, только в кэш ОС»). Лог, однако, всё равно будет сбрасываться на диск каждые 1-2 секунды, поэтому в случае аварии Вы потеряете максимум 1-2 секунды обновлений. Значение «0» повысит производительность, но Вы рискуете потерять данные даже при аварийной остановке mySQL-сервера, в то время как при установке значение innodb_flush_log_at_trx_commit в «2» Вы потеряете данные только при аварии всей операционной системы.
  • table_cache — открытие таблиц может быть весьма ресурсоёмко. К примеру, MyISAM-таблицы помечают заголовки .MYI файлов как «используемые в текущий момент». Обычно не рекомендуется открывать таблицы слишком часто, поэтому лучше, чтобы кэш был достаточных размеров, чтобы держать все Ваши таблицы открытыми. Для этого используется некоторое количество ресурсов ОС и оперативной памяти, однако это обычно не является существенной проблемой для современных серверов. Если у Вас несколько сотен таблиц, то стартовым значением для опции table_cache может быть«1024» (помните, что каждое соединение требует свой собственный дескриптор). Если у Вас ещё больше таблиц или очень много соединений — увеличьте значение параметра. Я видел mySQL сервера со значением table_cache равной 100 000.
  • thread_cache — создание/уничтожение потоков также является ресурсоёмкой операцией, которая происходит при каждой установке соединения и каждом разрыве соединения. Я обычно выставляю эту опцию равную 16. Если у Вашего приложения могут быть скачки количество конкурентных соединений и по переменной Threads_Created виден быстрый рост количества потоков, то стоит увеличить значение thread_cache. Цель — не допускать создания новых потоков в условиях нормального функционирования сервера.
  • query_cache_size — если Ваше приложение много и часто читает данные, и при этом у Вас нет кэша на уровне приложения, эта опция может очень помочь. Не ставьте здесь слишком большое значение, так как обслуживание большого кэша запросов будет само по себе затратным. Рекомендуемое значение — от 32 до 512 МБ. Не забудьте проверить, насколько хорошо используется кэш запросов — в некоторых условиях (при небольшом количестве хитов в кэше, т.е. когда практически не выбираются одинаковые данные) использование большого кэша может ухудшить производительность.

Как Вы можете видеть, это — глобальные настройки. Эти переменные зависят от «железа» сервера и используемых движков mySQL, в то время как сессионные переменные обычно настраиваются специально под конкретные задачи. Если Вы в основном используете простые запросы, то нет никакой необходимости увеличивать значение sort_buffer_size, даже если у Вас есть лишние 64 ГБ оперативной памяти. Более того, большие значения кэшей могут только ухудшить производительность сервера. Сессионные переменные лучше оставить на потом, для тонкой настройки сервера.

linux-notes.org

Настройка безопасности MYSQL в Unix/Linux

В этой статье «Настройка безопасности MYSQL в Unix/Linux» я хотел бы представить материал по настройке безопасности mysql в операционных системах Unix и Linux. Я долго собирал данный материал и собрал все до кучи.

Я не буду рассказывать как установить mysql, а перейду сразу к настройкам, но если кто-то не знает как установить mysql, то могут ознакомится с полезным материалом тут:

И есть еще много других полезных статей по этой теме, если интересно, то рекомендую использовать поиск или пройтись по рубрикам.

Файл конфигурации my.cnf в Ubuntu и Debian, находится: /etc/mysql/my.cnf

Файл конфигурации my.cnf в CentOS, RedHat и Fedora: /etc/my.cnf

Настройка безопасности MYSQL в Unix/Linux

И так, приступим….

Предварительная установка.

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

  • Зашифруйте файловую систему, чтобы предотвратить взлома данных злоумышлинниками.
  • Установите систему обнаружения вторжений, например Tripwire, который смотрит на изменения в критических системных файлах.
  • Нужно заблокировать не использующие порты с помощью брандмауэра, чтобы предотвратить доступ к системным службам.
  • Установить сильные пароли для пользователя root и для других пользователей ОС.
  • Disallowing OS login by application users: set to “nologin” or “/bin/false”.
  • Необходимо настроить sudo всех аккаунтов с привилегиями и требовать пароль для доступа к SUDO.
  • Настроить запуск скрипта для сканирования rootkit-отов по расписанию.
  • Запустить процес «Список контроля доступа» (ACL)на уровне ОС: Расширения SELinux или AppArmor. Эти программы будут ограничивать систему или процессы на сервере от доступа к данным и ресурсам, которые явно не определены.

Настройка безопасности после установки mysql.

После установки MySQL, существуют различные подходы к обеспечению первоначальной настройки.

Первый вариант — это сделать все это самому, вручную:

Проверяем, установлен ли пароль дял пользователя root и если нет, то установим его:

И устанавливаем пароль:

Удаляем анонимных пользователей:

Удалим (запретим) удаленный доступ для пользователя root:

Удаляем стандартную базу данных с именем «test»:

Перезагрузим пользовательские привелегии:

По умолчанию, MySQL будет работать через «mysqld_safe», который не делает MySQL безопасным. Скрипт mysqld_safe обеспечивает функциональность следующим образом: «Скрипт запускает демон MySQL или перезапускает его, если он неожиданно умирает». Таким образом, если кто-то пытается запустить mysql от пользователя root, то скрипт не запустится. Процесс mysql может работать без mysqld_safe, вы можете запустить его следующим образом, через sudo:

Путь к демону может отличатся, все зависит от ОС.

Второй вариант — это запустить «mysql_secure_installation».

2-й способ более простой и скрипт выполнит все за вас. Запустите скрипт «mysql_secure_installation». Это поможет выполнить несколько процедур, которые будут устранять некоторыми значениями по умолчанию, которые являются опасными для использования:

данный скрипт запросит у вас пароль суперпользователя который вы создали во время установки. Сразу же после этого, вам будет предложено ряд вопросов. Вы должны ответить «Y» (Да), на все оставшиеся вопросы.

И так, все установлено и теперь нужно отредактировать конфигурационный файл my.cnf и внести ряд полезных изменений:

Первый параметр, который мы должны проверить это «bind-address» который находится в разделе «[mysqld]». Этот параметр говорит что mysql будет запущен на локальном сервере без выхода в интернет и к нему не смогут подключится, приведите к следующему виду:

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

В этом же разделе данного файла, я добавляю директиву, чтобы отключить возможность загрузки локальных файлов:

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

Вы можете установить путь где будет желать лог-файл ( в этом же разделе»[mysqld]»):

Рекомендуется отключение символических ссылок для предотвращения различного рисков в безопасности:

Это не полный конфиг, чтобы просмотреть полный, перейдите:

Это готовый и оптимизированный конфигурационный файл. Он довольно большой, по этому, я его вынес в отдельный файл. Можете использовать его.

НЕ ДЛЯ ПАРАНОИКОВ! Можно прописать логин и пароль и входить без него, для этого:

user_mysql — пользователь в mysql.
password_mysql — пароль от пользователя user_mysql в mysql.

В следующий раз при запуске mysql команд в mysql, mysqlcheck, mysqdump утилиты будут брать user_mysql & password_mysql с файла и это с экономит ваше время (и не нужно прописывать -u и -p).

Убедитесь, что лог-файл для MySQL, и лог с ошибками, а так же каталог где лежат логи MySQL не доступен для чтения другим пользователям:

Настройка безопасности внутри MySQL.

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

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

Обеспечение паролей и Host ассоциаций

Во-первых, необходимо проверить, что никто из пользователей не остался без пароля или без ассоциацивных хостов в MySQL:

Как вы можете видеть, в примере, пользователь «Test-user» не имеет пароля и работает независимо от хоста и БД. Это очень небезопасно.

Мы можем установить пароль для пользователя. Измените «newPassWord» и установить пароль который вам нужно:

Если проверим таблицу user снова, то увидим, что пользователь Test-user теперь имеет пароль:

Если вы посмотрите в поле «Host», вы увидите, что у нас еще есть «%», который является джокером. Это означает, что данный пользователь имеет право работать с любым хостом на сервере. Это не то, что нужно и необходимо изменить на «localhost»:

Если еще раз проверить, то можно увидеть, что таблица user теперь имеет соответствующие поля и они корректны:

Если таблица содержит пустых пользователей (В этот примере нет таких, так как я запустил «mysql_secure_installation», но я расскажу об этом в любом случае), мы должны удалить их:

После того как я сделал модифицировать таблицы user, нужно выполнить следующую команду, чтобы активировать новые привилегии:

Назначение пользователей и присваивание им прав.

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

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

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

В качестве примера, если нужно отменить права, например на UPDATE для пользователя, то это можно сделать так:

Если вам нужны все привилегии для определенной базы данных, вы можем сделать это так:

Выполним обновление привелегий для пользователей:

А сейчас проверим что получилось:

Всегда выполняйте «flush privileges», когда вы закончили вносить изменения.

Поменять пользователя root.

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

Чтобы переименовать пользователя root, вы можете использовать:

Вы можем увидеть изменения, используя тот же запрос:

Опять же, необходимо очистить привелегии для этих изменений:

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

Если нужно сбросить пароль от пользователя root в mysql, то рекомендую прочитать статью «Сброс пароля root в MySQL»

Защита файла конфигурации MySQL.

Чтобы сохранить настройки, файл не должен быть доступен для всех, кроме себя. Чтобы обеспечить это, выставитепара на файл 400 или 600. Например:

На всех файлах конфигурации должны иметь владельца root:

И напоследок, для полной защиты, я настоятельно рекомендовал бы защитить файл конфигурации. Для этого, стоит выполнить команду:

Подробно о этой утилите можно прочитать тут:

Убедитесь, что mysqld работает на tcp порту №3306:

А на этом статья «Настройка безопасности MYSQL в Unix/Linux» подошла к завершению.

Запуск необходимых параметров MySQL для веб-разработчика

Дата публикации: 2020-12-12

Мастер Йода рекомендует:  Предъявите ваши аргументы

От автора: одной установкой и созданием баз данных все не кончается. Для того, чтобы адаптировать под веб-разработку, необходимо внести изменения в MySQL параметры. Освоить все это методом тыка — настоящее испытание, которое может и не привести к успешному результату. Тем более, что дорожка давно проторена и уже сейчас можно найти массу мануалов, касательно конфигураций баз данных MySQL. Мы собрали несколько из них и создали статью, из которой вы узнаете о тонкой настройке, основных отличиях и преимуществах различных видов настройки.

Чем плохи умолчания?

Если говорить о веб-разработке, то реляционные MySQL были созданы не только для нее. Прежде всего необходима была систематизация файлов, включение их в одну архитектуру и прочие преимущества, которые мы сегодня наблюдаем. Тем не менее, MySQL уже настолько прочно укоренилась в мир веба, что даже ассоциируется с ним: наборы разработчиков обязательно включают одну из СУБД. Примечательно, что в большинстве случаев — это MySQL.

Но, стандартные настройки базы данных не только не дадут создать полноценный продукт, но и затруднят управление системой в принципе. К изначальной конфигурации необходимо добавить немало пунктов, которые сделают из ваших БД настоящий агрегатор данных, который можно использовать, как для массивных веб-приложений, так и для небольших решений, рассчитанных, в основном, на чтение с минимальным взаимодействием.

InnoDB или MyISAM?

Существует несколько наиболее распространённых систем хранения данных. Две из них встроены в MySQL: InnoDB и MyISAM. У каждой из них есть свои преимущества и недостатки, что определено применением. Существует очень простое объяснение того, когда следует использовать каждую их них. К примеру, некоторые разработчики считают, что MyISAM стоит включить только как систему для программ чтения и записи. В реальности все намного сложнее.

Как создать сайт самому?

Какие технологии и знания необходимы сегодня, чтобы создавать сайты самостоятельно? Узнайте на интенсиве!

В процессе рассмотрения конфигураций MySQL мы еще не раз вернемся к вопросу о том, как настраивать каждую из подсистем. Мы покажем, насколько применимой может оказаться каждая их них. Проблема в том, что в большинстве мануалов из интернета информация устарела и уже не может рассматриваться, как релевантная. В итоге, все приходят к выводам о том, что новичку следует использовать MyISAM, а всем остальным — Inno. Необходимо рассмотреть основные отличия, чтобы прийти к объективным выводам:

транзакции. То, чего не хватает MyISAM. Это основной ресурс для работы платежных систем и не только. Любой веб-продукт, где будет осуществляться обмен информацией, нуждается в транзакционном движке. Как только в MySQL возникает ошибка, движок может совершить rollback и вернуть данные к предыдущему состоянию;

блокировки. В MyISAM они совершаются на уровне таблиц, в то время, как Inno блокирует отдельно каждую из строк;

deadlock. Подобных блокировок не стоит ожидать в ISAM, в то время, как в Inno они случаются время от времени;

count. Эти запросы выполняются быстрее именно в ISAM, несмотря на то, что ее даже не рассматривают, как вариант некоторые разработчики;

хранение таблицы. В Inno — это больше файлы, в которых насыпью находятся все данные. В ISAM для таблицы существует файл, у каждой свой.

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

Первоначальная настройка

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

Итак, серверная и клиентская стороны MySQL установлены, пора настроить их взаимодействие и запустить. Делаем это при помощи команды mysqld. Если всевозможные опции вам неизвестны (а это так), необходимо вызвать помощь, интуитивной командой — help. Новая информация отобразит и пути, с которыми взаимодействует СУБД.

Создание первой базы. Ей будет присвоено имя mysql. Стоит найти и директории, с которыми MySQL будет работать. Современные инсталляторы позволяют пропустить этот этап, но знание матчасти никому не повредит.

Теперь пришло время для ограничения привилегий. Сейчас любой желающий может войти в вашу БД с правами суперпользователя. Необходимо ограничить это круг и присвоить пароль для root-прав. Как включить эту конфигурацию? Очень просто:

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

Чтобы применить внесенные правки нужно воспользоваться командой:

Попробуйте зайти в рут, при помощи других учетных данных, чтобы проверить работу защиты.

Для привилегированного пользователя существует ряд действий, которые он может выполнять с готовыми таблицами баз данных, а также создавать новые. Вы сами можете создать несколько типов пользователей с разными возможностями для редактирования. Обычный администратор должен иметь доступ только к одной БД, в то время, как для разработчика необходимы более широкие полномочия.

Необходимое логирование

Итак, в вашем распоряжении создание пользователей, которые будут модифицировать базу данных. Вы можете ограничить их функциональность, можете расширить ее до максимума. Но, в случае нарушения целостности или любых других угроз безопасности, винить будет некого, если не отслеживать все действия в MySQL. Это могут обеспечить логи, если включить их как следует. Единственный способ контроля, который не предусматривает логирование — это постоянный мониторинг, который мало кто может себе позволить. Слишком много времени уйдет на работы с низким коэффициентом полезного действия.

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

Общие логи — это любые действия с базами данных. Как правило, их оставляют отключенными. Слишком много ресурсов будет потреблять такой процесс. Куда интереснее природа медленных логов. В них будут записаны все операции, которые заняли больше времени, чем обычно. К примеру, вы устанавливаете допустимую задержку в пятнадцать секунд. Все, что заняло больше времени, будет записано. Таким образом можно отследить атаку на сервер с базами данных.

Как создать сайт самому?

Какие технологии и знания необходимы сегодня, чтобы создавать сайты самостоятельно? Узнайте на интенсиве!

Параметры для расширения

Теперь перейдём непосредственно к параметрам для расширения, которые необходимо провести на самом старте. Вы уже совершили все первоначальные настройки и пришло время для точных изменений. Важно знать, что выставление значений опций — сугубо индивидуальный процесс, который сильно зависит не столько от целей, для которых вы создаете базу данных, сколько от «железа», на котором происходит основной процесс. Мы рассмотрим те команды, которые являются наиболее глобальными и необходимы при создании большинства веб-проектов.

Начнем с опции для ISAM-таблицы. Хоть на них и любят поругаться профессионалы, участие в веб-разработке этих движков все еще велико. Тем более, что подходят они для 80% всего, что сейчас создают в сети — легковесный информационный сайт с небольшими динамическими элементами. В первую очередь, речь пойдет о key_buffer_size. В целом, значение можно ставить примерно в треть всей оперативной памяти, которая доступна на железе. Так как ISAM расходует кэш-память операционки, необходимо учесть и общую нагрузку на сервер. Оставьте также память и для того, чтобы хранить сами данные. Важным моментом является использование полного объема кэша. Поэтому, если ваши файлы занимают меньше места, уменьшите и память, отведенную под них.

Теперь похожую операцию с буфером можно провести, если вы собираетесь использовать в основном InnoDB. Параметр носит название innodb_buffer_pool_size. Дело в том, что, если ISAM может неплохо взаимодействовать и с теми настройками, что система несет сама по себе, то с Inno так не получится. Здесь необходимо внести изменения в любом случае. Иначе, все что вы создадите погрязнет во «фризах». Вы могли видеть последствия такой ошибки: веб-приложение явно не должно тратить много ресурсов, но постоянно тормозит даже на мощных машинах и с хорошим соединением.

Этот движок не использует кэш — у него свой буфер. Если вы работаете только с этим типом таблиц, значит оперативную память устройства можно «кушать» на 2/3. Можно поиграться со значениями, чтобы обеспечить быстродействие. Не стоит думать, что чем больше вы выставите, тем лучше заработает ваш продукт. Здесь важен не размер, а правильное соотношение.

Мы отредактируем место, которое выделено системой под запись всего, что происходило с базой данных в определенный момент. Начнем с опции innodb_log_file_size. Она необходима, если в таблицы происходит постоянная запись данных. Как только вы увеличите размер файлов, база данных начнет «летать». Не стоит просто выставлять размер, который вы считаете большим. Превалирующее число разработчиков считает, что 512 мб — это крайнее значение. Но, не ограничивайте себя этими рамками. Постепенно увеличивайте размер и тестируйте. Только так вы сможете выбрать идеальное соотношение. Не забывайте соблюдать прогрессию использования памяти.

Продолжаем! Теперь настал черед innodb_log_buffer_size. Если ваш проект — не социальная сеть и не стриминговый музыкальный портал, лучше оставить все как есть. Иначе вас ждет нестабильность и перерасход мощностей. Если же ваш веб-продукт и правда ожидает такая популярность и активность пользователей, можно немного увеличить объем. Рекомендуемое число — до шестнадцати мегабайт. Но, как мы и говорили, все переменные — индивидуальны. Придется подбирать и тестировать производительность.

Теперь пришло время приблизить быстродействие Inno к ISAM. Если ранее вы смотрели в сторону второго движка, то сейчас эта эпоха закончится. Необходимо внести изменения в опцию под названием innodb_flush_log_at_trx_commit. После установки ПО, значение параметра равно единице. Это значит, что все транзакции, которые производит движок, сбрасываются на диск устройства. Только представьте, что это значит для большого проекта. Есть две альтернативы. Первая — это значение ноль. Система начнет летать, но при остановке, либо другом нарушении, вся информация об изменениях будет утеряна. Если выставить значение «2», то данные будут храниться в кэше операционной. Для вас это значит, что база данных заработает быстрее, а серьезные последствия ждут только в том случае, если слетит сама ось.

Даже сам факт открытия таблицы может потреблять немало ресурсов, если не внести изменения в конфигурацию. С этой операцией можно совладать с помощью параметра table_cache. Он изменяет размер кэша до требуемых размеров. Вместо того, чтобы постоянно открывать новую таблицу, вы сможете держать их открытыми постоянно. Кстати, на этом примере видно, насколько прогрессивным решением является реляционная база данных, в сравнении с файлами.

Отличным решением для быстродействия является кэш у самого приложения. Но, такой подход не всегда работает — не всегда роскошь доступна. Однако, если считывание данных — частая операция для программы, а кеша нет, то query_cache_size и его изменение может помочь. Установите значение около 512 МБ и посмотрите, не увеличилось ли быстродействие. Если нет — уменьшите наполовину. Потом, увеличьте на столько же. Такой «метод тыка» бывает более быстрым, чем арифметическое сложение и вычитание.

Кстати, если вы не особенно хорошо разбираетесь в железе, значит можно попробовать действовать с помощью конфигурационных заготовок. Перед тем, как менять все подряд в системных файлах, можно попробовать те, которые подготовили разработчики СУБД. Несколько разных файлов my.cnf и один из вас может подойти под тот тип оборудования, который используете именно вы.

Когда применить MyISAM

Это вопрос, который мы задали в самом начале статьи и теперь дадим на него ответ. Но, сначала необходимо узнать об этом движке немного больше. Это система хранения данных, которая основана на одноименных принципах, разработанных, внимание, в 1963 году в компании IBM. Но, взирая на то, что математическим законам нет возраста, система работает до сих пор. Некоторые небольшие веб-проекты активно используют MyISAM и не видят надобности в переходе на InnoDB.

Однако, как только вы увидите, что проект нуждается в масштабировании в сторону «больше», ISAM станет непригоден к использованию. Эта система не поддерживает транзакции, а значит, не позволит участникам взаимодействовать друг с другом в полной мере. По сути, на основе этого движка можно разрабатывать лишь новостные информационные сайты. И даже они нуждаются в высоком уровне интерактивности, как показывают тренды современной веб-разработки.

Совсем недавно преимуществом ISAM был полнотекстовый поиск. Но, с выходом версии InnoDB 5.6.4, он доступен и на этом движке. Сегодня можно с уверенностью сказать, что ISAM — это базы данных начального уровня. Тем не менее, их довольно успешно комбинируют в реализациях социальных сетей, как например Facebook. Там почти весь массив информации хранится в Inno, в то время, как файлы для чтения размещены в MyISAM.

Database twist

Однозначно хорошей новостью можно назвать то, что базы данных можно бесконечно переносить с одного движка на другой. Делается это в уже знакомом нам файле my.cnf. Если вы работали с ISAM, то не забудьте убрать теги комментирования со строки «skip-innodb». Их блокируют для того, чтобы ускорить быстродействие базы данных.

Убедитесь в том, что правильно выставлен параметр innodb_data_file_path. Он должен выглядеть следующим образом:

Contents

Share

Sign up for our newsletter.

Get the latest tutorials on SysAdmin and open source topics.

Related

Как установить MySQL в Ubuntu 18.04

Введение

MySQL является системой управления базами данных с открытым исходным кодом и обычно используется, как часть популярного стека LAMP (Linux, Apache, MySQL, PHP/Python/Perl). MySQL использует реляционную базу данных и SQL (Structured Query Language, язык структурированных запросов) для управления данными.

Короткая версия установки очень проста: достаточно обновить индекс пакетов, установить пакет mysql-server , а затем запустить скрипт настройки безопасности.

Это руководство описывает процесс установки MySQL версии 5.7 на сервер с Ubuntu 18.04. Если вам необходимо обновить установленную ранее версию MySQL до версии 5.7, вы можете ознакомиться с руководством по обновлению MySQL до версии 5.7.

Необходимые условия

Перед тем, как начать следовать шагам, описанным в этом руководстве, вам необходимо настроить отдельный, не-рутовый (non-root) профиль пользователя на вашем сервере с Ubuntu 18.04. Вы можете сделать это используя нашу статью о первичной настройке сервера на Ubuntu 18.04.

Шаг 1 — Установка MySQL

По умолчанию в репозиторий пакетов APT в Ubuntu 18.04 включена только последняя версия MySQL. На момент написания этого руководства это MySQL 5.7.

Для установки этой версии обновите индекс пакетов apt командой:

Затем установите пакет:

Эта команда установит MySQL, но при этом вам не будет предложено задать пароль или внести какие-либо правки в конфигурацию. Поскольку это делает установку небезопасной, рассмотрим далее, как настроить установленную MySQL.

Шаг 2 — Настройка MySQL

В случае новой установки MySQL вам необходимо выполнить скрипт безопасности. Он изменяет некоторые настройки по умолчанию на более безопасные, например, удалённый вход для пользователей root и пользователи, созданные по умолчанию. В старых версиях MySQL вам было необходимо также инициализировать директорию данных вручную, теперь это делается автоматически.

Выполните скрипт безопасности командой:

В результате выполнения этого скрипта вам будет предложено внести изменения в настройки безопасности вашей MySQL. Сначала вам будет предложено установить плагин валидации паролей (Validate Password Plugin), который позволяет тестировать надёжность паролей MySQL. Далее вам предложат задать пароль для пользователя root вашей установки MySQL. Выберите надёжный пароль и введите его два раза.

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

Для инициализации директории данных MySQL вам необходимо использовать mysql_install_db для версий меньше, чем 5.7.6, и mysqld —initialize для версии 5.7.6 и более поздних версий. При этом, если вы устанавливаете MySQL для Debian как описано на шаге 1, директория данных будет создана автоматически и вам нет необходимости что-то делать. Если вы при этом попытаетесь всё равно выполнить команду создания директории данных, вы увидите следующую ошибку:

Обратите внимание, несмотря на то, что вы задали пароль для пользователя root для MySQL, этот пользователь не настроен для аутентификации по паролю при подключении к оболочке (shell) MySQL. Вы можете изменить эту настройку на следующем шаге 3.

Шаг 3 — (Опционально) Настройка аутентификации и привилегий

На серверах с Ubuntu, использующей MySQL 5.7 (и более поздние версии), пользователь root в MySQL по умолчанию аутентифицируется с помощью плагина auth_socket , а не по паролю. Это в целом более безопасно и удобно во многих случаях, но не в случае, когда вам необходимо организовать доступ к MySQL со стороны сторонней программы, например, phpMyAdmin.

Для того, чтобы пользователь root в MySQL мог использовать пароль для входа в систему вам необходимо изменить метод аутентификации с auth_socket на mysql_native_password . Для этого войдите в оболочку MySQL следующей командой:

Далее проверьте, какой метод аутентификации используется для каждого из ваших пользователей MySQL:

В этом примере ваш пользователь root использует аутентификацию с помощью плагина auth_socket . Для изменения этой настройки на использование пароля используйте следующую команду ALTER USER . Не забудьте изменить password на ваш сильный пароль:

Далее выполните команду FLUSH PRIVILEGES , которая применит внесённые изменения:

Проверьте методы авторизации для пользователей ещё раз для того, чтобы убедиться, что пользователь root более не использует плагин auth_socket для авторизации:

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

В некоторых случаях бывает полезно использовать для входа в MySQL отдельного пользователя. Для создания такого пользователя войдите в оболочку MySQL:

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

Далее создайте нового пользователя и задайте для него надёжный пароль:

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

Обратите внимание на то, что в этом случае вам нет необходимости выполнять команду FLUSH PRIVILEGES . Эта команда необходимо только тогда, когда вы изменяете таблицы доступа (grant tables) используя команды INSERT , UPDATE или DELETE . Поскольку вы создали нового пользователя, а не редактируете права существующего пользователя, команда FLUSH PRIVILEGES не является необходимой.

После этого, выйдите из оболочки MySQL:

Теперь мы можем протестировать нашу установку MySQL.

Шаг 4 — Тестирование MySQL

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

Вы увидите вывод, похожий на этот:

Если MySQL не запущена, вы можете запустить её с помощью команды sudo systemctl start mysql .

Для дополнительной проверки вы можете попробовать подключиться к базе данных с помощью инструмента mysqladmin , который представляет собой клиент, позволяющий запускать административные команды. Например, эта команда приказывает подключиться к MySQL в качестве пользователя root ( -u root ), запросить пароль ( -p ) и вернуть версию.

Вы увидите вывод, похожий на этот:

Это означает, что MySQL запущена и работает.

Заключение

Теперь на вашем сервере установлена и настроена MySQL. Вот несколько примеров того, что можно сделать дальше:

MySQL : Устанавливаем и настраиваем MySQL.

Устанавливаем и настраиваем MySQL. На unix системах, наверное, одна из самых распространенных СУБД.

Предварительно добавляем следующие строки в /etc/make.conf
DEFAULT_MYSQL_VER=55
PORTSDIR?= /usr/ports
.if $ <.CURDIR>== $/databases/mysql$-server
WITH_CHARSET=utf8
WITH_COLLATION=utf8_bin
WITH_XCHARSET=all
.endif
.if $ <.CURDIR>== $/databases/mysql$-client
WITH_CHARSET=utf8
WITH_COLLATION=utf8_bin
.endif

переходим в ports и компилируем сервер

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

А теперь воспользуемся скриптом для настройки безопасности MySQL сервера

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MySQL to secure it, we’ll need the current
password for the root user. If you’ve just installed MySQL, and
you haven’t set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on.

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

Set root password? [Y/n]Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
. Success!

By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n]Y
. Success!

Normally, root should only be allowed to connect from ‘localhost’. This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n]Y
. Success!

By default, MySQL comes with a database named ‘test’ that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n]Y
— Dropping test database.
. Success!
— Removing privileges on test database.
. Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
. Success!

All done! If you’ve completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL!

Что делает скрипт mysql_secure_installation ? :

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

* задали пароль для супер пользователя root (с системным root он не имеет ничего общего, это абсолютно два разных пользователя), так как по умолчанию для него не установлен пароль;
* удалили анонимного пользователя, который создается только для тестовых целей;
* запретили пользователю root входить удаленно. Теперь он сможет заходить только с localhost;
* удалили тестовую БД test и доступ к ней;

можно не использовать скрипт, но как минимум сменить пароль на root необходимо:

Первоначальная настройка mysql

Здравствуйте! Установил mysqlserver по инструкции:
https://info-comp.ru/sisadminst/448-. windows-7.html
После установки запускаю mysqlWorkbench и столкнулся со следующими предупреждениями\ошибками (изображения ниже).
Прописал в переменных средах в path путь вида C:\Program Files\MySQL\MySQL Server 5.7\bin.

Если для устранения проблем нужен фаил my.ini, то его по пути C:\Program Files\MySQL\MySQL Server 5.7\ нет(смотрел с показом скрытых фаилов) или он где то в другой директории?

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

14.04.2020, 16:14

настройка MySQL
У меня такая проблема.Поставил PHP 4.30 и MySQL 5.0.24.при подключении к базе выдается такая.

Установка и настройка mysql
Товарищи, помогите! устанавливаю apache 2.2 — работает, устанавливаю после этого php 5.2.17 -.

Centos 6.6 настройка MySQL
скачиваю через yum MySQL и MySQL-server. запускаю service mysqld start И в консоли пытаючь.

MySQL настройка кодировки
Как изменить кодировку в UTF-8, при выводе, записи и обновлении.

настройка MySQL на интернет
Всем привет! Помогите настроить MySql . вообщем решил из домашнего ноута сделать.

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