Bug 1356897 - MariaDB removes all databases
Summary: MariaDB removes all databases
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: mariadb
Version: 7.4
Hardware: All
OS: Linux
unspecified
high
Target Milestone: rc
: ---
Assignee: Michal Schorm
QA Contact: Karel Volný
Lenka Špačková
URL:
Whiteboard:
: 1449072 (view as bug list)
Depends On: 1335849
Blocks: 1393868 1400961
TreeView+ depends on / blocked
 
Reported: 2016-07-15 08:56 UTC by Pavel Raiskup
Modified: 2017-08-01 19:39 UTC (History)
13 users (show)

Fixed In Version: mariadb-5.5.56-2.el7
Doc Type: Release Note
Doc Text:
Data are no longer lost when the *MariaDB* init script fails Previously, if the *MariaDB* init script failed, it called "rm -rf" on the whole directory. This could consequently lead to a loss of data or even deletion of the mount point. With this update, several additional checking mechanisms have been added to the init script. Now, if the script fails, it removes only files newer than a timestamp generated prior to the critical file operations. In addition, a set of human-readable status reports and error messages have been added.
Clone Of: 1335849
Environment:
Last Closed: 2017-08-01 19:39:08 UTC
Target Upstream Version:


Attachments (Terms of Use)
git patch for rhel-7.4 branch - update 1 (5.58 KB, text/plain)
2017-03-07 14:06 UTC, Michal Schorm
no flags Details


Links
System ID Priority Status Summary Last Updated
Red Hat Product Errata RHSA-2017:2192 normal SHIPPED_LIVE Moderate: mariadb security and bug fix update 2017-08-01 18:18:36 UTC

Description Pavel Raiskup 2016-07-15 08:56:01 UTC
Short sum-up, consider that:

* /var/lib/mysql is mount point
* 'systemctl start mariadb' is executed
    * this runs '/usr/bin/mysql_install_db' in /var/lib/mysql when
      the '[ ! -d /var/lib/mysql/mysql ]'
    * if the mysql_install_db fails, 'rm -rf' is called there

The issue is when user mistakenly mounts the directory wrongly.

E.g. the whole '/var' mountpoint mounted as /var/lib/mysql:

* the '/var/lib/mysql/mysql' does not exist
* the mysql_install_db is called, but it fails (permissions)
* the 'rm -rf' is called, removes recursivelly all files owned by mysql

Clear user error, but we can protect user against disaster.

For more info:
+++ This bug was initially created as a clone of Bug #1335849 +++

Comment 1 Jan ONDREJ 2016-07-15 09:20:07 UTC
There are other cases too:

- backup of databases, for example
    mkdir /var/lib/mysql/BACKUP; mv /var/lib/mysql/* /var/lib/mysql/BACKUP
- permission problems or fail of filesystem + over quota = removal of files
- may be others too...

Should be fixed before more users will loss its data.

Comment 8 Michal Schorm 2017-03-07 19:41:48 UTC
Patch applied, moving to QA.

Comment 11 Honza Horak 2017-05-11 07:22:00 UTC
*** Bug 1449072 has been marked as a duplicate of this bug. ***

Comment 29 errata-xmlrpc 2017-08-01 19:39:08 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHSA-2017:2192


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