Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-5030

RPM installation not running mysql_install_db if datadir exists

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 5.5.33
    • Fix Version/s: 5.5.34
    • Component/s: None
    • Labels:
      None
    • Environment:
      CentOS 6 (haven't looked at the RPM specs for other platforms)

      Description

      The postinstall script of the 5.5.33 CentOS 6 bundle checks to see if the data directory exists, and if not, create it and run mysql_install_db:

        if [ ! -e $datadir ]; then
          # Create data directory
          mkdir -p $datadir/{mysql,test}
      
          # Initiate databases
          /usr/bin/mysql_install_db --rpm --user=mysql
        fi
      

      This prevents mysql_install_db from running if $datadir exists but is empty. An example of this situation is when $datadir is a separate partition, or perhaps someone wanted to do a fresh install and does "rm -rf /var/lib/mysql/*".

      I believe checking for $datadir/mysql would be a more accurate check, since that must exist or something really bad has happened.

      Thanks,
      -will

        Gliffy Diagrams

          Attachments

            Activity

            Hide
            kolbe Kolbe Kegel added a comment -

            This is a problem in an environment where a user has mounted some separate device as /var/lib/mysql to serve as the datadir. In that scenario, the directory will exist before the RPM is installed, but it won't contain anything. The script should perhaps look for /var/lib/mysql/mysql or even look for some specific privilege table(s) to determine whether it is necessary to run mysql_install_db.

            Show
            kolbe Kolbe Kegel added a comment - This is a problem in an environment where a user has mounted some separate device as /var/lib/mysql to serve as the datadir. In that scenario, the directory will exist before the RPM is installed, but it won't contain anything. The script should perhaps look for /var/lib/mysql/mysql or even look for some specific privilege table(s) to determine whether it is necessary to run mysql_install_db.

              People

              • Assignee:
                serg Sergei Golubchik
                Reporter:
                wfong Will Fong
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0 minutes
                  0m
                  Logged:
                  Time Spent - 15 minutes
                  15m