** Also affects: mysql-8.0 (Ubuntu Focal)
   Importance: Undecided
       Status: New

** Also affects: mysql-8.4 (Ubuntu Focal)
   Importance: Undecided
       Status: New

** Also affects: mysql-8.0 (Ubuntu Jammy)
   Importance: Undecided
       Status: New

** Also affects: mysql-8.4 (Ubuntu Jammy)
   Importance: Undecided
       Status: New

** Changed in: mysql-8.0 (Ubuntu Focal)
       Status: New => In Progress

** Changed in: mysql-8.0 (Ubuntu Focal)
     Assignee: (unassigned) => Lena Voytek (lvoytek)

** Changed in: mysql-8.0 (Ubuntu Jammy)
       Status: New => In Progress

** Changed in: mysql-8.0 (Ubuntu Jammy)
     Assignee: (unassigned) => Lena Voytek (lvoytek)

** Description changed:

  [Impact]
  
  MySQL's logrotate script fails due to permissions in folders where log
  files are stored.
  
  The fix for this should be backported to stable releases to allow log
  rotation to complete normally as expected.
  
  The bug is fixed by providing a su directive to the logrotate config to
  run the script assuming the mysql user and adm group.
  
  [Test Plan]
  
  Prior to the fix, running
  
  logrotate --force /etc/logrotate.d/mysql-server
  
  will fail with the output
  
  error: skipping "/var/log/mysql.log" because parent directory has
  insecure permissions (It's world writable or writable by group which is
  not "root") Set "su" directive in config file to tell logrotate which
  user/group should be used for rotation.
  
  After the fix, the rotation should succeed
  
  [Where problems could occur]
  
  Since logs have failed to rotate in noble and later, unexpected problems
  could occur from the log rotation process.
  
  [Other Info]
-  
+ 
  This issue was fixed in questing in 8.4.5-0ubuntu2.
  
- Jammy and earlier releases are not affected due to the logrotate
- permission requirements being updated later on.
- 
  The fix will be for the mysql-8.4 package in questing and plucky, and
- mysql-8.0 in noble and oracular.
+ mysql-8.0 in oracular and earlier.
  
  [Original Description]
  
  The existing logrotate rules file:
  
  /etc/logrotate.d/mysql-server:
  
  # - I put everything in one block and added sharedscripts, so that mysql gets
  # flush-logs'd only once.
  # Else the binary logs would automatically increase by n times every day.
  # - The error log is obsolete, messages go to syslog now.
  /var/log/mysql.log /var/log/mysql/*log {
-         daily
-         rotate 7
-         missingok
-         create 640 mysql adm
-         compress
-         sharedscripts
-         postrotate
-                 test -x /usr/bin/mysqladmin || exit 0
-                 # If this fails, check debian.conf!
-                 MYADMIN="/usr/bin/mysqladmin 
--defaults-file=/etc/mysql/debian.cnf"
-                 if [ -z "`$MYADMIN ping 2>/dev/null`" ]; then
-                   # Really no mysqld or rather a missing debian-sys-maint 
user?
-                   # If this occurs and is not a error please report a bug.
-                   #if ps cax | grep -q mysqld; then
-                   if killall -q -s0 -umysql mysqld; then
-                     exit 1
-                   fi
-                 else
-                   $MYADMIN flush-logs
-                 fi
-         endscript
+         daily
+         rotate 7
+         missingok
+         create 640 mysql adm
+         compress
+         sharedscripts
+         postrotate
+                 test -x /usr/bin/mysqladmin || exit 0
+                 # If this fails, check debian.conf!
+                 MYADMIN="/usr/bin/mysqladmin 
--defaults-file=/etc/mysql/debian.cnf"
+                 if [ -z "`$MYADMIN ping 2>/dev/null`" ]; then
+                   # Really no mysqld or rather a missing debian-sys-maint 
user?
+                   # If this occurs and is not a error please report a bug.
+                   #if ps cax | grep -q mysqld; then
+                   if killall -q -s0 -umysql mysqld; then
+                     exit 1
+                   fi
+                 else
+                   $MYADMIN flush-logs
+                 fi
+         endscript
  }
  
  Causes logrotate to emit errors:
  error: skipping "/var/log/mysql.log" because parent directory has insecure 
permissions (It's world writable or writable by group which is not "root") Set 
"su" directive in config file to tell logrotate which user/group should be used 
for rotation.
  
  However, we could update it with:
-   su mysql adm
+   su mysql adm
  
  first, which tells logrotate to rotate those files as the same use it is
  asking it to create the files as.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2112151

Title:
  logrotate rules incomplete for mysql

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/mysql-8.0/+bug/2112151/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to