Простейшее казалось бы дело — установка сервера Mysql. Но устанавливая новую версию Percona я столкнулся с некоторыми проблемами. Первая проблема это то, что Percona устанавливает пароль по умолчанию. Временный пароль генерируется автоматически и должен показываться при установке, но не показывается. В официальной документации сказано, что это следствие ошибки и пароль сохраняется в /var/log/mysqld.log
но и там его не было… Проблему я победил не сразу и так, преступаем.
Установка Percona
Подключаем репозиторий Percona и ставим mysql сервер.
1 2 3 4 5 |
# 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
.
Сначала поищем его там:
1 2 |
# grep "temporary password" /var/log/mysqld.log ... A temporary password is generated for root@localhost: Your_PAssWord00* |
Но у меня пароля не оказалось ни на экране установки, ни в логах. Придется сбрасывать пароль в режиме --skip-grant-tables
.
1 2 |
# systemctl stop mysql # systemctl start mysql --skip-grant-tables |
После запуска команда зависла…
Я запустил новое окно терминала, вошел по SSH, ввел в консоль mysql
и, о чудо! Получил приветствие сервиса. Авторизация прошла успешно и без пароля!
Обновляем привилегии:
1 |
FLUSH PRIVILEGES; |
Теперь можно сменить пароль для пользователя root. Но и тут меня ждал сюрприз.
Привычная команда:
1 |
UPDATE mysql.user SET password=password('новый пароль') WHERE user='root'; |
Выдавала синтаксическую ошибку, я не сразу понял в чем причина, помог stackoverflow.
1 2 3 4 |
UPDATE mysql.user SET authentication_string=null WHERE User='root'; FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'pass123'; |
После ввода команды необходимо перезагрузить MySQL сервер, вернув его в обычный режим.
1 |
systemctl restart mysql |
После этого вы сможете авторизоваться под root. Следуя рекомендациям разработчиков, для боевого сервера необходимо отключать пользователя root совсем.
Я советую создать нового пользователя, который будет отвечать за работу с базами данных, а root выключить.
Сделать это поможет команда:
1 |
mysql_secure_installation |
Введите текущий пароль, смените, если требуется и отключите root. Для локального сервера можно обойтись без этого.
Проблема с инициализацией порта в Percona server
После успешной установки, создания базы и пользователя я столкнулся с тем, что все внешние подключения не проходят. После нескольких безуспешных попыток закрались подозрения и решил проверить порт.
1 |
SHOW VARIABLES LIKE 'port'; |
К моему удивлению сервер выдал:
1 2 3 4 5 6 |
+---------------+-------+ | 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
. Если не получается обнаружить файл в котором прописана установка, можно воспользоваться поиском:
1 |
sudo grep -rnw '/etc/' -e 'skip-networking' |
Перезагружаем сервер MySQL.
1 |
systemctl restart mysql |
Если после всех манипуляций сервер баз вылетает с ошибкой, скорее всего вам нужно убить процесс.
1 2 3 4 5 6 |
# ps -e | grep mysql 68025 ? 00:23:42 mysqld 69393 pts/1 00:00:00 mysql # killall mysqld | killall mysql |
Проверяем параметр skip_networking
:
1 2 3 4 5 6 7 |
mysql> SHOW VARIABLES LIKE 'skip_networking'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | skip_networking | OFF | +-----------------+-------+ 1 row in set (0.01 sec) |
База готова к использованию, пора заняться установкой Zabbix5.
Вывод:
Сегодня мы установили и настроили Percona server — это пожалуй один из самых мощных и производительных серверов MySQL, но за производительность приходиться расплачиваться сложностями в настройке. В любом случае, если разобраться один раз, то последующие установки не будут отнимать много времени.