Bug 1356897

Summary: MariaDB removes all databases
Product: Red Hat Enterprise Linux 7 Reporter: Pavel Raiskup <praiskup>
Component: mariadbAssignee: Michal Schorm <mschorm>
Status: CLOSED ERRATA QA Contact: Karel Volný <kvolny>
Severity: high Docs Contact: Lenka Špačková <lkuprova>
Priority: unspecified    
Version: 7.4CC: databases-maint, extras-qa, hhorak, indicoliteplus, jstanek, kvolny, mmuzila, mschorm, ondrejj, ovasik, pasik, praiskup, thoger
Target Milestone: rc   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
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.
Story Points: ---
Clone Of: 1335849 Environment:
Last Closed: 2017-08-01 19:39:08 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1335849    
Bug Blocks: 1393868, 1400961    
Attachments:
Description Flags
git patch for rhel-7.4 branch - update 1 none

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