Bug 2227714 - [BUG] Logrotate configuration for mysql does not work as advertised
Summary: [BUG] Logrotate configuration for mysql does not work as advertised
Keywords:
Status: NEW
Alias: None
Product: Red Hat Enterprise Linux 9
Classification: Red Hat
Component: mysql
Version: 9.3
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: rc
: ---
Assignee: Michal Schorm
QA Contact: RHEL CS Apps Subsystem QE
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2023-07-31 07:22 UTC by Juan Manuel Santos
Modified: 2023-07-31 07:28 UTC (History)
1 user (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed:
Type: Bug
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)

Description Juan Manuel Santos 2023-07-31 07:22:29 UTC
Description of problem:
The /etc/logrotate.d/mysqld configuration file has the following content:

# For the mysqladmin commands below to work, root account
# password is required. Use mysql_config_editor(1) to store
# authentication credentials in the encrypted login path file
# ~/.mylogin.cnf
#
# Example usage:
#
#  mysql_config_editor set --login-path=client --user=root --host=localhost --password
#
# When these actions has been done, un-comment the following to
# enable rotation of mysqld's log error.

However, on RHEL 9 logrotate no longer runs under cron but rather under systemd. As such there is no $HOME variable for the logrotate process, which causes in turn for mysql_config_editor to have no $HOME variable. This has the effect of making /root/.mylogin.cnf to never be read so only this gets printed in the logs:

logrotate[179140]: error: 'Access denied for user 'root'@'localhost' (using password: NO)'
logrotate[179136]: error: error running non-shared postrotate script for /var/log/mysql/mysqld.log of '/var/log/mysql/mysqld.log '

The workaround for this is to specify the HOME variable before both mysqladmin commands thus:

       if test -x /usr/bin/mysqladmin && \
          HOME=/root /usr/bin/mysqladmin ping &>/dev/null
       then
          HOME=/root /usr/bin/mysqladmin flush-logs
       fi

Version-Release number of selected component (if applicable):
mysql-server-8.0.32-1.el9_2.x86_64

How reproducible:
Every time

Steps to Reproduce:
1. Uncomment the /var/log/mysql/mysqld.log entry from /etc/logrotate.d/mysqld.
2. Run the following command as advised in the logrotate configuration file:
  # mysql_config_editor set --login-path=client --user=root --host=localhost --password
3. Wait for logrotate to run


Actual results:
mysqld log does not rotate properly.

Expected results:
mysqld log should rotate properly.


Additional info:
This was not an issue in RHEL 7/8 as logrotate ran under cron and, while cron does have a very limited environment, the $HOME variable was being passed to logrotate.

Also note, the package is mysql-server but for some reason it is not present in the component list.


Note You need to log in before you can comment on or make changes to this bug.