Centos, где расположены базы данных mysql

Обновлено: 06.07.2024

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

Для некоторых методов установки MySQL инициализация каталога данных выполняется автоматически, как описано в разделе Настройка и тестирование после установки.

Для других методов установки необходимо вручную инициализировать каталог данных. К ним относятся установка из стандартных двоичных и исходных дистрибутивов в Unix и Unix-подобных системах, а также установка из пакета ZIP-архива в Windows.

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

Обзор инициализации каталога данных

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

Измените местоположение на каталог верхнего уровня вашей установки MySQL, обычно это /usr/local/mysql (при необходимости измените путь для вашей системы):

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

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

Предоставить право собственности на пользователя и группу каталога пользователю mysql и группе mysql и соответствующим образом установить права доступа к каталогу:

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

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

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

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

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

Если вы хотите развернуть сервер с автоматической поддержкой безопасных соединений, используйте утилиту mysql_ssl_rsa_setup для создания файлов SSL и RSA по умолчанию:

При отсутствии каких-либо файлов параметров сервер запускается с настройками по умолчанию. (См. Параметры конфигурации сервера по умолчанию.) Чтобы явно указать параметры, которые сервер MySQL должен использовать при запуске, поместите их в файл параметров, такой как /etc/my.cnf или /etc/mysql/my.cnf. (См. Использование файлов опций.) Например, вы можете использовать файл опций для установки системной переменной secure_file_priv.

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

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

Процедура инициализации каталога данных

Измените местоположение на каталог верхнего уровня вашей установки MySQL, обычно это /usr/local/mysql (при необходимости измените путь для вашей системы):

Чтобы инициализировать каталог данных, вызовите mysqld с параметром --initialize или --initialize-insecure, в зависимости от того, хотите ли вы, чтобы сервер генерировал случайный начальный пароль для учетной записи 'root'@'localhost' или создайте эту учетную запись без пароля:

Используйте --initialize для "безопасной по умолчанию" установки (то есть, включая создание случайного начального пароля root). В этом случае пароль помечается как просроченный, и вы должны выбрать новый.

С --initialize-insecure пароль root не создается. Это небезопасно; предполагается, что вы своевременно назначите пароль для учетной записи перед вводом сервера в эксплуатацию.

Инструкции по назначению нового пароля 'root'@'localhost' см. в разделе Назначение пароля root после инициализации.

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

В Windows используйте параметр --console, чтобы направлять сообщения на консоль.

В качестве альтернативы можно выполнить mysqld при входе в систему как mysql , и в этом случае вы можете опустить параметр --user в команде.

В Windows используйте одну из следующих команд:

Может потребоваться указать другие параметры, такие как --basedir или --datadir, если mysqld не может определить правильное расположение каталога установки или каталога данных. Например (введите команду одной строкой):

В качестве альтернативы можно поместить соответствующие настройки параметров в файл параметров и передать имя этого файла в mysqld . Для Unix и Unix-подобных систем предположим, что файл опций имеет имя /opt/mysql/mysql/etc/my.cnf. Поместите эти строки в файл:

Затем вызовите mysqld следующим образом (сначала введите команду в одной строке с параметром --defaults-file):

В Windows предположим, что C:\my.ini содержит следующие строки:

Затем вызовите mysqld следующим образом (сначала введите команду в одной строке с параметром --defaults-file):

Действия сервера во время инициализации каталога данных

Последовательность инициализации каталога данных, выполняемая сервером, не заменяет действия, выполняемые mysql_secure_installation и mysql_ssl_rsa_setup. См. mysql_secure_installation — Повышение безопасности установки MySQL и mysql_ssl_rsa_setup — Создание файлов SSL/RSA.

При вызове с параметром --initialize или --initialize-insecure mysqld выполняет следующие действия во время последовательности инициализации каталога данных:

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

Если каталог данных не существует, сервер создает его.

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

В этом случае удалите или переименуйте каталог данных и повторите попытку.

Начиная с MySQL 5.7.11 существующий каталог данных может быть непустым, если каждая запись имеет имя, начинающееся с точки ( . ), или названа с использованием параметра --ignore-db-dir.

Избегайте использования параметра --ignore-db-dir, который устарел, начиная с версии MySQL 5.7.16.

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

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

После того, как mysqld настроит системное табличное пространство InnoDB, некоторые изменения в характеристиках табличного пространства требуют установки совершенно нового экземпляра. Квалификационные изменения включают имя первого файла в системном табличном пространстве и количество журналов отмены. Если вы не хотите использовать значения по умолчанию, убедитесь, что параметры конфигурации innodb_data_file_path и innodb_log_file_size заданы в файле конфигурации MySQL перед запуском mysqld . Также не забудьте указать при необходимости другие параметры, влияющие на создание и расположение файлов InnoDB, такие как innodb_data_home_dir и innodb_log_group_home_dir .

Если эти параметры есть в вашем файле конфигурации, но этот файл находится не в том месте, которое MySQL читает по умолчанию, укажите расположение файла с помощью параметра --defaults-extra-file при запуске mysqld .

Сервер создает учетную запись суперпользователя 'root'@'localhost' и другие зарезервированные учетные записи (см. Зарезервированные учетные записи). Некоторые зарезервированные учетные записи заблокированы и не могут использоваться клиентами, но 'root'@'localhost' предназначен для административного использования, и вам следует назначить для него пароль.

Действия сервера в отношении пароля для учетной записи 'root'@'localhost' зависят от того, как вы его вызываете:

С --initialize, но не с --initialize-insecure сервер генерирует случайный пароль, помечает его как просроченный и пишет сообщение, отображающее пароль:

С --initialize-insecure (с --initialize или без него, поскольку --initialize-insecure подразумевает --initialize ) сервер не генерирует пароль и не помечает его как просроченный, а выводит предупреждающее сообщение:

Инструкции по назначению нового пароля 'root'@'localhost' см. в разделе Назначение пароля root после инициализации.

Сервер заполняет справочные таблицы на стороне сервера, используемые для оператора HELP (см. Оператор HELP). Сервер не заполняет таблицы часовых поясов. Чтобы сделать это вручную, см. раздел Поддержка часовых поясов сервера MySQL.

Если системная переменная init_file была задана для имени файла операторов SQL, сервер выполняет операторы в файле. Этот параметр позволяет выполнять пользовательские последовательности начальной загрузки.

Когда сервер работает в режиме начальной загрузки, некоторые функции недоступны, что ограничивает операторы, разрешенные в файле. К ним относятся операторы, относящиеся к управлению аккаунтом (например, CREATE USER или GRANT ), репликации и глобальным идентификаторам транзакций.

Сервер закрывается.

Присвоение пароля root после инициализации

После того, как вы инициализируете каталог данных, запустив сервер с --initialize или --initialize-insecure , запустите сервер в обычном режиме (то есть без любого из этих параметров) и назначьте учетной записи 'root'@'localhost' новый пароль:

Запустите сервер. Инструкции см. в разделе Запуск сервера.

Подключиться к серверу:

Если вы использовали --initialize, но не --initialize-insecure для инициализации каталога данных, подключитесь к серверу как root:

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

Если вы не знаете этот пароль, просмотрите журнал ошибок сервера.

Если вы использовали --initialize-insecure для инициализации каталога данных, подключитесь к серверу как пользователь root без пароля:

После подключения используйте оператор ALTER USER, чтобы назначить новый пароль root:

Попытки подключиться к хосту 127.0.0.1 обычно разрешаются в учетную запись localhost. Однако это не удается, если сервер запущен с включенным skip_name_resolve. Если вы планируете это сделать, убедитесь, что существует учетная запись, которая может принимать соединение. Например, чтобы иметь возможность подключаться как root, используя --host=127.0.0.1 или --host=::1 , создайте следующие учетные записи:

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

По умолчанию база данных MySQL будет создана в каталоге /var/lib/mysql.

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

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

Чтобы изменить каталог MySQL на высоком уровне, необходимо выполнить следующие три шага:

  1. Переместите файлы базы данных MySQL из /var/lib/mysql в другой раздел
  2. Измените файл my.cnf, указав новое расположение каталога
  3. Обновите параметры безопасности, чтобы отразить изменение каталога: в CentOS или RedHat измените параметры SELinux. В Ubuntu или Debian измените настройки AppArmor.

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

Создать резервную копию текущей версии MySQL

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

По умолчанию база данных MySQL будет находиться в каталоге /var/lib/mysql. Скопируйте этот каталог mysql в другое место для резервного копирования.

Переместить каталог данных MySQL в другой раздел

В этом примере моим корневым разделом является /dev/sda1, в котором не так много места для каталога по умолчанию /var/lib/mysql. Но у меня есть раздел /data на диске /dev/sdb1, на котором много места.

Итак, я перенесу базу данных MySQL из раздела / в раздел /data.

Создайте следующий каталог и переместите данные mysql из /var/lib в /data/var/lib, как показано ниже.

Несколько моментов, которые следует учитывать:

  • Вы также можете переместить каталог mysql в каталог /data/var/lib/ и создать символическую ссылку из /var/lib, указывающую на /data/var/lib. Но в данном конкретном случае я предпочитаю описанное выше простое перемещение каталога без символической ссылки, чтобы избежать путаницы.
  • Если возможно, попробуйте использовать команду перемещения для перемещения каталога (вместо копирования). Когда вы выполняете копирование, контекст SELinux будет потерян, и вам придется установить его вручную позже (как объяснено ниже). Но при перемещении соответствующий контекст SELinux для MySQL сохраняется, и вам не нужно беспокоиться об его изменении.

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

Измените my.cnf и запустите MySQL

В файле /etc/my.cnf вам необходимо изменить параметр datadir и socket и указать им новый каталог, как показано ниже.

Наконец, перезапустите базу данных MySQL.

Если в файле my.cnf уже определен параметр tmpdir, измените также каталог для этого параметра:

Если после изменения каталога данных и сокета в файле my.cnf MySQL не запускается или завершается ошибкой с сообщением об отказе в доступе, вам необходимо настроить SELinux (или AppArmor), как описано в следующих разделах.

Тип контекста SELinux для MySQL

Используйте команду ls -Z для просмотра контекста SELinux.Перед перемещением каталога в моей базе данных MySQL был контекст SELinux. В этом примере «thegeekstuff» — это база данных MySQL в каталоге /var/lib/mysql.

Как вы видите здесь, mysqld_db_t — это тип контекста SELinux.

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

Примечание. Если вы сделали копию каталога (вместо перемещения), вы заметите, что он изменился. В этом случае измените контекст SELinux, как описано ниже.

Если контекст SELinux неверен, вы увидите следующее сообщение об ошибке (или что-то подобное) в журнале аудита (или /var/log/messages)

Кроме того, вы увидите следующее в файле mysqld.log, если не удалось запустить базу данных MySQL.

Настройка SELinux для MySQL на CentOS/RedHat (вариант 1)

С помощью команды chcon вы можете изменить тип контекста SELinux в новом каталоге, как показано ниже.

В приведенной выше команде:

  • chcon — это команда для изменения контекста SELinux
  • Опция -R рекурсивно изменит контекст для данного каталога и всех подкаталогов.
  • Параметр
  • -t используется для указания типа контекста SELinux, который следует установить. В этом примере мы устанавливаем тип mysqld_db_t.
  • /data — это каталог, в котором будет выполняться эта команда.

Примечание. Начните изменять контекст с каталога верхнего уровня /data (а не с каталога mysql), который будет включать каталог mysql, все подкаталоги и файлы.

Настройка SELinux для MySQL на CentOS/RedHat (вариант 2)

Используя команду restorecon, вы можете восстановить правильный тип контекста SELinux. Но в этом случае вы должны сообщить SELinux, какой контекст является правильным, добавив тип mysqld_db_t в контекстную карту SELinux.

Чтобы добавить тип SELinux в контекстную карту, используйте команду semanage. Установите пакет policycoreutils-python, который содержит команду semanage.

Затем выполните следующую команду, чтобы установить контекстную карту SELinux в новом каталоге.

В приведенной выше команде мы добавляем mysqld_db_t в карту контекста для каталога /data всех подкаталогов и файлов, находящихся под ним.

Наконец, используйте команду restorecon, которая восстановит соответствующий контекст SELinux в новый каталог /data.

Убедитесь, что перемещенный новый каталог /data и подпапки mysql имеют правильный контекст SELinux.

Примечание. Вы также можете использовать параметр -e вместе с fcontext. Это сделает метку контекста для /data и его подкаталогов такой же, как метка контекста /var/lib/mysql

Настройка AppArmor для MySQL в Ubuntu/Debian

После перемещения каталога данных MySQL в новое место, если вы не выполните следующие действия в Ubuntu, вы получите эту ошибку при запуске базы данных mysql: «(errno: 13)» (отказано в доступе).< /p>

Измените файл usr.sbin.mysqld, как показано ниже, и добавьте следующие две строки. Не забудьте запятую в конце строки, которая обязательна.

Затем выполните следующую команду, чтобы повторно проанализировать этот новый файл конфигурации apparmor для mysql и перезапустить apparmor.

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

Параметр сокета клиента MySQL

После вышеуказанного изменения вы можете получить это сообщение об ошибке при подключении из клиента mysql: ОШИБКА 2002 (HY000): не удается подключиться к локальному серверу MySQL через сокет '/var/lib/mysql/mysql.sock' ( 2)

В этом случае передайте параметр –socket клиенту mysql и укажите файл mysql.sock, расположенный в новом каталоге.

Если вы вызываете клиент mysql локально, вы также можете использовать параметр -h и передать 127.0.0.1, как показано ниже. Это также позволит избежать сообщения об ошибке mysql.sock.

Если вам понравилась эта статья, вам также может понравиться...

Комментарии к этой записи закрыты.

Это хороший краткий мануал!
Спасибо!

простой и короткий метод. Я столкнулся со всеми проблемами, которые здесь обсуждаются. Теперь понятна логика некоторых шагов.

Почему бы не сделать следующее:

<р>1. Остановите mysqld
2. Переименуйте /var/lib/mysql в /var/lib/mysql-backup
3. Создайте том на RAID-массиве или на жестком диске с достаточным пространством
4. Смонтируйте этот том в /var/lib/mysql
5. Скопируйте все файлы из /var/lib/mysql-backup в /var/lib/mysql
6. Запустить myslqd

Таким образом, базы данных mysql остаются в исходном расположении.

Изменения, внесенные с помощью команды chcon, не сохранятся после изменения метки файловой системы или выполнения команды restorecon. Забудьте о команде chcon и всегда используйте semanage.

Спасибо за это быстро и легко!

Дополнительное примечание, которое поставило меня в тупик на целый день (запустив Ubuntu), выдало бы мне ту же ошибку, что и при не настроенном AppArmour, т.е.:

Запуск mysql (через systemctl): mysql.serviceJob для mysql.служба не удалась, так как процесс управления завершился с кодом ошибки. Дополнительные сведения см. в разделах «systemctl status mysql.service» и «journalctl -xe».

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

sudo mkdir /var/lib/mysql/mysql -p

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

2016-12-28T23:12:48.369028Z 0 [Примечание] InnoDB: загрузка пулов буферов из /data/mysql/var/lib/mysql//ib_buffer_pool
2016-12-28T23:12 :48.369217Z 0 [ОШИБКА] InnoDB: невозможно открыть '/data/mysql/var/lib/mysql//ib_buffer_pool' для чтения: разрешение отклонено
2016-12-28T23:12:48.369344Z 0 [Примечание] Плагин «ФЕДЕРАТИВНАЯ» отключена.
2016-12-28T23:12:48.377825Z 0 [Примечание] Имя хоста сервера (адрес привязки): ‘*’; порт: 3306
2016-12-28T23:12:48.378334Z 0 [Примечание] IPv6 доступен.
2016-12-28T23:12:48.378352Z 0 [Примечание] – ‘::’ разрешается в ‘::’;
2016-12-28T23:12:48.378370Z 0 [Примечание] Сокет сервера создан на IP: ‘::’.
2016-12-28T23:12:48.378770Z 0 [ОШИБКА] Не удалось создать файл блокировки сокета unix /data/mysql/var/lib/mysql/mysql.sock.lock.
2016-12-28T23:12:48.378779Z 0 [ОШИБКА] Невозможно настроить файл блокировки сокета unix.
2016-12-28T23:12:48.378783Z 0 [ОШИБКА] Прерывание
Я проверил свой отчет об аудите, чтобы узнать, сообщал ли он что-то об этих проблемах с разрешениями, и ничего не вижу:

/data/mysql/var/lib/mysql/sys:
Все та же ошибка. Пожалуйста, помогите.

вот содержимое файла my.cnf:

Здравствуйте, Анируд! Надеюсь, вы уже решили свою проблему. Из вашего журнала ошибок кажется, что движок innodb вышел из строя из-за пула innodb_buffer. Я бы посоветовал вам установить значение innodb_buffer_pool_size больше, чем 70% от размера ОЗУ вашей системы.


Мне нужно знать, где находится моя база данных Retain. Как мне это узнать, если моя система баз данных — MySQL 5.0, 5.1 или 5.5?

Эта статья базы знаний (KB) предоставляется только в информационных целях и в качестве любезной услуги для вас, нашего клиента. Служба технической поддержки GWAVA не имеет опыта администрирования баз данных (DBA) и не предоставляет услуги или поддержку DBA. GWAVA не несет ответственности за результаты реализации каких-либо концепций, содержащихся в этой статье базы знаний. Реализация любой из концепций, предложенных в этой статье базы знаний, осуществляется исключительно на ваш страх и риск, и GWAVA не предоставляет никаких гарантий, вытекающих из вашего решения реализовать какую-либо из концепций статьи базы знаний. Вам решать, проводить ли какие-либо исследования и удостовериться, что любая реализация и настройка любой из концепций статьи базы знаний в вашей системе базы данных выполняется правильно и должным образом. Крайне важно, чтобы у вас были резервные копии вашей системы баз данных и каталога хранения перед выполнением какой-либо реализации. Если у вас нет опыта администратора баз данных, вам следует проконсультироваться с экспертом администратора баз данных перед любым внедрением концепций, изложенных в статье базы знаний. Ни при каких обстоятельствах GWAVA или любой из ее сотрудников не несет ответственности по договору, правонарушению, правонарушению или иным образом, независимо от того, доказуема ли халатность или нет, за любой прямой, косвенный, случайный, специальный, штрафной, последующий или другой ущерб, убытки. , затраты или обязательства, которые могут возникнуть в результате или связаны с реализацией любой из концепций, предложенных в статье базы знаний.


Насколько это разрешено применимым законодательством, GWAVA не несет ответственности перед вами за какие-либо конкретные, косвенные, прямые, косвенные или аналогичные убытки, включая любую потерю данных, возникающую в результате переноса любого типа сообщений, вложения, базу данных, метаданные в вашей системе Сохраните на другом сервере и/или в другом месте.

Разрешение


«Каталог данных» MySQL (также известный как «каталог данных») — это область, в которой будет храниться база данных Retain. Если вы правильно разместили каталог данных, вы увидите файл с именем «ibdata1», а в родительском каталоге будет подкаталог с именем «retain». MySQL может иметь несколько каталогов данных, поэтому, если вы не видите подкаталог «retain», значит, у вас нет правильного каталога данных, в котором хранится база данных Retain.

<р>1. Откройте файл конфигурации MySQL: less /etc/my.cnf

<р>2. Найдите термин «каталог данных»: /datadir

<р>3. Если он существует, будет выделена строка следующего содержания: datadir = [путь]

<р>4. Вы также можете вручную найти эту строку. Обычно его можно найти под заголовком раздела [mysqld], но это не обязательно должно быть там.

<р>5. Если эта строка не существует, то MySQL по умолчанию использует: /var/lib/mysql.

Окна
1. Откройте файл конфигурации MySQL в Блокноте: my.ini

Файл my.ini будет находиться в папке программы MySQL, где бы он ни был установлен. Если вы не устанавливали MySQL, используйте функцию поиска Windows, чтобы найти файл my.ini.Вы также можете выполнить поиск вручную, перейдя в папку [диск]:\Program Files\MySQL\MySQL Server 5.5\ .

<р>2. Выполните поиск в Блокноте, чтобы найти термин "каталог данных".

<р>3. Если он существует, будет выделена строка следующего содержания: datadir = [путь]

<р>4. Вы также можете вручную найти эту строку. Обычно его можно найти под заголовком раздела [mysqld], но это не обязательно должно быть там.

<р>5. Если этой строки не существует, вы, вероятно, найдете ее в папке [диск]:\ProgramData\MySQL\MySQL Server 5.5\data .

ПРИМЕЧАНИЕ. Папка ProgramData может быть скрыта. Возможно, вам придется ввести явный путь в проводнике Windows.

Дополнительная информация

Базы данных постоянно растут, и в какой-то момент они, вероятно, перерастут ваш раздел /, особенно в наши дни, в эпоху «облака», когда вы можете быть ограничены небольшим разделом /, но можете заплатить за добавление объемного хранилища, или прикрепите больше дисков. В качестве альтернативы вы можете переместить базу данных в отдельное место, потому что хотите настроить какой-либо метод создания моментальных снимков, например ZFS или LVM.

В этом руководстве я покажу вам, как изменить или переместить каталог данных в новое место в CentOS 7.

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

В приведенном выше выводе можно увидеть каталог данных MySQL по умолчанию /var/lib/mysql/. Итак, мы собираемся переместить этот каталог. Подтвердив это, введите exit и нажмите «ENTER», чтобы выйти из монитора:

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

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

Теперь служба MySQL отключена, давайте начнем копировать существующий каталог данных в новое место с помощью команды rsync, используя опцию --a для сохранения разрешений и других свойств каталога, в то время как -v предоставляет подробный вывод, чтобы вы могли следить за ходом выполнения.

Убедитесь, что в конце каталога нет косой черты, которая может быть добавлена, если вы используете завершение с помощью табуляции. Когда в конце стоит косая черта, rsync выгружает содержимое каталога в точку монтирования вместо того, чтобы передавать его в содержащий каталог mysql.

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

По умолчанию каталог данных MySQL установлен в /var/lib/mysql в файле /etc/my.cnf. Теперь отредактируйте этот файл, чтобы отразить новый каталог данных, как показано ниже.

Сохранить и закрыть файл.

После обновления существующих строк нам потребуется добавить конфигурацию для клиента mysql. Вставьте следующие настройки в конец файла, чтобы он не разделял директивы в блоке [mysqld].

Сохранить и закрыть файл.

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

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

В приведенном выше выводе вы можете видеть, что расположение нового каталога данных MySQL — /mnt/data/mysql/.

Вам также может понравиться

Как установить сервер MySQL на CentOS/Redhat 6/7/8

Как изменить пароль пользователя MySQL

Как включить журнал медленных запросов в MySQL 5.6

Как установить сервер MongoDB в системе на основе Ubuntu и Debian

Как установить MySQL 8.0 в системах CentOS, RHEL и Fedora

Как отключить строгий режим SQL в MySQL 5.7

Пропустить повторяющуюся ошибку репликации в MySQL

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

Как: - изменить таблицу или добавить несколько столбцов в таблицу? – MySQL

Инструкция по изменению таблицы в MySQL: как изменить столбец в таблице

Выражение Alter Table в MySQL: как изменить несколько столбцов в таблице

Выражение Alter Table в MySQL: как удалить столбец в таблице

Инструкция по изменению таблицы в MySQL: как переименовать столбец в таблице

Инструкция по изменению таблицы в MySQL: как переименовать таблицу

ОШИБКА 1130 (HY000): хосту не разрешено подключаться к этому серверу MySQL

Как настроить репликацию главного и подчиненного сервера MySQL с помощью Rsync

Как установить и настроить phpMyAdmin в CentOS 7

Как настроить репликацию MySQL Master Slave с помощью Percona XtraBackup

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

Как установить PostgreSQL 10 на CentOS/RHEL 7/6 и Fedora 26/25

Исправить phpMyAdmin: разблокировать с помощью «mysqladmin flush-hosts» / «Ошибочный хост» заблокирован из-за большого количества подключений

Как установить MySQL 8.0 на CentOS, RHEL и Fedora

Пример из практики: альтернативный способ восстановления корневого пароля MySQL

Установка Percona XtraBackup на RHEL и CentOS

Быстрее восстановить резервную копию Mysqldump

Как настроить репликацию GTID в MySQL 5.6

MySQL: показать, сколько INSERT, UPDATE, DELETE в двоичном файле журнала

Как изменить местоположение двоичного файла журнала MySQL на другой каталог

Восстановить базу данных MySQL из файла дампа

Резервное копирование базы данных MySQL из командной строки

Сценарий автоматического резервного копирования базы данных MySQL

Шаги по настройке репликации MySQL Master Slave

Как извлечь таблицы из файла дампа MySQL

Как восстановить корневой пароль MySQL

Как подключиться к серверу MySQL без запроса пароля

Не удается подключиться к серверу базы данных MySQL из PHP

Действия перед выключением сервера MySQL

Как переустановить MySQL Server v5.x в Linux

Автоматическая установка и настройка — Apache/Nginx, MySQL, PHP или PHP-FPM в Linux/UNIX

Как найти размер таблицы и базы данных в MySQL

Как установить только клиент MySQL на CentOS/Redhat 6/7/8 или Ubuntu

Изменить каталог данных MySQL по умолчанию на новое местоположение в Linux

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

Почему вам следует обновить программное обеспечение базы данных с открытым исходным кодом?

Основные команды MySQL для администратора баз данных

Добавление нескольких серверов баз данных MySQL в одну установку PhpMyAdmin

Руководство: - Как установить сервер MySQL 5.6 на CentOS / Redhat 6/7/8

Типы резервного копирования MySQL

Типы транзакций в MySQL

Как перенести MariaDB на MySQL?

Как настроить и установить PhpMyAdmin с Apache

Об авторе

Сантош Прасад

Привет! Меня зовут Сантош, и я здесь, чтобы опубликовать для вас классную статью. Если у вас есть какие-либо вопросы и предложения, прокомментируйте их в разделе комментариев.

2 комментария

Следил за этим блогом для MySQL5.7 в CentOS 8, чтобы переместить /var/lib/mysql по умолчанию в мою точку монтирования NFSv4.1 /mnt/mysql57, но во время запуска mysqld я получил следующую ошибку:

***** Уловка плагина (100. достоверность) предлагает **************************

***** Уловка плагина (100. достоверность) предлагает **************************

***** Уловка плагина (100. достоверность) предлагает **************************

[клиент]
port=3306
socket=/mnt/mysql57/mysql/mysql.sock

[[email protected] mysql57]$ df -h
Используемый размер файловой системы Доступное использование% Установлено на
devtmpfs 7.7G 0 7.7G 0% /dev
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 7.8G 9.5M 7.7G 1% /run
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/mapper/cl- root 70G 5.7G 65G 9% /
/dev/mapper/cl-home 122G 911M 121G 1% /home
/dev/sda1 1014M 239M 776M 24% /boot
tmpfs 1.6G 1.2 M 1.6G 1% /run/user/42
tmpfs 1.6G 6.9M 1.6G 1% /run/user/1000
XXXXXXXXXXXXXXXXXX:/mysql-centos 2.0T 800M 2.0T 1% /mnt/ mysql57
(IP-адрес пути монтирования замаскирован из соображений безопасности)

Читайте также: