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

Простейшее казалось бы дело — установка сервера Mysql. Но устанавливая новую версию Percona я столкнулся с некоторыми проблемами. Первая проблема это то, что Percona устанавливает пароль по умолчанию. Временный пароль генерируется автоматически и должен показываться при установке, но не показывается. В официальной документации сказано, что это следствие ошибки и пароль сохраняется в /var/log/mysqld.log но и там его не было… Проблему я победил не сразу и так, преступаем.

percona server install and preference

Установка Percona

Подключаем репозиторий Percona и ставим mysql сервер.

# dnf install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
# dnf module disable mysql
# percona-release setup ps80
# dnf install percona-server-server percona-toolkit percona-xtrabackup-80
# systemctl enable --now mysqld

Временный пароль root, если он не был напечатан на экране во время установки может быть в /var/log/mysqld.log.

Сначала поищем его там:

# grep "temporary password" /var/log/mysqld.log
 ... A temporary password is generated for root@localhost: Your_PAssWord00*

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

# systemctl stop mysql
# systemctl start mysql --skip-grant-tables

После запуска команда зависла…

Я запустил новое окно терминала, вошел по SSH, ввел в консоль mysql и, о чудо! Получил приветствие сервиса. Авторизация прошла успешно и без пароля!

Обновляем привилегии:

FLUSH PRIVILEGES;

Теперь можно сменить пароль для пользователя root. Но и тут меня ждал сюрприз.

Привычная команда:

UPDATE mysql.user SET password=password('новый пароль') WHERE user='root';

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

UPDATE mysql.user SET authentication_string=null WHERE User='root';
FLUSH PRIVILEGES;

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'pass123';

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

systemctl restart mysql

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

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

Сделать это поможет команда:

mysql_secure_installation

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

 

Проблема с инициализацией порта в Percona server

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

SHOW VARIABLES LIKE 'port';

К моему удивлению сервер выдал:

+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 0     |
+---------------+-------+
1 row in set (0.07 sec)

Если вы столкнулись с подобной проблемой, прежде всего проверьте, SHOW VARIABLES LIKE 'skip_networking'; если он сообщает skip_networking = On, ваш mysqld запущен без сетевой поддержки (что приводит к значению 0 в системной переменной порта).

В файле /etc/my.cnf параметр не был задан, поэтому в секции [mysqld] я прописал skip-networking = Off. Если не получается обнаружить файл в котором прописана установка, можно воспользоваться поиском:

sudo grep -rnw '/etc/' -e 'skip-networking'

Перезагружаем сервер MySQL.

systemctl restart mysql

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

# ps -e | grep mysql

68025 ? 00:23:42 mysqld
69393 pts/1 00:00:00 mysql

# killall mysqld | killall mysql

Проверяем параметр skip_networking:

mysql> SHOW VARIABLES LIKE 'skip_networking';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| skip_networking | OFF |
+-----------------+-------+
1 row in set (0.01 sec)

База готова к использованию, пора заняться установкой Zabbix5.

Вывод:

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

 

StackUP