Включаем логи [журналы] MariaDB
Каталог для логов /var/log/mysql, для просмотра его содержимого воспользуйтесь командой(Рис.12):
ls -l /var/log/mysql/
Рис.12 — Просмотр содержимого /var/log/mysql.
Как видим, по умолчанию, включены только бинарные логи, но для контроля работоспособности и быстрого выявления ошибок сервера MariaDB, необходимо включить главный лог — general_log и лог ошибок — log_error.
Приступим!
Для этого нам придётся отредактировать главный конфигурационный файл — my.cnf:
sudo nano /etc/mysql/my.cnf
в нем нужно найти и раскомментировать строки(Рис.13):
general_log_file = /var/log/mysql/mysql.log general_log = 1
а так же дописать:
#log_error log_error = /var/log/mysql/mysql_error.log
Рис.13 — Подключаем логи MariaDB.
Сохраняем(Ctrl+o -> Enter) и закрываем(Ctrl+x -> Enter) конфигурационный файл.
И так мы указали, что логи будут писаться в файлы mysql.log и mysql_error.log в директории /var/log/mysql/, но этих файлов там нет, поэтому их следует создать и назначить правильные права.
Создаем файлы mysql.log и mysql_error.log в директории /var/log/mysql:
sudo touch /var/log/mysql/mysql.log sudo touch /var/log/mysql/mysql_error.log
Назначаем права на чтение и запись — для владельца, а для остальных только чтение:
sudo chmod 644 /var/log/mysql/mysql.log sudo chmod 644 /var/log/mysql/mysql_error.log
Делаем пользователя mysql владельцем файлов:
sudo chown mysql /var/log/mysql/mysql.log sudo chown mysql /var/log/mysql/mysql_error.log
На этом настройка журналов закончена, для того чтобы в файлы начали записываться логи, нужно перезапустить MariaDB:
sudo /etc/init.d/mysql restart
Чтения логов с помощью «tail», «tail -10» — выводит последние 10 строк лога, можете подобрать цифру удобную вам:
tail -10 /var/log/mysql/mysql.log
tail -10 /var/log/mysql/mysql_error.log
Шаг 2. — Установка MariaDB
Обновляем список пакетов.
sudo apt update
Устанавливаем mariadb-server и mariadb-client.(Рис.1) Лично у меня ничего не сработало со стандартным репозиторием. :c
sudo apt install mariadb-server mariadb-client
Рис.-1 — Не удалось найти пакеты mariadb-server и mariadb-client.
Всё плохо… Значит следует установить другой репозиторий и установить оттуда. Приступаем.
Для добавления репозитория нам понадобится пакет software-properties-common.(Рис.2)
sudo apt install software-properties-common
Рис.2 — Устанавливаем пакет software-properties-common.
Добавляем ключ репозитория.(Рис.3)
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
Рис.3 — Добавляем ключ репозитория.
Добавляем репозиторий.(Рис.4)
sudo add-apt-repository 'deb http://mirrors.supportex.net/mariadb/repo/10.2/ubuntu bionic main'
Рис.4 — Добавляем репозиторий.
Приступаем к установке mariadb-server и mariadb-client, из только что подключенного репозитория.(Рис.5)
sudo apt -y install mariadb-server mariadb-client
Рис.5 — Запускаем установку пакетов mariadb-server и mariadb-client.
В процессе установки появится окно, в котором нужно будет ввести новый пароль root для MariaDB. Вводим и подтверждаем.(Рис.6)
Рис.6 — Вводим и подтверждаем пароль root для MariaDB.
Далее ждём пока установится MariaDB. Приблизительно 1 мин.
После установки сразу проверим статус MariaDB. (Рис.7)
sudo service mariadb status
Рис.7 — Проверяем статус статус MariaDB.
У меня MariaDB запустилась сама сразу после установки. Об этом свидетельствует строчка — «Active: active (running)», также отсутствуют ошибки.
И MariaDB добавлена в автозагрузку по умолчанию. Это мы понимаем по слову «enabled;» В строке «Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; «.
«Ctrl+C» — выйти из режима просмотра статуса.
Если у вас MariaDB не запустилась, то запустите её командой:
sudo service mariadb start
Если у вас MariaDB не добавилась в автозагрузку, то добавьте её командой:
sudo systemctl enable mariadb
На этом установка MariaDB завершена. Но так же стоит запустить сценарий безопасности, для того чтобы удалить анонимных пользователей и тестовые базы данных.(Рис.8)
Опционные префиксы
MariaDB поддерживает определенные префиксы,которые могут быть использованы с опциями.Поддерживаются префиксы опций:
Опционный префикс | Description |
---|---|
Устанавливает значение параметра автоматически. Поддерживается только для определенных опций. Доступно в MariaDB 10.1.7 и новее. | |
Для всех логических параметров отключает настройку (эквивалентно установке на ). То же, что и . | |
Для всех булевых параметров включает настройку (эквивалентную установке на ). | |
Не производите ошибку,если опция не существует. | |
Устанавливает максимальное значение для опции. | |
Для всех логических параметров отключает настройку (эквивалентно установке на ). То же, что и . |
Например:
... autoset_open_files_limit disable_unix_socket enable_slow_query_log loose_file_key_management_filename = /etc/mysql/encryption/keyfile.enc loose_file_key_management_filekey = FILE:/etc/mysql/encryption/keyfile.key loose_file_key_management_encryption_algorithm = AES_CTR maximum_max_allowed_packet skip_external_locking
Can’t Create Test File
One of the first tests on startup is to check whether MariaDB can write to the data directory. When this fails, it will log an error like this:
May 13 10:24:28 mariadb3 mysqld: 2019-05-13 10:24:28 0 Can't create test file /usr/local/data/mariadb/mariadb3.lower-test May 13 10:24:28 mariadb3 mysqld: 2019-05-13 10:24:28 0 Aborting
This is usually a permission error on the directory in which this file is being written. Ensure that the entire is owned by the user running , usually . Ensure that directories have the «x» (execute) directory permissions for the owner. Ensure that all the parent directories of the upwards have «x» (execute) permissions for all (, , and ).
Once this is checked look at the and documentation below, or apparmor.
Что делать если не запускается MySQL?
Первым делом, если вы меняли настройки в конфигурационном файле надо проверить его на ошибки. Встроенной утилиты для таких целей нет, но можно запустить mysql daemon с опцией —help:
В начале вывода будут представлены обнаруженные в основном конфигурационном файле ошибки. Например, здесь я специально добавил несуществующую переменную. Вам остается только исправить ошибки и перезапустить mysql:
Если же это не сработало и вы все еще получаете ошибку, посмотрите лог загрузки systemd для этого сервиса:
Иногда здесь тоже можно найти полезную информацию, но в данном случае ничего нет. Следующий шаг — просмотр лога mysql. Если лог еще не включен, включаем его добавив такую строчку в /etc/mysql/my.cnf в секцию :
Затем снова пытаемся запустить сервис и смотрим на появившиеся в логе ошибки:
Здесь вы увидите ошибки, которые мешают запустить mysql. Здесь надо искать слова: Fail, Error, Warning, Aborted и так далее. Вам остается только их исправить. Исправить проблемы с синтаксисом, убрать опции, которые потребляют слишком много памяти и исправить другие проблемы. А теперь рассмотрим несколько распространенных проблем.
1. Изменение размера буфера innodb
Если вы измените значение директивы innodb_buffer_pool_size в большую или меньшую сторону пока сервис работает, то перезапустить вы его уже не сможете. Перед тем как менять значение директивы остановите mysql:
Затем удалите старые логи innodb или просто их переименуйте:
И только после этого можете снова запускать сервис, он запустится с новыми настройками размера буфера. Только будьте аккуратны с выбором размера. При слишком большом размере может не хватить памяти для запуска, так как весь буфер хранится в ОЗУ.
2. Ошибка Permission denied
MySQL хранит файлы базы данных на диске. У движка базы данных должен быть полный доступ к папке, в которой хранятся эти файлы. По умолчанию в Ubuntu это /var/lib/mysql/. Все файлы в этой папке должны принадлежать пользователю mysql:
Если это не так, исправляем командой:
3. Ошибка Address already in use
MySQL может использовать файловый сокет Linux или же сетевой сокет, тогда база данных будет доступна другим программам на порту 3306. Если сейчас уже запущен другой процесс mysql или какой-либо другой процесс занимает этот порт вы получите ошибку Address already in use. Чтобы ее решить смотрим какой процесс использует порт:
Например, здесь мы видим, что запущен другой экземпляр mysql с PID 11240. Вы можете его завершить с помощью kill:
Теперь база данных запуститься.
4. Ошибка corrupt database page Mysql
Если mysql завершился некорректно из-за недостатка памяти или других проблем, например, проблем с файловой системой, то таблицы innodb могут быть повреждены — corrupt database page. Это происходит не так часто. При такой проблеме вы увидите такую запись в логе:
Проблема серьезная, но решаемая. В самом сообщении об ошибке система рекомендует сделать резервную копию таблиц, удалить их и создать заново из резервной копии. Но для этого должна быть запущена база данных, а она не запускается.
Нам необходимо запустить mysql в режиме восстановления, в котором все повреждения таблиц будут игнорироваться. Для этого добавляем в конфигурационный файл /etc/mariadb/my.cnf строку:
Затем запускаем mysql:
Ошибок не будет и сервис запуститься. Нам остается только исправить таблицы. Для этого можно воспользоваться инструментом mysqlcheck:
Готово. Теперь возвращаемся в конфигурационный файл и комментируем или удаляем строку innodb_force_recovery.
После этого можно перезапустить mysql и сервис будет работать в обычном режиме:
Настройка назначения выхода журнала ошибок
MariaDB всегда записывает свой журнал ошибок,но место назначения настраивается.
Запись журнала ошибок в файл.
Чтобы настроить запись журнала ошибок в файл, вы можете установить системную переменную . Вы можете настроить конкретное имя файла. Однако, если конкретное имя файла не настроено, журнал по умолчанию будет записан в файл в каталоге .
переменная система может быть установлена в серверной в файле опций перед запуском сервера. Например, чтобы записать журнал ошибок в файл по умолчанию , вы можете настроить следующее:
... log_error
Если вы настроите конкретное имя файла в качестве системной переменной , и если это не абсолютный путь, то он будет относиться к каталогу . Например, если вы настроили следующее, журнал ошибок будет записан в в каталоге :
... log_error=mariadb.err
Если это относительный путь, тогда относится к каталогу .
Однако системная переменная также может быть абсолютным путем. Например:
... log_error=/var/log/mysql/mariadb.err
Другой способ настроить имя файла журнала ошибок, чтобы установить вариант, который конфигурирует MariaDB использовать общий префикс для всех файлов журналов (например , общий журнал запросов , журнал медленных запросов , журнал ошибок, бинарные журналы и т.д.). Имя файла журнала ошибок будет построено путем добавления к этому префиксу расширения . Например, если вы настроили следующее, то журнал ошибок по-прежнему будет записываться в в каталоге :
... log-basename=mariadb log_error
не может быть абсолютным путем. Имя файла журнала относится к каталогу .
Запись журнала ошибок в Stderr на Unix
В Unix, если системная переменная не установлена, то ошибки записываются в , что обычно означает, что сообщения журнала выводятся на терминал, который запустил .
Если системная переменная была установлена в файле опций или в командной строке, ее все равно можно указав —skip-log-error .
Запись журнала ошибок в Syslog на Unix
В Unix журнал ошибок также можно перенаправить в системный журнал . Как это будет сделано, зависит от того, как вы запускаете MariaDB.
Syslog с mysqld_safe
Если вы запустите MariaDB с , то журнал ошибок можно будет перенаправить в системный журнал. См. для получения дополнительной информации.
Syslog с Systemd
Если вы запускаете MariaDB с помощью , журнал ошибок также можно перенаправить в системный журнал. См. для получения дополнительной информации.
также имеет свою собственную систему ведения ,называемую журналом , и некоторые ошибки могут записываться в нее вместо этого. См. для получения дополнительной информации.
Запись журнала ошибок в консоль на Windows
В Windows, если указан параметр и если системная переменная не используется, то ошибки записываются в консоль. Если указаны оба параметра, приоритет имеет последний вариант.
Запись журнала ошибок в программу просмотра событий Windows Event Viewer
В Windows сообщения журнала об ошибках также записываются в средство просмотра событий Windows. Вы можете найти сообщения журнала ошибок MariaDB, просмотрев журналы Windows и выбрав приложение или журнал приложений , в зависимости от версии Windows.
В MariaDB 10.3 и ранее вы можете найти сообщения журнала ошибок MariaDB, выполнив поиск по Source .
В MariaDB 10.4 и более поздних версиях вы можете найти сообщения журнала ошибок MariaDB, выполнив поиск по источнику .
The Error Log and the Data Directory
The reason for the failure will almost certainly be written in the error log and, if you are starting MariaDB manually, to the console. By default, the error log is named host-name.err and is written to the data directory.
Common Locations:
- /var/log/
- /var/log/mysql
- C:\Program Files\MariaDB x.y\data (x.y refers to the version number)
- C:\Program Files (x86)\MariaDB x.y\data (32bit version on 64bit Windows)
It’s also possible that the error log has been explicitly written to another location. This is often done by changing the or system variables in an option file. See below for more information about that.
A quick way to get the values of these system variables is to execute the following commands:
mysqld --help --verbose | grep 'log-error' | tail -1 mysqld --help --verbose | grep 'datadir' | tail -1
Проверка репликации данных
На одном из узлов создадим базу данных, таблицу и вставим данные в нее:
$ mysql -uroot MariaDB > create database test; Query OK, 1 row affected (0.121 sec) MariaDB > create table test.test (id INT PRIMARY KEY, name VARCHAR(32)); Query OK, 0 rows affected (0.195 sec) MariaDB > insert into test.test values(1, "name"); Query OK, 1 row affected (0.003 sec)
Убедимся, что репликация произошла на оставшиеся узлы, выполнив на каждом из них команду запроса данных:
$ mysql -uroot -e 'select * from test.test;' +----+------+ | id | name | +----+------+ | 1 | name | +----+------+
Аналогичным образом вы можете осуществить проверку и для других операций.
Синтаксис файла опции
Синтаксис файлов опций MariaDB:
- Строки,начинающиеся с#-это комментарии.
- Пустые строки игнорируются.
- Группы опций используют синтаксис . См. Раздел « » ниже для получения дополнительной информации о доступных группах опций.
- Одна и та же группа опций может появляться несколько раз.
- директива может использоваться , чтобы включить другие файлы опций. См. Раздел « » ниже для получения дополнительной информации об этом синтаксисе.
- директива может использоваться , чтобы включить все файлы (и потенциально файлы) в заданной директории. Файлы опций в каталоге читаются в алфавитном порядке. Дополнительную информацию об этом синтаксисе см. разделе « Включение каталогов файлов параметров » ниже.
- Дефисы ( ) и подчеркивания ( ) в параметрах взаимозаменяемы.
- Двойные кавычки можно использовать для заключения значений в кавычки
- , , , , , , и распознаются как escape-символы для новой строки, возврата каретки, табуляции, возврата, пробела, двойной кавычки, одинарной кавычки и обратной косой черты. соответственно.
- Поддерживаются определенные префиксы опций. См. Раздел « » ниже для получения информации о доступных префиксах параметров.
- См. Раздел « » ниже для получения информации о доступных параметрах.
Аналитика работы MariaDB
Без аналитики работы сервера проводить оптимизацию MariaDB сложно и очень неудобно. Самый важный момент который необходим при анализе работы, это медленные запросы к базе данных.
Включим отображение медленных запросов добавив следующие строки в /etc/my.cnf.d/server.cnf, в секцию :
vim /etc/my.cnf.d/server.cnf = необходимые параметры в секцию = # запись лога медленных запросов slow_query_log=ON # путь к файлу slow_query_log_file=/var/lib/mysql/slow_queries.log # минимальное время запроса для внесения long_query_time=2 # включить в лог запросы, которые не используют индексы #log-queries-not-using-indexes=1
Последний параметр отключен, так как используется больше для отладки кода и правильности создания таблиц.
Перезапустим сервер баз данных и посмотрим лог медленных запросов:
systemctl restart mariadb tail -f /var/lib/mysql/slow_queries.log = вывод команды = Time Id Command Argument /usr/sbin/mysqld, Version: 10.3.12-MariaDB-log (MariaDB Server). started with: Tcp port: 0 Unix socket: (null) = для выхода ctrl+c =
В нашем случае медленных запросов нет.
Опции программы проверки
Вы можете проверить, какие параметры будет использовать данная программа, используя командной строки —print-defaults :
Option | Description |
---|---|
Считайте опции из файлов опций,распечатайте все значения опций,а затем выйдите из программы. |
Этот аргумент командной строки можно использовать с большинством инструментов командной строки MariaDB, а не только с . Он должен быть указан в качестве первого аргумента в командной строке. Например:
$ mysqldump --print-defaults mysqldump would have been started with the following arguments: --ssl_cert=/etc/my.cnf.d/certificates/client-cert.pem --ssl_key=/etc/my.cnf.d/certificates/client-key.pem --ssl_ca=/etc/my.cnf.d/certificates/ca.pem --ssl-verify-server-cert --max_allowed_packet=1GB
Вы также можете проверить, какие параметры будет использовать данная программа, используя утилиту и указав имена групп параметров, которые программа читает. Например:
$ my_print_defaults mysqldump client client-server client-mariadb --ssl_cert=/etc/my.cnf.d/certificates/client-cert.pem --ssl_key=/etc/my.cnf.d/certificates/client-key.pem --ssl_ca=/etc/my.cnf.d/certificates/ca.pem --ssl-verify-server-cert --max_allowed_packet=1GB
Параметр утилиты предоставляет ярлык для ссылки на все группы параметров :
$ my_print_defaults --mysqld --log_bin=mariadb-bin --log_slave_updates=ON --ssl_cert=/etc/my.cnf.d/certificates/server-cert.pem --ssl_key=/etc/my.cnf.d/certificates/server-key.pem --ssl_ca=/etc/my.cnf.d/certificates/ca.pem
Error Messages File
Many error messages are ready from an error messages file that contains localized error messages. If the server can’t find this file when it starts up, then you might see errors like the following:
Can't find messagefile '/usr/share/errmsg.sys'
If this error is occurring because the file is in a custom location, then you can configure this location by setting the system variable either on the command-line or in a server in an option file prior to starting up the server. For example:
... lc_messages_dir=/usr/share/mysql/
If you want to use a different locale for error messages, then you can also set the system variable. For example:
... lc_messages_dir=/usr/share/mysql/ lc_messages=en_US
SELinux
Security-Enhanced Linux (SELinux) is a Linux kernel module that provides a framework for configuring mandatory access control (MAC) system for many resources on the system. It is enabled by default on some Linux distributions, including RHEL, CentOS, Fedora, and other similar Linux distribution. SELinux prevents programs from accessing files, directories or ports unless it is configured to access those resources.
You might need to troubleshoot SELinux-related issues in cases, such as:
- MariaDB is using a non-default port.
- MariaDB is reading from or writing to some files (datadir, log files, option files, etc.) located at non-default paths.
- MariaDB is using a plugin that requires access to resources that default installations do not use.
Setting SELinux state to is a common way to investigate what is going wrong while allowing MariaDB to function normally. is supposed to produce a log entry every time it should block a resource access, without actually blocking it. However, there are situations when SELinux blocks resource accesses even in mode.
Информация о действующих параметрах
Для просмотра всех возможных параметров и настойках по умолчанию можно посмотреть выполнив команду:
mysqld --verbose --help = часть вывода команды с пояснениями = !!! в консоли у меня не показывается первая часть вывода и как её увидеть я сказу ниже!!! = в верхней части вы увидите где находится файл настойки = mysqld Ver 10.3.12-MariaDB-log for Linux on x86_64 (MariaDB Server) Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Starts the MariaDB database server. Usage: mysqld Default options are read from the following files in the given order: /etc/my.cnf ~/.my.cnf = в этой части увидите вывод всех возможных параметров = --thread-handling=name Define threads usage for handling queries. One of: one-thread-per-connection, no-threads, pool-of-threads --thread-pool-idle-timeout=# Timeout in seconds for an idle thread in the thread pool.Worker thread will be shut down after timeout --thread-pool-max-threads=# Maximum allowed number of worker threads in the thread pool = в этой части параметры которые используются по умолчанию = Variables (--variable-name=value) and boolean options {FALSE|TRUE} Value (after reading options) ---------------------------------------------------------- --------------- allow-suspicious-udfs FALSE alter-algorithm DEFAULT aria ON aria-block-size 8192 aria-checkpoint-interval 30 aria-checkpoint-log-activity 1048576 aria-encrypt-tables FALSE aria-force-start-after-recovery-failures 0 aria-group-commit none aria-group-commit-interval 0 aria-log-dir-path /var/lib/mysql/ aria-log-file-size 1073741824 aria-log-purge-type immediate = в конце информация о том как посмотреть текущие параметры = To see what values a running MySQL server is using, type 'mysqladmin variables' instead of 'mysqld --verbose --help'. перевод Чтобы увидеть, какие значения использует работающий сервер MySQL, введите 'mysqladmin variables' вместо 'mysqld --verbose --help'.
Вся информация в консоли не покажется поэтому лучше вывод сделать в файл:
mysqld --verbose --help > mysqld--verbose--help.txt
Какие значения использует работающий сервер тоже лучше вывести в файл:
mysqladmin variables -u root -p > mysqladmin-variables.txt Enter password:
Местоположение файлов по умолчанию
По умолчанию MariaDB читает файлы опций из множества различных каталогов.Смотрите разделы ниже,чтобы узнать,какие каталоги проверяются для какой системы.
Для получения точного списка опциональных файлов,читаемых в вашей системе конкретной программой,вы можете выполнить:
$program --help --verbose
Например:
$ mysqld mysqld Ver 10.3.13-MariaDB-log for Linux on x86_64 (MariaDB Server) Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Starts the MariaDB database server. Usage: mysqld Default options are read from the following files in the given order: etcmy.cnf ~.my.cnf The following groups are read: mysqld server mysqld-10.3 mariadb mariadb-10.3 client-server galera ....
Каждый файл опций сканируется один раз в порядке, заданном . Параметры конфигурации действуют так, как если бы они были заданы как параметры командной строки в том порядке, в котором они были найдены.
Файловые локации по умолчанию на Linux,Unix,Mac
В Linux, Unix или Mac OS X файл параметров по умолчанию называется . MariaDB ищет файл опций MariaDB в местах и в указанном ниже порядке.
Расположение зависит от того, была ли определена опция при сборке MariaDB. Этот параметр обычно определяется как при сборке пакетов RPM , но обычно не определяется при сборке пакетов DEB или двоичных архивов .
Когда параметр cmake DEFAULT_SYSCONFDIR не был определен, MariaDB ищет файл параметров MariaDB в следующих местах в следующем порядке:
Location | Scope |
---|---|
Global | |
Global | |
Server | |
Server | |
defaults-extra-file | Файл, указанный с помощью , если есть |
User |
Когда параметр cmake DEFAULT_SYSCONFDIR был определен, MariaDB ищет файл параметров MariaDB в следующих местах в следующем порядке:
Location | Scope |
---|---|
Global | |
Сервер (из MariaDB 10.6 ) | |
Server | |
defaults-extra-file | Файл, указанный с помощью , если есть |
User |
(из MariaDB 10.6 ) или — это переменная среды, содержащая путь к каталогу, содержащему специфичный для сервера файл
Если не установлен, а сервер запущен с mysqld_safe , устанавливается следующим образом:Если в каталоге данных MariaDB есть файл , но его нет в базовом каталоге MariaDB, устанавливается в каталог данных MariaDB.
В устанавливается в базовый каталог MariaDB.
Обратите внимание, что если установлен (из MariaDB 10.6 ), не будет использоваться, даже если он установлен.
Местоположение файлов по умолчанию на Windows
В Windows файл параметров может называться или . MariaDB ищет файл параметров MariaDB в следующих местах в следующем порядке:
Location | Scope |
---|---|
Global | |
Global | |
Global | |
Global | |
Global | |
Global | |
Server | |
Server | |
Server | |
Server | |
Сервер (из MariaDB 10.6 ) | |
Сервер (из MariaDB 10.6 ) | |
Server | |
Server | |
defaults-extra-file | Файл, указанный с помощью , если есть |
является каталог , возвращаемый функции. Обычно это . Чтобы узнать его конкретное значение в вашей системе, откройте и выполните:echo %WINDIR%
является каталог , возвращаемый функции. Значение может быть частным для приложения или может быть таким же, как возвращаемый функцией .
— это родительский каталог для каталога, в котором находится
Например, если находится в , то будет .
(из MariaDB 10.6 ) или — это переменная среды, содержащая путь к каталогу, содержащему специфичный для сервера файл .
Обратите внимание, что если установлен (из MariaDB 10.6 ), не будет использоваться, даже если он установлен.
Иерархия файлов опций по умолчанию
MariaDB будет искать во всех перечисленных выше местах по порядку, даже если уже нашел файл параметров, и возможно, что существует более одного файла параметров. Например, у вас может быть файл параметров в с глобальными настройками для всех серверов, а затем вы можете другой файл параметров в (т.е. домашний каталог вашей учетной записи), в котором будут указаны дополнительные настройки ( или переопределить ранее указанный параметр), которые относятся только к этому пользователю.
Файлы опций обычно необязательны. Однако, если установлен параметр и если файл не существует, MariaDB выдаст ошибку. Если установлена , тогда MariaDB будет читать только файл опций, на который указывает эта опция.
Если параметр или системная переменная не задана явно, то для нее будет установлено значение по умолчанию. Полный список всех системных переменных сервера и их значений по умолчанию см. В разделе « Системные переменные сервера».
Добавление базы в MariaDB
Для работы с базой необходимо после создания добавить пользователя к этой базе и назначить права.
Добавление базы с параметрами
MariаDB > CREATE DATABASE `base` CHARACTER SET utf8 COLLATE utf8_general_ci; = вывод команды = Query OK, 1 row affected (0.00 sec)
Просмотр пользователей с выводом их прав
MariaDB > SELECT User,Host FROM mysql.user; = вывод команды = +--------+-----------+ | User | Host | +--------+-----------+ | root | localhost | | mysql | localhost | +--------+-----------+ 2 rows in set (0.005 sec)
Права пользователя баз данных MariaDB
В случае необходимости подключатся к базе с других компьютеров необходимо создать пользователя с нужным параметром и дать права на доступ в настройках сервера MariaDB!
Права на доступ к серверу баз данных делается в двух местах:
- Параметр bind-address=0.0.0.0 в конфигурационном файле самого сервера баз MariaDB разрешающий подключатся с любого адреса (или укажите конкретный IP) в разделе ;
- Права пользователя на возможность удаленного подключения к базе данных.
Для работы с базами мне удобно использовать и эта программа позволяет настроить доступ к базам работающих на разных серверах.
Менять права пользователя root не желательно, но можно создать пользователя и дать ему полные права. Держать ещё одного пользователя с полными правами не разумно, но иногда необходимо. Добавляются пользователю полные права командой:
MariaDB > GRANT ALL PRIVILEGES ON *.* to 'имя пользователя'@'%';
После добавления пользователя с полными правами и имеющегося PhpMyAdmin настроенного для подключения к другим серверам баз данных, можно зайти и создать все необходимые базы и пользователей.
Например, ниже представлена полная версия команд после выполнения которых будет создан пользователь sevo44 с полными правами:
mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 8 Server version: 10.4.8-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB > CREATE USER `sevo44`@`%` IDENTIFIED BY 'ПАРОЛЬ'; Query OK, 0 rows affected (0.008 sec) MariaDB > GRANT ALL PRIVILEGES ON *.* to 'sevo44'@'%'; Query OK, 0 rows affected (0.017 sec) MariaDB > FLUSH PRIVILEGES; Query OK, 0 rows affected (0.001 sec) MariaDB > exit Bye
Для безопасности я никогда не создаю пользователя с полными правами который может подключатся с удаленных мест. Для каждой базы свой пользователь!
В случае если надо поменять права имеющемуся пользователю это делается следующей командой, после подключения к серверу баз данных:
# Команда смены прав доступа пользователя на подключение с любого адреса (параметр %) MariaDB > UPDATE mysql.user SET Host='%' WHERE Host='localhost' AND User='имя_пользователя'; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 # Команда смены прав доступа на базы MariaDB > UPDATE mysql.db SET Host='%' WHERE Host='localhost' AND User='имя_пользователя'; Query OK, 0 rows affected (0.03 sec) Rows matched: 0 Changed: 0 Warnings: 0
Добавление пользователя
# Права на доступ только с localhost MariаDB > CREATE USER `base_user`@localhost IDENTIFIED BY 'ПАРОЛЬ'; # Права на доступ с любого адреса (при использовании знаков в названиях код заключается в кавычки! MariаDB > CREATE USER `base_user`@`%` IDENTIFIED BY 'ПАРОЛЬ'; # Права на доступ с адреса 10.10.0.2 (при использовании знаков в названиях код заключается в кавычки! MariаDB > CREATE USER `base_user`@`10.10.0.2` IDENTIFIED BY 'ПАРОЛЬ'; = правильный вывод команды для любой команды = Query OK, 0 rows affected (0.10 sec)
Назначение пользователя базе
# При назначении прав выставляем пользователя с нужными правами! MariaDB > GRANT ALL PRIVILEGES ON base.* to base_user@localhost; = вывод команды = Query OK, 0 rows affected (0.04 sec)
После всех манипуляция с базами необходимо обновить права доступа
MariаDB > FLUSH PRIVILEGES; = вывод команды = Query OK, 0 rows affected (0.02 sec)
InnoDB
InnoDB is probably the MariaDB component that most frequently causes a crash. In the error log, lines containing InnoDB messages generally start with «InnoDB:».
Cannot Allocate Memory for the InnoDB Buffer Pool
In a typical installation on a dedicated server, at least 70% of your memory should be assigned to InnoDB buffer pool; sometimes it can even reach 85%. But be very careful: don’t assign to the buffer pool more memory than it can allocate. If it cannot allocate memory, InnoDB will use the disk’s swap area, which is very bad for performance. If swapping is disabled or the swap area is not big enough, InnoDB will crash. In this case, MariaDB will probably try to restart several times, and each time it will log a message like this:
140124 17:29:01 InnoDB: Fatal error: cannot allocate memory for the buffer pool
In that case, you will need to add more memory to your server/VM or decrease the value of the variables.
Remember that the buffer pool will slightly exceed that limit. Also, remember that MariaDB also needs allocate memory for other storage engines and several per-connection buffers. The operating system also needs memory.
InnoDB Table Corruption
By default, InnoDB deliberately crashes the server when it detects table corruption. The reason for this behavior is preventing corruption propagation. However, in some situations, server availability is more important than data integrity. For this reason, we can avoid these crashes by changing the value of to ‘warn’.
If InnoDB crashes the server after detecting data corruption, it writes a detailed message in the error log. The first lines are similar to the following:
InnoDB: Database page corruption on disk or a failed InnoDB: file read of page 7. InnoDB: You may have to recover from a backup.
Generally, it is still possible to recover most of the corrupted data. To do so, restart the server in InnoDB recovery mode and try to extract the data that you want to backup. You can save them in a CSV file or in a non-InnoDB table. Then, restart the server in normal mode and restore the data.
Итог сравнения
Таким образом, мод MC Woohoo дополняет основной модуль Командного центра и значительно расширяет геймплей и развитие мира. Но, с другой стороны, вполне можно его не использовать, если не интересно делать что-то откровенное или иметь детальные настройки мира.
Всё зависит от ваших собственных предпочтений. Некоторые геймеры вообще не используют Командный центр, а живут со множеством мелких и не очень модов. Или вообще без модов.
Но есть и те, кому нравится, когда мир вокруг развивается автономно, и иногда очень и очень «интересно». Это позволяет задействовать в сюжетах семьи ЕА, но только, например, когда часть членов нужной семьи уже съедет к своим партнёрам или у них появятся дети и пр. Впрочем, и другие варианты, более сложные есть)))