Исправляем ошибку вида "Длина зашифрованного блока не соответствует длинне ключа (размер данных должен быть 256 байт)" на серверах с ISPmanager 5
Исправляем ошибку вида "Длина зашифрованного блока не соответствует длинне ключа (размер данных должен быть 256 байт)" на серверах с ISPmanager 5¶
В случае возникновения ошибки вида
Failure
Возникла ошибка при работе с ключами или сертификатами. Длинна зашифрованного блока не соответствует длинне ключа (размер данных должен быть 256 байт)
при обращении к разделам, связанным с работой с базой данных mysql выполняем следующее:
- Переходим в каталог /usr/local/mgr5/etc
- Смотрим старый пароль
/opt/ispsystem/sbin/sqlite3 /usr/local/mgr5/etc/ispmgr.db
SQLite version 3.7.17 2013-05-20 00:56:22
Enter ".help" for instructions Enter SQL statements terminated with a
";" sqlite>
выполняем запрос вида
select * from db_server;
получаем выхлоп вида
1|MySQL|mysql|localhost|root|My_PaSsWorD|||off
из которого нас интересует длинная строка, что будет на месте, где в нашем примере My_PaSsWorD.
Выходим из консоли sqlite
sqlite> .exit
-
Получаем новый пароль в зашифрованном виде
где вместо NewPaSsWord указываем наш новый пароль.echo -n 'NewPaSsWord' | openssl rsautl -encrypt -inkey ispmgr.pem | base64 -w 0
-
Указываем наш новый пароль в базе /usr/local/mgr5/etc/ispmgr.db
sqlite3 /usr/local/mgr5/etc/ispmgr.db
и выполняем запрос вида
UPDATE db_server set password="Long_Long_String";
где вместо Long_Long_String указываем строку, полученную на предыдущем шаге в вхлопе от openssl.
После чего выходим из sqlite, как делали это ранее в примере выше(когда смотрели пароль).
- Сбрасываем пароль mysql/mariadb
Делаем
systemctl stop mariadb
systemctl stop mysql
Затем
mysqld_safe --skip-grant-tables &
и
mysql -uroot
use mysql;
update user set password=PASSWORD("NewPaSsWord") where User='root';
Где NewPaSsWord - это наш новый пароль в не зашифрованном виде.
flush privileges;
Выходим из косноли mysql(команда exit).
Киляем mysqld_safe
ps auxf|grep mysql kill -TERM 10777
systemctl restart ihttpd
Заходим в панель, и убеждаемся что проблема больше не проявляется.
Если нужно посмотреть зашифрованный пароль, указанный в базе, делаем следующее
sqlite3 /usr/local/mgr5/etc/ispmgr.db SQLite
select * from db_server;
получаем
1|MySQL|mysql|localhost|root|My_PaSsWorD|||off
после чего полученное значение My_PaSsWorD, указанное между | и | сразу за root указываем вместо строки шифрованное_значение в следующем команде
echo `echo 'шифрованное_значение' | base64 -d | openssl rsautl -decrypt -inkey ispmgr.pem`
Проверить, использует ли панель шифрование пароля или нет, можно запросом вида
select * from props where name='cryptconvert_db_server_password';
Если подобная запись в таблице props присутствует, значит пароль шифруется.
Отключить шифрование пароля можно запросом
delete from props where name='cryptconvert_db_server_password';
Если системная версия не подходит, используем /opt/ispsystem/sbin/sqlite3 или /opt/ispsystem/sbin/sqlite3(в зависимости от того, какой из данных файлов будет доступен на вашем сервере).
Полезные материалы
http://forum.ispsystem.ru/showthread.php?29068-%D0%A1%D0%BC%D0%B5%D0%BD%D0%B0-root-%D0%BF%D0%B0%D1%80%D0%BE%D0%BB%D1%8F-MySQL http://forum.ispsystem.ru/showthread.php?26726-ispmanager-5-%D0%B1%D0%B0%D0%B7%D1%8B-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-quot-%D0%9D%D0%B5-%D1%83%D0%B4%D0%B0%D0%BB%D0%BE%D1%81%D1%8C-%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B8%D1%82%D1%8C%D1%81%D1%8F-%D0%BA-%D0%B1%D0%B0%D0%B7%D0%B5-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-quot&p=163340&viewfull=1#post163340 http://forum.ispsystem.ru/showthread.php?26726-ispmanager-5-%D0%B1%D0%B0%D0%B7%D1%8B-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-quot-%D0%9D%D0%B5-%D1%83%D0%B4%D0%B0%D0%BB%D0%BE%D1%81%D1%8C-%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B8%D1%82%D1%8C%D1%81%D1%8F-%D0%BA-%D0%B1%D0%B0%D0%B7%D0%B5-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-quot&p=163340&viewfull=1#post163340
https://codeby.net/programmy-dlja-servera/kak-sbrosit-parol-root-mariadb/ https://www.rosehosting.com/blog/how-to-reset-your-mariadb-root-password/