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

My cnf mysql где находится

  • автор:

Где найти файл my.cnf?

5f48b61bc4427344343768.png

Логично, что /etc/mysql/my.cnf то что мне нужно, но когда я открываю его получаю вот такое:

В итоге, цель следующая:
Я имею проблему с ошибкой: MySQL Server Has Gone Awa
Рекомендации: Увеличить max_allowed_packet и wait_timeout .

max_allowed_packet — Я увеличил в /etc/mysql/mysql.conf.d/mysqld.cnf и кажется после перезагрузки сервера параметр остался (проверял через команду в phpmyadmin)
wait_timeout — Отсутствует в файле: /etc/mysql/mysql.conf.d/mysqld.cnf и поэтому не могу понять где его изменять.

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

my.cnf примеры конфигурации MySQL, MariaDB

my.cnf является конфигурационным файлом базы данных MySQL и MariaDB.

Где находится и какой используется my.cnf

Для поиска всех возможных расположений файла my.cnf, вместо команды find проще и быстрее использовать предварительно обновленную утилиту locate:

# locate my.cnf /etc/my.cnf /etc/my.cnf.d /etc/mysql/my.cnf

В этом случае слава богу файл my.cnf один на весь сервер, а в действительности их может быть несколько и мало того они могут наследовать другу другу.

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

Имя файла Назначение
/etc/my.cnf Общие параметры
DATADIR/my.cnf Параметры для сервера
defaults-extra-file Файл, указанный при помощи -defaults-extra-file=#
~/.my.cnf Параметры для пользователя

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.

Примеры конфигураций

Если в вашем конфигурационном файле есть настройка thread_concurrency — уберите её.

Пример настроек Mysql для сервера с 1Гб оперативной памяти и двумя ядрами

client] port = 3306 socket = /var/run/mysqld/mysqld.sock [mysqld_safe] socket = /var/run/mysqld/mysqld.sock nice = 0 [mysqld] user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp language = /usr/share/mysql/english old_passwords = 0 bind-address = 127.0.0.1 skip-external-locking max_allowed_packet = 16M key_buffer_size = 16M [p:innodb_buffer_pool_size] = 512M [p:innodb_file_per_table] = 1 [p:innodb_flush_method] = O_DIRECT [p:innodb_flush_log_at_trx_commit] = 0 thread_stack = 128K [p:thread_cache_size] = 128 myisam-recover = BACKUP max_connections = 128 table_cache = 32 query_cache_limit = 1M [p:query_cache_size] = 4M [p:slow_query_log] = /var/log/mysql/mysql-slow.log long_query_time = 1 expire_logs_days = 10 [p:max_binlog_size] = 100M [mysqldump] quick quote-names max_allowed_packet = 16M

Для 2Гб оперативной памяти

[client] port = 3306 socket = /var/run/mysqld/mysqld.sock [mysqld_safe] socket = /var/run/mysqld/mysqld.sock nice = 0 [mysqld] user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp language = /usr/share/mysql/english old_passwords = 0 bind-address = 127.0.0.1 skip-external-locking max_allowed_packet = 16M key_buffer_size = 16M innodb_buffer_pool_size = 1024M innodb_file_per_table = 1 innodb_flush_method = O_DIRECT innodb_flush_log_at_trx_commit = 0 max_connections = 136 query_cache_size = 0 slow_query_log = /var/log/mysql/mysql-slow.log long_query_time = 1 expire_logs_days = 10 max_binlog_size = 100M [mysqldump] quick quote-names max_allowed_packet = 16M

Для 4Гб оперативной памяти

[client] port = 3306 socket = /var/run/mysqld/mysqld.sock [mysqld_safe] socket = /var/run/mysqld/mysqld.sock nice = 0 [mysqld] user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp language = /usr/share/mysql/english old_passwords = 0 bind-address = 127.0.0.1 skip-external-locking max_allowed_packet = 16M key_buffer_size = 16M innodb_buffer_pool_size = 2048M innodb_file_per_table = 1 innodb_flush_method = O_DIRECT innodb_flush_log_at_trx_commit = 0 max_connections = 144 query_cache_size = 0 slow_query_log = /var/log/mysql/mysql-slow.log long_query_time = 1 expire_logs_days = 10 max_binlog_size = 100M [mysqldump] quick quote-names max_allowed_packet = 16M

Для 8Гб оперативной памяти

[client] port = 3306 socket = /var/run/mysqld/mysqld.sock [mysqld_safe] socket = /var/run/mysqld/mysqld.sock nice = 0 [mysqld] user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp language = /usr/share/mysql/english old_passwords = 0 bind-address = 127.0.0.1 skip-external-locking max_allowed_packet = 16M key_buffer_size = 16M innodb_buffer_pool_size = 4096M innodb_file_per_table = 1 innodb_flush_method = O_DIRECT innodb_flush_log_at_trx_commit = 0 max_connections = 160 query_cache_size = 0 slow_query_log = /var/log/mysql/mysql-slow.log long_query_time = 1 expire_logs_days = 10 max_binlog_size = 100M [mysqldump] quick quote-names max_allowed_packet = 16M

Для 16Гб оперативной памяти

[client] port = 3306 socket = /var/run/mysqld/mysqld.sock [mysqld_safe] socket = /var/run/mysqld/mysqld.sock nice = 0 [mysqld] user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp language = /usr/share/mysql/english old_passwords = 0 bind-address = 127.0.0.1 skip-external-locking max_allowed_packet = 16M key_buffer_size = 16M innodb_buffer_pool_size = 8192M innodb_file_per_table = 1 innodb_flush_method = O_DIRECT innodb_flush_log_at_trx_commit = 0 max_connections = 192 query_cache_size = 0 slow_query_log = /var/log/mysql/mysql-slow.log long_query_time = 1 expire_logs_days = 10 max_binlog_size = 100M [mysqldump] quick quote-names max_allowed_packet = 16M

Для 32Гб оперативной памяти

[client] port = 3306 socket = /var/run/mysqld/mysqld.sock [mysqld_safe] socket = /var/run/mysqld/mysqld.sock nice = 0 [mysqld] user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp language = /usr/share/mysql/english old_passwords = 0 bind-address = 127.0.0.1 skip-external-locking max_allowed_packet = 16M key_buffer_size = 16M innodb_buffer_pool_size = 16384M innodb_file_per_table = 1 innodb_flush_method = O_DIRECT innodb_flush_log_at_trx_commit = 0 max_connections = 256 query_cache_size = 0 slow_query_log = /var/log/mysql/mysql-slow.log long_query_time = 1 expire_logs_days = 10 max_binlog_size = 100M [mysqldump] quick quote-names max_allowed_packet = 16M

Для 64Гб оперативной памяти

[client] port = 3306 socket = /var/run/mysqld/mysqld.sock [mysqld_safe] socket = /var/run/mysqld/mysqld.sock nice = 0 [mysqld] user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp language = /usr/share/mysql/english old_passwords = 0 bind-address = 127.0.0.1 skip-external-locking max_allowed_packet = 16M key_buffer_size = 16M innodb_buffer_pool_size = 32768M innodb_file_per_table = 1 innodb_flush_method = O_DIRECT innodb_flush_log_at_trx_commit = 0 max_connections = 384 query_cache_size = 0 slow_query_log = /var/log/mysql/mysql-slow.log long_query_time = 1 expire_logs_days = 10 max_binlog_size = 100M [mysqldump] quick quote-names max_allowed_packet = 16M

Для 128Гб оперативной памяти

[client] port = 3306 socket = /var/run/mysqld/mysqld.sock [mysqld_safe] socket = /var/run/mysqld/mysqld.sock nice = 0 [mysqld] user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp language = /usr/share/mysql/english old_passwords = 0 bind-address = 127.0.0.1 skip-external-locking max_allowed_packet = 16M key_buffer_size = 16M innodb_buffer_pool_size = 65536M innodb_file_per_table = 1 innodb_flush_method = O_DIRECT innodb_flush_log_at_trx_commit = 0 max_connections = 640 query_cache_size = 0 slow_query_log = /var/log/mysql/mysql-slow.log long_query_time = 1 expire_logs_days = 10 max_binlog_size = 100M [mysqldump] quick quote-names max_allowed_packet = 16M

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

Виды кодировок символов — набор символов (character set, charset).
С версии MySQL 5.5.3 рекомендуется использовать кодировку utf8mb4_unicode_ci.

Что такое 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 в секции [mysqld] будет выглядит так:

[mysqld] #. 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.

Как подключиться к MySQL

Конфигурационный файл MyS QL в Linux системе обычно /etc/mysql/my.cnf или /etc/mysql/mysql.conf.d/mysqld.cnf.

В соответствующем файле находим и редактируем строку:
bind address = 127.0.0.1
и заменяем ее на:
bind address = 0.0.0.0
Как вариант, можно строку не заменять, а закомментировать текущее значение и добавить новое:
#bind-address = 127.0.0.1 <--- просто закомментировали. bind-address = 0.0.0.0
Сохраняем файл и перезапускаем сервер БД (в командной строке):
/# service mysql restart

Создаем пользователя для просмотра любой таблицы в любой базе (необходимо иметь пароль администратора для базы данных). В командной строке набираем:

/# mysql -uroot -p
Enter password: <--- вводим админ пароль (пользователя root@localhost) и переходим к вводу команд в БД (появляется префикс mysql>).
Создаём пользователя myuser с паролем myp@s123 и доступом с любого хоста (%):
mysql> CREATE USER ‘myuser’@’%’ IDENTIFIED BY ‘myp@s123’;
Query OK, 0 rows affected (0.02 sec)
Даем ему привилегию делать Select запрос к любой таблице:
mysql> GRANT SELECT ON *.* TO ‘myuser’@’%’;
Query OK, 0 rows affected (0.00 sec)
Применяем права :
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
Посмотрим список баз :
mysql> show databases;
| information_schema |
| cpirb | ← здесь будем использовать эту базу
| performance_schema |
| phpmyadmin |
9 rows in set (0.00 sec)
Выходим из консоли БД:
mysql> \q

Теперь можно подключиться к БД MyS QL из программы, если сервер БД и клиентский компьютер находятся в одной сети.

Если сервер удаленный и за файрволом, то можно сделать проброс TCP порта 3306 на внешний интерфейс. Работа в таком режиме небезопасна, лучше использовать VPN соединение с серверной сетью.

Где в Linux находятся базы MySQL

Чаще всего базы данных MySQL на Linux хосте находятся в директории /var/lib/mysql.

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

1) Самое простое и не самое точное: смотрим дату обновлений файлов в папке /var/lib/mysql. Если даты свежие, значит весьма вероятно, база данных лежит тут.

2) файл конфигурации «my.cnf»

MySQL (MariaDB) хранят настройки в файлах с расширением .cnf. По-умолчанию — файл my.cnf.

Скорее всего, это файл находится в /etc/my.cnf.

Лучше не гадать, а найти файлы my.cnf на хосте:

# find / -type f -name my.cnf
/etc/my.cnf

У меня в этом файле была единственная ссылка на директорию /etc/my.cnf.d, в которой были файлы:

auth_gssapi.cnf
client.cnf
enable_encryption.preset
mariadb-server.cnf
mysql-clients.cnf

В файле /etc/my.cnf.d/mariadb-server.cnf:

смотрим секцию mysqld:

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mariadb/mariadb.log
pid-file=/run/mariadb/mariadb.pid

Директория с базой данных: /var/lib/mysql

3) как еще можно искать конфиг базы mysql?

# mysql —help | grep /my.cnf
/etc/my.cnf ~/.my.cnf

# mysqladmin —help | grep /my.cnf
/etc/my.cnf ~/.my.cnf

Зная файл конфига, вы легко найдете расположение базы данных.

4) изврат, но почему бы и да?

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

# lsof -u mysql
.
mysqld 1084 mysql 17r DIR 253,0 4096 394860 /var/lib/mysql
mysqld 1084 mysql 18uW REG 253,0 114688 657855 /var/lib/mysql/postfix/domain_admins.ibd
mysqld 1084 mysql 19uW REG 253,0 98304 657859 /var/lib/mysql/postfix/vacation_notification.ibd
mysqld 1084 mysql 20uW REG 253,0 131072 657863 /var/lib/mysql/postfix/alias_domain.ibd
mysqld 1084 mysql 21uW REG 253,0 98304 657866 /var/lib/mysql/postfix/domain.ibd
mysqld 1084 mysql 22uW REG 253,0 114688 657856 /var/lib/mysql/postfix/mailbox.ibd

Сразу несколько файлов задействованы в директории /var/lib/mysql.

lsof вообще команда крайне полезная.

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

Почтовый сервер Mikrotik VPN 3proxy Шифрование Squid Резервное копирование Защита почты Виртуальные машины Настройка сервера java kvm Групповые политики SELinux OpenVPN IPFW WDS Lightsquid Samba firewalld systemd Mobile libvirt Remote desktop WiFi Iptables NAT Postfix Dovecot Удаление данных Софт Безопасность Winbox User agent Хостинг Передача данных Онлайн сервисы Privacy LetsEncrypt VPN сервер Настройка прокси RRDTool sendmail Rsync Linux SSH Система Windows Синхронизация Облако fail2ban FreeBSD

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

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