Mysql

Настройка centos 7 mysql: Установка MySQL CentOS 7 | Losst

Содержание

Установка MySQL в CentOS 7

Установка MySQL в CentOS 7

Опубликовал admin

сентября 14, 2018

Сегодня мы рассмотрим установку MySQL в CentOS 7. Если вы попытаетесь выполнить команду yum install mysql в CentOS 7, то вместо MySQL произойдет установка системы MariaDB. Для установки MySQL в CentOS 7 потребуется выполнить немного другой порядок действий, по сравнению с установкой в CentOS 6.

Установка MySQL

Первое, что нам надо сделать, это посетить yum-репозиторий сообщества MySQL. Сделать подобное можно по ссылке

https://dev.mysql.com/downloads/repo/yum/

Найдите ссылки на скачивание

Из ссылки нам надо mysql80-community-release-el7-1.noarch.rpm что бы сформировать команду на скачивание

wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm

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

rpm -ivh mysql80-community-release-el7-1.noarch.rpm

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

yum install mysql-server

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

Запуск MySQL

Выполните команду, что бы запустить демон MySQL:

systemctl start mysqld

Проверим статус демона

systemctl status mysqld

Если вы увидите «Active: active (running)», то значит все работает как надо. MySQL автоматически добавляется а автозагрузку и если вы хотите его убрать, то выполните команду

systemctl disable mysqld

В процессе установки MySQL генерирует временный пароль для root-пользователя. Что бы найти его в файле mysqld.log выполните команду:

grep 'temporary password' /var/log/mysqld.log

Запомните пароль, он пригодится нам дальше.

Настройка MySQL

Выполним команду

mysql_secure_installation

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

Если у вас возникнут какие-либо вопросы при установки MySQL на CentOS 7, то задавайте их в комментариях ниже. Всем легкой установки!

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

MySQL — Настройка для CentOS7 / RHEL7

пример

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

  1. dbserver (где живет наша база данных)
  2. appclient (где живут наши приложения)

FWIW, оба сервера — это принудительное выполнение SELinux.

Создайте временный каталог для создания сертификатов.

mkdir /root/certs/mysql/ && cd /root/certs/mysql/

Создание сертификатов сервера

openssl genrsa 2048 > ca-key.pem
openssl req -sha1 -new -x509 -nodes -days 3650 -key ca-key.pem > ca-cert.pem
openssl req -sha1 -newkey rsa:2048 -days 730 -nodes -keyout server-key.pem > server-req.pem
openssl rsa -in server-key.pem -out server-key.pem
openssl x509 -sha1 -req -in server-req.pem -days 730  -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem

Переместить сертификаты сервера в / etc / pki / tls / certs / mysql /

Путь к каталогу предполагает CentOS или RHEL (при необходимости настраивается для других дистрибутивов):

mkdir /etc/pki/tls/certs/mysql/

Обязательно установите разрешения для папки и файлов. mysql требует полного владения и доступа.

chown -R mysql:mysql /etc/pki/tls/certs/mysql

Теперь настройте MySQL / MariaDB

# vi /etc/my.cnf
# i
[mysqld]
bind-address=*
ssl-ca=/etc/pki/tls/certs/ca-cert.pem
ssl-cert=/etc/pki/tls/certs/server-cert.pem
ssl-key=/etc/pki/tls/certs/server-key.pem
# :wq 

затем

systemctl restart mariadb

Не забудьте открыть брандмауэр, чтобы разрешать подключения с помощью appclient (используя IP 1.2.3.4)

firewall-cmd --zone=drop --permanent --add-rich-rule 'rule family="ipv4" source address="1.2.3.4" service name="mysql" accept'
# I force everything to the drop zone.  Season the above command to taste.

Теперь перезапустите firewalld

service firewalld restart

Затем войдите в сервер mysql dbserver:

mysql -uroot -p 

Выполните следующие действия, чтобы создать пользователя для клиента. обратите внимание на REQUIRE SSL в заявлении GRANT.

GRANT ALL PRIVILEGES ON *.* TO ‘iamsecure’@’appclient’ IDENTIFIED BY ‘dingdingding’ REQUIRE SSL;
FLUSH PRIVILEGES; 
# quit mysql

Вы должны по-прежнему находиться в / root / certs / mysql с первого шага. Если нет, cd вернется к нему для одной из приведенных ниже команд.

Создание клиентских сертификатов

openssl req -sha1 -newkey rsa:2048 -days 730 -nodes -keyout client-key.pem > client-req.pem
openssl rsa -in client-key.pem -out client-key.pem
openssl x509 -sha1 -req -in client-req.pem -days 730 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem

Примечание . Я использовал одно и то же общее имя для сертификатов сервера и клиента. YMMV.

Убедитесь, что вы все еще / root / certs / mysql / для этой следующей команды

Объединение сертификата сервера и клиента CA в один файл:

cat server-cert.pem client-cert.pem > ca.pem

Убедитесь, что вы видите два сертификата:

cat ca.pem 

Откройте другой терминал и

ssh appclient

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

mkdir /etc/pki/tls/certs/mysql/

Теперь поместите клиентские сертификаты (созданные на dbserver) на appclient. Вы можете либо скопировать их, либо просто скопировать и вставить файлы по одному.

scp dbserver
# copy files from dbserver to appclient
# exit scp

Опять же, обязательно установите разрешения для папки и файлов. mysql требует полного владения и доступа.

chown -R mysql:mysql /etc/pki/tls/certs/mysql

У вас должно быть три файла, каждый из которых принадлежит пользователю mysql:

/etc/pki/tls/certs/mysql/ca.pem
/etc/pki/tls/certs/mysql/client-cert.pem
/etc/pki/tls/certs/mysql/client-key.pem

Теперь отредактируйте конфигурацию MariaDB / MySQL appclient в разделе [client] .

vi /etc/my.cnf
# i
[client]
ssl-ca=/etc/pki/tls/certs/mysql/ca.pem
ssl-cert=/etc/pki/tls/certs/mysql/client-cert.pem
ssl-key=/etc/pki/tls/certs/mysql/client-key.pem
# :wq 

Перезапустить службу mariadb для приложения appclient:

systemctl restart mariadb

Это должно возвратиться: ssl TRUE

mysql --ssl --help

Теперь войдите в экземпляр mysql appclient

mysql -uroot -p

Должно видеть ДА для обеих переменных ниже

show variables LIKE '%ssl';
    have_openssl    YES
    have_ssl              YES

Первоначально я видел

 have_openssl NO

Быстрый просмотр mariadb.log показал:

Ошибка SSL: невозможно получить сертификат из ‘/etc/pki/tls/certs/mysql/client-cert.pem’

Проблема заключалась в том, что root-client-cert.pem и содержащая папка принадлежали root. Решение заключалось в том, чтобы установить принадлежность / etc / pki / tls / certs / mysql / к mysql.

chown -R mysql:mysql /etc/pki/tls/certs/mysql

Перезапустите mariadb, если необходимо, с шага, следующего выше

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

mysql -h dbserver -u iamsecure -p
# enter password dingdingding (hopefully you changed that to something else)

С небольшой удачей вы должны войти в систему без ошибок.

Чтобы подтвердить, что вы подключены с поддержкой SSL, введите следующую команду из приглашения MariaDB / MySQL:

\s 

Это обратная косая черта, ака статус

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

Connection id:        4
Current database:    
Current user:        iamsecure@appclient
SSL:            Cipher in use is DHE-RSA-AES256-GCM-SHA384
Current pager:        stdout
Using outfile:        ''
Using delimiter:    ;
Server:            MariaDB
Server version:        5.X.X-MariaDB MariaDB Server
Protocol version:    10
Connection:        dbserver via TCP/IP
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    utf8
Conn.  characterset:    utf8
TCP port:        3306
Uptime:            42 min 13 sec

Если вы получили разрешение на отклонения ошибок при попытке подключения, проверьте приведенный выше оператор GRANT, чтобы убедиться, что нет никаких бродячих символов или «отметок».

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

Это работало на RHEL7 и, вероятно, будет работать и на CentOS7. Не удается подтвердить, будут ли эти точные шаги работать в другом месте.

Надеюсь, это спасет кого-то еще немного времени и обострения.

Оптимизация MySQL — Альтернативный взгляд Salik.biz

Подробное руководство по настройки и оптимизации веб сервера

Вам необходимо настроить все непосредственно под параметры Вашего сервера

Зайти туда можно двумя способами:
1. Через SSH:

# nano /etc/my.cnf

2. В панели Веста:

Сервер => mariadb => CONFIGURE => ДОПОЛНИТЕЛЬНЫЕ ОПЦИИ

Теперь разберём параметры:

symbolic-links=0 Из соображений безопасности рекомендуется отключить использование

skip-name-resolve Если процесс установления DNS очень медленный и хостов очень много, то можно получить более высокую производительность либо

skip-external-locking путем блокировки поиска DNS при помощи

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

query_cache_type = 1 Варианты типа кэширования:

0 — кэш отключен

1 — кэшировать все запросы, кроме запросов содержащих SELECT S_NO_CACHE

2 — кэшировать только запросы, содержащие SELECT S_NO_CACHE

max_join_size = 65000000 В идеале хватит 1000000, но для моих потребностей необходимо побольше (максимальный размер анализируемых данных через оператор SELECT. Стандартно более 4 миллиардов). з.ы. Так сказать этот параметр защищает от кривых программиста

key_buffer_size = 2048M Размер буфера, используемого для блоков индексов (рекомендуется 25% от ОЗУ) является общим для всех потоков.

key_buffer = 2048M Не ставьте больше чем 1/3 озу и не больше объема всех б.д.

max_allowed_packet = 32M Максимальный размер пакета с запросом, принимаемого сервером

table_open_cache = 50000 Количество открытых таблиц для всех потоков (зависит от кол-во таблиц, лучше ставить больше)

sort_buffer_size = 4M Поток, которому необходимо произвести сортировку, выделяет буфер данного размера (можно больше с оглядкой на расход памяти)
read_buffer_size = 16M рекомендуется в 4-е раза больше, чем sort_buffer_size

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

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

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

thread_cache_size = 128 Размер кэша потоков для предотвращения их повторного создания.

query_cache_size = 800M сколько памяти выделить для внутреннего кэша запросов mysql, вычисляется опытным путем, по фактическому потреблению, рекомендуется указывать 20% — 10% от ОЗУ

thread_concurrency = 16 число одновременно работающих потоков, рекомендуется ставить 2 * количество CPU + количество дисков.

thread_stack = 512K Размер стека для каждого потока (демона)

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

max_sort_length = 512 Указывает, сколько байт из начала полей типа BLOB или TEXT использовать при сортировке. Значение по умолчанию 1024, если вы опасаетесь некорректно спроектированных таблиц или запросов, то следует его уменьшить

query_cache_limit = 2048M Максимальный размер кэшируемого запроса

max_connect_errors = 1000000 Задает максимально количество неудачных попыток подключения с хоста. Значение по-умолчанию 10. При достижении данного значения, хост блокируется.

max_heap_table_size = 2048M максимальный допустимый размер таблицы, хранящейся в памяти (типа MEMORY). Значение по умолчанию 16 МБ, если вы не используете MEMORY таблиц, то установите это значение равным tmp_table_size.

tmp_table_size = 2048M максимальный размер памяти, выделяемой для временных таблиц, создаваемых MySQL для своих внутренних нужд. Это значение также ограничивается переменной max_heap_table_size, поэтому в итоге будет выбрано минимальное значение из max_heap_table_size и tmp_table_size, а остальные временные таблицы будут создаваться на диске.

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

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

open_files_limit = 150000 Лучше больше

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

net_buffer_length = 1024 Объем памяти, выделяемый для буфера соединения и для буфера результатов на каждый поток. Буфер соединения будет указанного размера и буфер результатов будет такого же размера, т.е. на каждый поток будет выделен двойной размер net_buffer_length. Указанное значение является начальным и при необходимости буферы будут увеличиваться вплоть до max_allowed_packet. Размер по умолчанию 16 КБ. В случае ограниченной памяти или использования только небольших запросов значение можно уменьшить. В случае же постоянного использования больших запросов и достаточного объема памяти, значение стоит увеличить до предполагаемого среднего размера запроса.

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

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

wait_timeout = 60 Время ожидания блокировки таблицы. Значение по-умолчанию — 50 секунд

interactive_timeout = 60 Интервал времени в секундах, в течение которых сервер ожидает активности на интерактивном соединении, до его закрытия.

long_query_time = 5 если запрос выполняется дольше указанного времени (в секундах), то он будет считаться «медленным».

innodb-flush-method = O_DIRECT Отключает двойную буферизацию (самим mysql и ОС).

innodb_file_per_table = 1 Для возможности использования Backup базы с помощью snapshot’ов (Linux, LVM) в ОС LINUX.

innodb_buffer_pool_size = 6144M Размер буфера под все нужды, он должен составлять порядка 70-80 % от общей памяти сервера БД.

innodb_additional_mem_pool_size = 128M Размер памяти, выделяемый InnoDB для хранения различных внутренних структур. Если InnoDB будет недостаточно этой памяти, то будет запрошена память у ОС и записано предупреждение в лог ошибок MySQL.

innodb_file_io_threads = 8 Количество потоков ввода/вывода файлов в InnoDB. Обычно этому параметру присваивается значение 4.

innodb_lock_wait_timeout = 50 Время простоя (в секундах), на протяжении которого транзакция InnoDB может ожидать прекращения блокировки прежде, чем будет произведен откат.

innodb_buffer_pool_instances = 6 По умолчанию InnoDB использует для Buffer Pool один инстанс.

При этом есть возможность выделить несколько блоков — и работает с ними MySQL в InnoDB в ряде случаев гораздо эффективнее. Это связанно с меньшими блокировками кеша при записи данных.

innodb_thread_concurrency = 16 Должно совпадать с thread_concurrency; число одновременно работающих потоков, рекомендуется ставить 2 * количество CPU + количество дисков.

innodb_flush_log_at_trx_commit = 2 Значение «1» означает, что любая завершенная транзакция будет синхронно сбрасывать лог на диск. Это вариант по умолчанию, он является самым надежным с точки зрения сохранности данных, но самым медленным по скорости работы.

Значение «2» делает то же самое, только сбрасывает лог не на диск, а в кеш операционной системы (т.е. не происходит flush после каждой операции). Это значение подойдет в большинстве случаев, т.к. не выполняет дорогой операции записи после каждой транзакции. При этом лог пишется на диск с задержкой в несколько секунд, что весьма безопасно с точки зрения сохранности данных.

Но у нас кластер и в случае краха, данные все равно будут переданы с донора. Главное что бы транзакция закомитилась на других нодах. Тогда данные мы получим при SST.


Я тот, кого называют Дирижёром Тишины мелодий смерти…

Установка Phpmyadmin CentOS 7 | Losst

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

Время от времени нам нужно вручную внести изменения в хранимые данные, но по умолчанию mysql поддерживает работу только через терминал. Это достаточно сложно, поэтому был разработан веб-интерфейс phpmyadmin. В этой статье мы рассмотрим как выполняется установка Phpmyadmin CentOS 7 и как все настроить для максимально правильной работы.

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

Установка Phpmyadmin CentOS 7

В репозиториях, которые поставляются по умолчанию вместе с дистрибутивом Phpmyadmin нет. Он находится в репозитории EPEL или Extra Packages for Enterprise Linux. Поэтому сначала нам нужно установить этот репозиторий:

sudo rpm -iUvh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

 

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

sudo yum -y update

 

Заодно команда установит все доступные обновления. Дальше можно устанавливать Phpmyadmin:

sudo yum -y install phpmyadmin

Если вы используете веб-сервер Apache, то вам осталось перезапустить его и phpmyadmin будет доступен по адресу:

http://ip_вашего_сервера/phpmyadmin

Установка новой версии Phpmyadmin

Но, таким образом, вы получите старую версию phpmyadmin 4.4, которая работает на php 5.4. Если вы хотите php 7 и самый свежий phpmyadmin, то его можно установить из репозитория remi. Сначала добавляем репозиторий в систему:

sudo rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm

Обновляем доступные пакеты, как и выше:

sudo yum update

Включаем поддержку новой версии PHP 7.1:

yum-config-manager --enable remi-php71

И теперь осталось только установить phpmyadmin Centos 7, нужную версию php он возьмет сам:

sudo yum install phpmyadmin

Дальше phpmyadmin будет доступен по тому же адресу при условии, что вы используете Apache.

Настройка Phpmyadmin Nginx

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

sudo ln -s /usr/share/phpMyAdmin /var/www/html/phpmyadmin

Тут /var/www/html/phpmyadmin — это папка с вашим проектом. Затем перезапустите php-fpm:

sudo systemctl restart php-fpm

В основной конфигурационный файл nginx.conf, в секцию http добавьте такую команду, это включит поддержку перехода по символическим ссылкам:

sudo vi /etc/nginx/nginx.conf

disable_symlinks off;

И еще, если у вас ISPManager поищите строчку disable_symlinks if_not_owner в настройке сайта и удалите ее иначе тоже ничего не заработает. Перезапустите nginx:

sudo nginx -s reload

Теперь вы сможете получить доступ к phpmyadmin добавив его адрес к адресу вашего рабочего проекта. Дальше про безопасность. Нам нужно, чтобы к этому адресу могли получить доступ только вы. Несмотря на то, что интерфейс запрашивает пароль, его можно пытаться перебрать, а это для нас очень нежелательно. Во-первых, вы можете переименовать ссылку во что-то более непонятное, например:

mv /var/www/html/phpmyadmin /var/www/html/pppma

Но для большей надежности можно использовать аутентификацию Nginx. Сначала создадим зашифрованный пароль:

openssl passwd

Полученное значение нужно скопировать. Дальше создайте файл /etc/nginx/passwords и поместите в него имя пользователя и пароль через двоеточие, например:

sudo vi /etc/nginx/passwords

admin:4inq6EdrlAHMA

Теперь добавьте такой location в файл настройки вашего сайта, адрес pppma, в случае, если вы меняли название ссылки:

location /pppma {
auth_basic "Admin Login";
auth_basic_user_file /etc/nginx/passwords;
}

Теперь при запросе этого адреса будет спрашиваться пароль.

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

Настройка phpmyadmin Apache

Радует то, что при работе с Apache Phpmyadmin будет доступен сразу же, без необходимости выполнять кучу дополнительных настроек. Но безопасность настраивать все же надо. Настройки phpmyadmin для Apache находится в файле /etc/httpd/conf.d/phpMyAdmin.conf нам будет достаточно добавить несколько строк. Но сначала создаем пароль:

htpasswd -c /etc/httpd/passwords admin

Дальше редактируем файл настроек:

vi /etc/httpd/conf.d/phpMyAdmin.conf

Добавьте в секцию <Directory> такие строки:

Options Indexes FollowSymLinks
AllowOverride All
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/httpd/passwords
Require valid-user

Теперь, как и в предыдущем варианте, при попытке открыть phpmyadmin вы увидите запрос пароля.

Как удалить Phpmyadmin

Удаление Phpmyadmin выполняется такой командой:

sudo yum remove phpmyadmin

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

Выводы

В этой небольшой статье мы рассмотрели как выполняется установка Phpmyadmin Centos 7. Теперь вы знаете как установить самую новую версию программы и как заставить ее работать в вашей системе. Надеюсь эта информация была полезной, если у вас остались вопросы, спрашивайте в комментариях!

Оцените статью:

Загрузка…

Собираем InnoDB cluster из mysql 5.7 на centos 7 / Хабр

Всем привет!

Как-то раз появилась по работе задача — есть вроде бы настроенный тестовый innoDB cluster на нескольких виртуалках с centos 7.5, надо его поизучать и добавить еще пару нод. Можно ломать и издеваться как угодно. Звучит заманчиво.


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

За несколькими исключениями, все ссылки что в нем, что в яндексе вели либо на dev.mysql.com, либо на эту статью на Хабре. Вроде как по ней и был настроен кластер из двух нод.

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

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

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

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

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

Итак, имеем три одинаковых виртуалки со свежеустановленным Centos 7.5 minimal 1804 и отключенными selinux и firewalld:

1.1.1.1

1.1.1.2

1.1.1.3

По работе я использовал mysql 5.7, так что ее и используем. Начнем с 1.1.1.1:

1. Установим репозиторий mysql-community:

rpm -i https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm

Выключим репозиторий для 8, включим для 5.7 и проверим — если все ок, то устанавливаем mysql:

yum install yum-utils
yum-config-manager --disable mysql80-community
yum-config-manager --enable mysql57-community
yum repolist
yum install mysql-community-server mysql-shell

2. Приводим /etc/my.cnf к такому виду:

[mysqld]

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

bind-address=0.0.0.0
port=3301
# Replication part
server_id=1
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW
plugin-load = group_replication.so
# Group replication part
transaction_write_set_extraction=XXHASH64
loose-group_replication_start_on_boot = OFF
loose-group_replication_local_address = 1.1.1.1:33011
loose-group_replication_bootstrap_group = OFF
report_port = 3301
report_host = 1.1.1.1

Здесь 3301 это порт, на котором будет слушать mysql, а 33011 порт, на котором ноды общаются между собой.

3. Запустим mysql и выполним предварительную настройку:

systemctl start mysqld
grep 'password' /var/log/mysqld.log
mysql_secure_installation

4. Ну и создадим кластер, а так же отдельного пользователя для управления им. Если вы знаете заранее ip-адреса нод, то можно их сразу перечислить в ipWhitelist. Сделаем вид, что мы пока не знаем про 1.1.1.2. и 1.1.1.3:

mysqlsh
> \c 127.0.0.1:3301
> dba.configureLocalInstance("127.0.0.1:3301", {mycnfPath: "/etc/my.cnf", clusterAdmin: "cladmin", clusterAdminPassword: "SomePassword!123"})
> \c [email protected]:3301
> dba.checkInstanceConfiguration()
> cl=dba.createCluster('TestCluster', {ipWhitelist: '1.1.1.1'})
> dba.configureLocalInstance()
> cl.status()

Готово! cl.status должен вывести что-то типа этого:

{
    "clusterName": "TestCluster",
    "defaultReplicaSet": {
        "name": "default",
        "primary": "1.1.1.1:3301",
        "ssl": "REQUIRED",
        "status": "OK_NO_TOLERANCE",
        "statusText": "Cluster is NOT tolerant to any failures.",
        "topology": {
            "1.1.1.1:3301": {
                "address": "1.1.1.1:3301",
                "mode": "R/W",
                "readReplicas": {},
                "role": "HA",
                "status": "ONLINE"
            }
        }
    },
    "groupInformationSourceMember": "mysql://[email protected]:3301"
}

При изменении кластера надо будет выполнять на всех нодах локально команду dba.configureLocalInstance() для сохранения изменений:

WARNING: On instance '1.1.1.1:3301' membership change cannot be persisted since MySQL version 5.7.23 does not support the SET PERSIST command (MySQL version >= 8.0.11 required). Please use the <Dba>.configureLocalInstance command locally to persist the changes.

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

Теперь попробуем добавить в кластер ноду 1.1.1.2. Для этого выполняем на ней все те же команды до 3 шага включительно, не забывая поменять server_id, loose-group_replication_local_address и report_host.

4. Выполняем на 1.1.1.2:

mysql -p
> set GLOBAL group_replication_allow_local_disjoint_gtids_join=ON;

Я пытался задавать эту переменную через mysqlsh, переключаясь в режим sql, но действия там никак не влияли на нее в mysql. Далее:

mysqlsh
> \c 127.0.0.1:3301
> dba.configureLocalInstance("127.0.0.1:3301", {mycnfPath: "/etc/my.cnf", clusterAdmin: "cladmin", clusterAdminPassword: "SomePassword!123"})
> \c [email protected]:3301
> dba.checkInstanceConfiguration()

5. Возвращаемся к первой ноде 1.1.1.1. Если закрыли соединение, то можно быстро подключиться к кластеру так:

mysqlsh --uri [email protected]:3301 --cluster
> \sql
> STOP GROUP_REPLICATION;
> SET GLOBAL group_replication_ip_whitelist="1.1.1.1,1.1.1.2";
> START GROUP_REPLICATION;
> \js
> cluster.addInstance('[email protected]:3301', {ipWhitelist: '1.1.1.1,1.1.1.2'})
> cluster.status()

Почему-то при добавлении ноды без опции ipWhitelist он ей не передается автоматически, поэтому указываем вручную.
Если whitelist у вас изначально настроен на все ноды или подсеть, то команды в sql режиме можно пропустить.

Не забываем выполнить dba.configureLocalInstance() на всех нодах для сохранения конфигурации.

Получился кластер их двух нод:

{
    "clusterName": "TestCluster",
    "defaultReplicaSet": {
        "name": "default",
        "primary": "1.1.1.1:3301",
        "ssl": "REQUIRED",
        "status": "OK_NO_TOLERANCE",
        "statusText": "Cluster is NOT tolerant to any failures.",
        "topology": {
            "1.1.1.1:3301": {
                "address": "1.1.1.1:3301",
                "mode": "R/W",
                "readReplicas": {},
                "role": "HA",
                "status": "ONLINE"
            },
            "1.1.1.2:3301": {
                "address": "1.1.1.2:3301",
                "mode": "R/O",
                "readReplicas": {},
                "role": "HA",
                "status": "ONLINE"
            }
        }
    },
    "groupInformationSourceMember": "mysql://[email protected]:3301"
}

Чтож, кластер из двух нод есть, но в режиме «Cluster is NOT tolerant to any failures.»
Добавим третью, алгоритм в принципе не отличается от добавления второй.

Если вам опять требуется поменять whitelist, то выполнять команды надо на r/w ноде, т.к. на r/o нодах это ни к чему вроде не приводит. При этом r/o ноды отвалятся и их надо будет пересоединить, попутно сообщив новый whitelist.

В нашем случае:

> cluster.rejoinInstance('[email protected]:3301', {ipWhitelist: '1.1.1.1,1.1.1.2,1.1.1.3'})

Ну и опять же не забываем выполнить dba.configureLocalInstance() на всех нодах для сохранения конфигурации.

Кластер из трех нод выглядит так:

{
    "clusterName": "TestCluster",
    "defaultReplicaSet": {
        "name": "default",
        "primary": "1.1.1.1:3301",
        "ssl": "REQUIRED",
        "status": "OK",
        "statusText": "Cluster is ONLINE and can tolerate up to ONE failure.",
        "topology": {
            "1.1.1.1:3301": {
                "address": "1.1.1.1:3301",
                "mode": "R/W",
                "readReplicas": {},
                "role": "HA",
                "status": "ONLINE"
            },
            "1.1.1.2:3301": {
                "address": "1.1.1.2:3301",
                "mode": "R/O",
                "readReplicas": {},
                "role": "HA",
                "status": "ONLINE"
            },
            "1.1.1.3:3301": {
                "address": "1.1.1.3:3301",
                "mode": "R/O",
                "readReplicas": {},
                "role": "HA",
                "status": "ONLINE"
            }
        }
    },
    "groupInformationSourceMember": "mysql://[email protected]:3301"
}

В случае, если кластер развалился до состояния одной ноды, его надо будет запускать с параметром loose-group_replication_bootstrap_group = ON в /etc/my.cnf
После запуска параметр надо будет выключить обратно, иначе эта нода всегда будет отделяться от кластера и поддерживать свой.

Установка mysql-router хорошо описана тут, так что дублировать смысла не вижу.

На этом все вроде все, надеюсь кому-то мой опыт пригодится.

Спасибо за внимание.

6 шагов для установки и настройки MariaDB MySQL на CentOS/RedHat

Начиная с CentOS 7, вы не увидите пакет под названием mysql-server в хранилище yum.

Теперь пакет называется mariadb-server.

Оригинальный MySQL в настоящее время принадлежит корпорации Oracle.

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

С нашей точки зрения, только имя пакета изменяется. MariaDB еще MySQL, и все утилиты командной строки MySQL все точно такие же, включая команду под названием MySQL.

Это руководство объяснит шаг за шагом о том, как установить и настроить MariaDB на CentOS или на RedHat на основе дистрибутивах Linux.

1. Пакеты MariaDB MySQL

Ниже приведены три основных пакета MariaDB:

  • mariadb-5.5.52-1.el7.x86_64 – Содержит несколько клиентских программ и утилит MySQL.
  • mariadb-server-5.5.52-1.el7.x86_64 – Это основной сервер баз данных MySQL MariaDB.
  • mariadb-libs-5.5.52-1.el7.x86_64 – Содержит общие библиотеки, необходимые для интерфейса клиентской программы.

Текущая версия MariaDB-server, которая доступна в хранилище yum CentOS 7, является 5.5.52, как показано ниже.

# yum info mariadb-server
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: repos-va.psychz.net
 * extras: linux.cc.lehigh.edu
 * updates: mirror.us.leaseweb.net
Available Packages
Name : mariadb-server
Arch : x86_64
Epoch : 1
Version : 5.5.52
Release : 1.el7
Size : 11 M
Repo : base/7/x86_64
..

2. Установка сервера MariaDB MySQL

Установите пакет сервера MariaDB MySQL, как показано ниже, с помощью yum install.

# yum install mariadb-server

 

В этом случае, на этом сервере, был установлен MariaDB-server вместе со следующими зависимыми пакетами.

  • mariadb-server.x86_64 1:5.5.52-1.el7
  • mariadb-libs.x86_64 1:5.5.52-1.el7
  • mariadb.x86_64 1:5.5.52-1.el7
  • libaio.x86_64 0:0.3.109-13.el7
  • perl-DBD-MySQL.x86_64 0:4.023-5.el7
  • perl-DBI.x86_64 0:1.627-4.el7
  • perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7
  • perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7
  • perl-Data-Dumper.x86_64 0:2.145-3.el7
  • perl-IO-Compress.noarch 0:2.061-2.el7
  • perl-Net-Daemon.noarch 0:0.48-5.el7
  • perl-PlRPC.noarch 0:0.2020-14.el7

Убедитесь в том, чтобы было установлено три важных пакеты MariaDB MySQL.

# rpm -qa | grep -i maria
mariadb-5.5.52-1.el7.x86_64
mariadb-server-5.5.52-1.el7.x86_64
mariadb-libs-5.5.52-1.el7.x86_64

 

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

3. Запуск базы данных MariaDB

Как вы видите ниже, модуль сервера базы данных MariaDB загружен, но еще не запущен.

# systemctl status mariadb
? mariadb.service - MariaDB database server
 Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled)
 Active: inactive (dead)

 

Запустите сервер MySQL с помощью systemctl, как показано ниже.

# systemctl start mariadb

 

Проверьте состояние systemctl, чтобы убедиться, что сервер базы данных MariaDB запущен успешно.

# systemctl status mariadb
● mariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)                                                                 
  Drop-In: /etc/systemd/system/mariadb.service.d                                                                                                              
           └─nofile.conf                                                                                                                                      
   Active: active (running) since Tue 2017-10-03 13:56:53 MSK; 1 months 7 days ago
 Main PID: 840 (mysqld_safe)                                                                                                                                  
   CGroup: /system.slice/mariadb.service                                                                                                                      
           ├─ 840 /bin/sh /usr/bin/mysqld_safe --basedir=/usr                                                                                                 
           └─1121 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log...

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

4. Подключение и проверка сервера MariaDB

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

# mysql -u root
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.52-MariaDB MariaDB Server

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>

 

Следующая команда базы данных покажет базу данных для MySQL по умолчанию.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+

5. Выполнение шагов после установки MariaDB

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

Для установки пароля пользователя root в MySQL и выполнить другие настройки безопасности в базе данных, выполните сценарий mysql_secure_installation, как показано ниже.

# /usr/bin/mysql_secure_installation

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

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

 

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

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 MariaDB
root user without the proper authorisation.

 

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

Обратите внимание, что root в  MySQL отличается от Linux корневой учетной записи. Таким образом, здесь мы устанавливаем пароль для корневой учетной записи MySQL, которая не имеет ничего общего с корневой учетной записью в Linux.

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

 

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

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.

 

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

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

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

 

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

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

 

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

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

Cleaning up...

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

Thanks for using MariaDB!

6. Проверка корневого доступа к MySQL

Теперь, если вы подключаетесь к Mysql без пароля суперпользователя, вы получаете сообщение об ошибке, что доступ запрещен.

# mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

 

Чтобы задать пароль, используйте опцию -p, как показано ниже. Это предложит пользователю ввести пароль.

# mysql -u root -p
Enter password:

 

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

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+

 

Если вы хотите передать пароль в командной строке MySQL, укажите его прямо рядом с опцией -p, как показано ниже.

# mysql -u root -pMySecurePassword

 

Примечание:

Там нет пробела между -p и паролем. Это может вызвать некоторую путаницу, поскольку у нас есть пространство между -u и именем пользователя. Но, нет никакого пространства между -p и паролем.

 

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

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

На этом уроке мы покажем вам, как настроить основную репликацию MySQL на двух серверах CentOS 7, но те же самые шаги должны работать на всех системах на основе RPM. Мы будем использовать два тестовых CentOS 7 виртуальных сервера для этого урока со следующими IP – адресами:

MASTER: 192.168.1.2  SLAVE: 192.168.1.3

Мастер-сервер:

Вход на мастер-сервер в качестве пользователя root

ssh root@IP_Address

 

и установить сервер MySQL, если он еще не установлен

yum install mysql-server mysql

 

Запустите сервер MySQL и добавьте его в автозагрузку

systemctl start mysql
systemctl enable mysql

 

Затем откройте файл конфигурации MySQL с помощью текстового редактора и добавьте следующие строки в файл

vi /etc/my.cnf

 

server-id = 1
binlog-do-db=database
relay-log = mysql-relay-bin
relay-log-index = mysql-relay-bin.index
log-bin = mysql-bin

 

Не забудьте заменить ” database” на фактическое имя базы данных, которую вы хотите скопировать на подчиненный сервер.

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

systemctl restart mysql

 

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

mysql -u root -p

 

mysql> GRANT REPLICATION SLAVE ON *.* TO 'slaveuser'@'%' IDENTIFIED BY 'PASSWORD'
mysql> FLUSH PRIVILEGES;
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      245 | database     |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

mysql> exit

 

 

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

Файл: MySQL-bin.000001 Позиция: 245

Заменить ‘ PASSWORD ‘ с фактическим сильным паролем.

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

mysqldump -u root -p --master-data database > /root/database.sql

 

и передайте файл дампа подчиненному серверу

rsync -Waq -e ssh /root/database.sql 192.168.1.3:/root

 

Подчиненный сервер:

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

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

vi /etc/my.cnf

 

server-id = 2
master-host=191.168.1.2
master-connect-retry=60
master-user=slaveuser
master-password=PASSWORD
replicate-do-db=database
relay-log = mysql-relay-bin
log-bin = mysql-bin

 

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

systemctl restart mysql

 

Импортируйте файл дампа MySQL, который мы создали на главном сервере

mysql -u root -p < /root/database.sql

 

Вход в MySQL как пользователь root, остановить slave и настройте его

mysql -u root -p

 

mysql> slave stop;
mysql> CHANGE MASTER TO MASTER_HOST='123.456.789.1', MASTER_USER='slaveuser', MASTER_PASSWORD='PASSWORD', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=245;
mysql> slave start;

 

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

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

mysql> show slave status;

 

*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 123.456.789.1
                  Master_User: slaveuser
                  Master_Port: 3306
              Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: database

 

Если “Slave_IO_State” сообщает “Ожидание master, чтобы отправить событие’, репликация успешно.

Вот и все. Это так просто. Если вам нужна дополнительная информация о том, как настроить конфигурацию мастер репликации вы можете найти его на официальном сайте MySQL.

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

6 шагов для установки и настройки MariaDB MySQL на CentOS / RedHat

Начиная с CentOS 7, вы не увидите пакет под названием mysql-server в хранилище yum.

Теперь пакет называется mariadb-server.

Оригинальный MySQL в настоящее время принадлежит корпорации Oracle.

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

С нашей точки зрения, только имя пакета изменяется. MariaDB еще MySQL, и все утилиты командной строки MySQL все точно такие же, включая команду под названием MySQL.

Это руководство объяснит шаг за шагом о том, как установить и настроить MariaDB на CentOS или на RedHat на основе дистрибутивах Linux.

1. Пакеты MariaDB MySQL

Ниже представлены три основных пакета MariaDB:

.

  • mariadb-5.5.52-1.el7.x86_64 — Содержит несколько клиентских программ и утилит MySQL.
  • mariadb-server-5.5.52-1.el7.x86_64 — Это основной сервер баз данных MySQL MariaDB.
  • mariadb-libs-5.5.52-1.el7.x86_64 — Содержит общие библиотеки, необходимые для интерфейса клиентской программы.

Текущая версия MariaDB-server, которая доступна в хранилище yum CentOS 7, является 5.5.52, как показано ниже.

 # yum info mariadb-server
Загруженные плагины: fastestmirror
Скорость загрузки зеркала из кэшированного хост-файла
 * база: репо-ва.психз.сеть
 * дополнения: linux.cc.lehigh.edu
 * обновления: mirror.us.leaseweb.net
Доступные пакеты
Имя: mariadb-server
Арка: x86_64
Эпоха: 1
Версия: 5.5.52
Релиз: 1.el7
Площадь: 11 м
Репо: base / 7 / x86_64
..
 

2. Установка сервера MariaDB MySQL

Установите пакет сервера MariaDB MySQL, как показано ниже, с помощью yum install.

 # yum install mariadb-server
 

В этом случае, на этом сервере, был установлен MariaDB-server вместе со своим возбуждающими пакетами.

  • mariadb-server.x86_64 1: 5.5.52-1.el7
  • mariadb-libs.x86_64 1: 5.5.52-1.el7
  • mariadb.x86_64 1: 5.5.52-1.el7
  • libaio.x86_64 0: 0.3.109-13.el7
  • perl-DBD-MySQL.x86_64 0: 4.023-5.el7
  • perl-DBI.x86_64 0: 1.627-4.el7
  • perl-Compress-Raw-Bzip2.x86_64 0: 2.061-3.el7
  • perl-Compress-Raw-Zlib.x86_64 1: 2.061-4.el7
  • perl-Data-Dumper.x86_64 0: 2.145-3.el7
  • perl-IO-Compress.noarch 0: 2.061-2.el7
  • perl-Net-Daemon.noarch 0: 0.48-5.el7
  • perl-PlRPC.noarch 0: 0.2020-14.el7

Убедитесь в том, чтобы было установлено три важных пакета MariaDB MySQL.

 # об / мин -qa | grep -i maria
mariadb-5.5.52-1.el7.x86_64
mariadb-server-5.5.52-1.el7.x86_64
mariadb-libs-5.5.52-1.el7.x86_64
 

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

3.Запуск базы данных MariaDB

Как вы видите ниже, модуль сервера базы данных MariaDB загружен, но еще не запущен.

 # systemctl status mariadb
? mariadb.service - сервер базы данных MariaDB
 Загружено: загружено (/usr/lib/systemd/system/mariadb.service; отключено; предустановка поставщика: отключено)
 Активный: неактивный (мертвый)
 

Запустите сервер MySQL с помощью systemctl, как показано ниже.

 # systemctl start mariadb
 

Проверьте состояние systemctl, чтобы убедиться, что сервер базы данных MariaDB запущен успешно.

 # systemctl status mariadb
● mariadb.service - сервер базы данных MariaDB
   Загружено: загружено (/usr/lib/systemd/system/mariadb.service; включено; предустановка поставщика: отключено)
  Падение: /etc/systemd/system/mariadb.service.d
           └─nofile.conf
   Активен: активен (работает) с Вт 2017-10-03 13:56:53 MSK; 1 месяц 7 дней назад
 Основной PID: 840 (mysqld_safe)
   CGroup: / system.slice / mariadb.service
           ├─ 840 / bin / sh / usr / bin / mysqld_safe --basedir = / usr
           └─1121 / usr / libexec / mysqld --basedir = / usr --datadir = / var / lib / mysql --plugin-dir = / usr / lib64 / mysql / plugin --log-error = / var / log / mariadb / mariadb.log ... 

Если вы запрограммированы, и используете PHP, вы можете использовать этот метод подключения к MySQL с помощью PHP с примерами кода

4.Подключение и проверка сервера MariaDB

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

 # mysql -u корень
Добро пожаловать в монитор MariaDB. Команды заканчиваются на; или \ g.
Ваш идентификатор подключения MariaDB - 2
Версия сервера: 5.5.52-MariaDB MariaDB Server

Авторское право (c) 2000, 2016, Oracle, MariaDB Corporation Ab и другие.

Введите "помощь"; или '\ h' для помощи. Введите '\ c', чтобы очистить текущий оператор ввода.MariaDB [(нет)]> 

Следующая команда базы данных покажет базу данных для MySQL по умолчанию.

 MariaDB [(none)]> показать базы данных;
+ -------------------- +
| База данных |
+ -------------------- +
| information_schema |
| mysql |
| performance_schema |
| тест |
+ -------------------- + 

5. Выполнение шагов после установки MariaDB

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

Для установки пароля пользователя root в MySQL и выполнить другие настройки безопасности в базе данных выполните сценарий mysql_secure_installation , как показано ниже.

 # / usr / bin / mysql_secure_installation

ПРИМЕЧАНИЕ: РЕКОМЕНДУЕТСЯ ЗАПУСКАТЬ ВСЕ ЧАСТИ ЭТОГО СКРИПТА ДЛЯ ВСЕХ MariaDB.
      СЕРВЕРЫ В ПРОИЗВОДСТВЕННОМ ИСПОЛЬЗОВАНИИ! ВНИМАТЕЛЬНО ПРОЧИТАЙТЕ КАЖДЫЙ ШАГ!

Чтобы войти в MariaDB и защитить его, нам понадобится текущий
пароль для пользователя root.Если вы только что установили MariaDB, и
вы еще не установили пароль root, пароль будет пустым,
поэтому вам нужно просто нажать здесь. 

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

 Введите текущий пароль для root (если нет):
ОК, пароль успешно использован, идем дальше ...

Установка пароля root гарантирует, что никто не сможет войти в MariaDB
пользователь root без надлежащей авторизации.

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

Обратите внимание, что root в MySQL отличается от учетной записи Linux. Таким образом, здесь мы устанавливаем пароль для учетной записи MySQL, которая не имеет ничего общего с учетной записью в Linux.

 Установить пароль root? [Д / Н] г
Новый пароль:
Повторно введите новый пароль:
Пароль успешно обновлен!
Перезагрузка таблиц привилегий..
 ... Успех! 

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

 Удалить анонимных пользователей? [Д / Н] г
 ... Успех!

Обычно пользователю root разрешается подключаться только с «localhost». Эта
гарантирует, что кто-то не сможет угадать пароль root из сети. 

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

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

 Запретить удаленный вход root? [Д / Н] г
 ... Успех! 

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

 Удалить тестовую базу данных и получить к ней доступ? [Д / Н] г
 - Удаление тестовой базы данных ...
 ... Успех!
 - Удаление привилегий на тестовую базу данных ...
 ... Успех! 

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

 Обновить таблицы привилегий сейчас? [Д / Н] г
 ... Успех!

Убираться...

Все сделано! Если вы выполнили все вышеперечисленные шаги, ваш MariaDB
установка теперь должна быть безопасной.Спасибо за использование MariaDB! 

6. Проверка корневого доступа к MySQL

Теперь, если вы подключаете к Mysql пароля суперпользователя, вы получаете сообщение об ошибке, что доступ запрещен.

 # mysql -u корень
ОШИБКА 1045 (28000): доступ запрещен для пользователя root @ localhost (с использованием пароля: NO) 

Чтобы задать пароль, використовуйте опцию -p, как показано ниже. Это предложит пользователю ввод пароль.

 # mysql -u корень -p
Введите пароль: 

Кроме того, как вы видите ниже, команда показывает базы данных, что теперь удалена.

 MariaDB [(none)]> показать базы данных;
+ -------------------- +
| База данных |
+ -------------------- +
| information_schema |
| mysql |
| performance_schema |
+ -------------------- + 

Если вы хотите передать пароль в строке MySQL, укажите его рядом с опцией -p, как показано ниже.

 # mysql -u root -pMySecurePassword
 

Примечание:

Там нет пробела между -p и паролем.Это может вызвать некоторую путаницу, поскольку у нас есть пространство между -u и именем пользователя. Но, нет никакого пространства между -p и паролем.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl + Enter .

.

Установка MariaDB CentOS 7 | Losst

Как вы знаете, несколько лет назад разработка программного обеспечения для организации баз данных MySQL разделилась. У программы появилось две версии — оригинальная MySQL от компании Oracle и новая — MariaDB, разработанная создателем MySQL и сообществом. Версия от сообщества быстро обогнала оригинальную версию по возможностям и оптимизациям и сейчас используется в большинстве дистрибутивов Linux по умолчанию.

В статье мы рассмотрим как выполняется установка MariaDB CentOS 7, на данный момент самая новая стабильная версия — MariaDB 10.2, именно ее мы будем устанавливать.

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

Установка MariaDB Centos 7

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

Затем, появится код, который нужно вставить в файл /etc/yum.repos.d/Mariadb.repo:

судо vi /etc/yum.repos.d/Mariadb.repo

# MariaDB 10.2 Список репозиториев CentOS - создан 2017-12-26 06:22 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http: // ням.mariadb.org/10.2/centos7-amd64
gpgkey = https: //yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck = 1

Если установлена ​​старая версия MariaDB — остановите ее:

sudo systemctl stop mariadb

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

обновление sudo yum

Если в вашей системе уже установлена ​​более старая версия, то обновление будет выполнено автоматически. Или установка mariadb centos 7:

sudo yum установить MariaDB-сервер MariaDB-client

Во время установки вам придется принять ключ GPG для репозитория MariaDB.

Настройка MariaDB

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

sudo systemctl start mariadb

Если вы получите ошибку, что файл / usr / libexec / mariadb-prepare-db-dir не существует, то выполните команду:

мв /etc/systemd/system/mariadb.service{,bak}

Это вызвано тем, что вы изменяли стандартный файл systemd и из-за этого он не был заменен на новый, когда мы удаляем этот файл вместо него подтягивается новый и все будет работать.Если у вас уже была установлена ​​версия MariaDB, то нужно запустить команду mysql_upgrade, чтобы подключить все наконечники таблицы:

sudo mysql_upgrade

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

sudo mysql_secure_installation

На первом шаге вам нужно задать пароль root, по умолчанию пароль не задан:

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

Запретите удаленный вход для root:

Удалите тестовую базу данных и обновите таблицу привилегий:

Создание базы данных MariaDB

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

mysql -u корень -p

Создайте базу данных:

mysql> CREATE DATABASE first-database;
mysql> СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ 'dbuser' @ 'localhost', идентифицированного паролем;
mysql> РАЗРЕШИТЬ ВСЕ НА first-database. * TO dbuser 'IDENTIFIED' password ';
mysql> ПРИВИЛЕГИИ ПРОМЫВКИ;

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

mysql -u dbuser -p

Настройка mariadb CentOS 7 завершена.

Удаление MariaDB

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

судо рм /etc/yum.repos.d/Mariadb.repo

Выполнить обновление системы:

обновление sudo yum

Или вы можете полностью удалить MariaDB, но в таком случае будет удалена база данных из / var / lib / mysql, а значит вы потеряете все данные, которые там были:

sudo yum удалить MariaDB-сервер MariaDB-client

Выводы

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

Оцените статью:

Загрузка …

.

CentOS: Установка MySQL 5.6 с официальным Yum репозитария

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

В этом руководстве я кратко расскажу об особенностях установки MySQL 5.6 на Centos 6, и также объясню пару моментов по оптимизации производительности.

Перед выполнением данной инструкции рекомендую ознакомиться с изменениями произведенными в MySQL 5.6. Если все прочитанное вас устраивает, то переходим непосредственно к установке…

    • Сразу о проблемах

1) MySQL 5.6 стал достаточно ресурсоемкий , в особенности по памяти.

Для нормальной работы с настройками по умолчанию, нам понадобиться минимум 2G памяти. Я запустил установку версии базы и на инстансе с 512мб, однако как-то комментировать работу не могу. Синтетические тесты, по подключению и небольшой выборке система, на этом тесты закончились, в продуктив система не вводилась.

2) Скорее всего будет конфликт пакетов , в частности «php-mysql-5», т.к. для 5.6 он еще не вышел, а существующий по крайней мере у меня ругается так:

Ошибка

: Пакет: mysql-bench-5.5.34-1.el6.remi.x86_64 (@remi)
           Требуется: real-mysql (x86-64) = 5.5.34-1.el6.remi
           Удаление: mysql-5.5.34-1.el6.remi.x86_64 (@remi)
               реальный MySQL (x86-64) = 5.5.34-1.el6.remi
           Устарело: mysql-community-client-5.6.14-3.el6.x86_64 (mysql-сообщество)
               Не найден
Ошибка: пакет: php-mysql-5.4.22-1.el6.remi.x86_64 (@remi)
           Требует: libmysqlclient.so.18 (libmysqlclient_16) (64 бит)
           Удаление: mysql-libs-5.5.34-1.el6.remi.x86_64 (@remi)
               libmysqlclient.so.18 (libmysqlclient_16) (64-разрядная версия)
           Устарело: mysql-community-libs-5.6.14-3.el6.x86_64 (mysql-community)
               Не найдено 

Для начала, перейдем по ссылке http: // dev.mysql.com/downloads/repo/, нажмем на ссылку для загрузки «Red Hat Enterprise Linux 6 / Oracle Linux 6» и скачаем файл по ссылке «Нет, спасибо, просто начни загрузку».

 wget http://dev.mysql.com/get/mysql-community-release-el6-4.noarch.rpm
yum localinstall mysql-community-release-el6 - *. noarch.rpm 

Проверим, что существенный нам репозитарий « mysql-community » успешно полключился к системе

 [root @ develop spions] # ням реполист
идентификатор репо имя репо статус
база CentOS-6 - База 6381
Дополнительные пакеты epel для Enterprise Linux 6 - x86_64 10023
Дополнительно CentOS-6 - Дополнительно 13
mysql-community Сервер сообщества MySQL 19
nginx репозиторий nginx 47
Обновления CentOS-6 - Обновления 

Пробуем сделать « yum install mysql-community-server «, скорее всего получаем конфликт описанный выше в «проблемах», поэтому делаем иначе:

 yum удалить mysql-libs-5.5 *
mysql-community-server, mysql-community-client, mysql-community-common, mysql-community-libs.

# ставим назад расширение для php с игнорированием конфликта. У меня php 5.4 из remi.
yum --enablerepo = remi --skip-broken установить php-mysql * 

Пробуем сделать « service mysqld restart ».

Если у вас 512 МБ оперативной памяти, скорее всего будет ошибка запуска и в логах будет сообщение

«[ОШИБКА] InnoDB: невозможно выделить память для буферного пула»

Решение выставить в / etc / my.cnf параметр «innodb_buffer_pool_size = 32M», при этом память утилизируется практически полностью.

 сверху
Mem: всего 502456k, использовано 494968k, свободно 7488k, буферов 2420k 

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

После изменений « innodb_buffer_pool_size «, мы скорее всего сможем запустить, так что осталось дело за малым — сменить пароль для mysql корневого пользователя:

 / usr / bin / mysqladmin -u пароль root 'YouBigPassword' 

На этой инсталляция закончена.

Вы можете оставить комментарий ниже.

.

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

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