38

I've occasionally lost my config file "/etc/mysql/my.cnf", and want to restore it. The file belongs to package mysql-common which is needed for some vital functionality so I can't just purge && install it: the dependencies would be also uninstalled (or if I can ignore them temporarily, they won't be working).

Is there a way to restore the config file from a package without un-ar-ing the package file?

dpkg-reconfigure mysql-common did not restore it.

4
  • i've always just extracted the package files with 7zip (7z x /path/to/foo.deb, then 7z x data.tar.gz).... Commented Nov 9, 2009 at 6:26
  • Personally, I like to setup something like etckeeper on my system right after I install. That way all changes and versions of configuration files get stored. (serverfault.com/questions/13091/advice-on-storing-etc-in-a-vcs)
    – Zoredache
    Commented Nov 9, 2009 at 6:54
  • 4
    And this, kids, is why we have backups...
    – womble
    Commented Nov 9, 2009 at 7:08
  • 1
    @womble: actually, the situation is slightly different: i have a config file, but it's modified by me. I was not using conf.d folders, and when the package maintainer update it, upgrade process becomes really keen of displaying "config file modified" messages :) The reason is not that important to mention, so I decided to simplify my question
    – kolypto
    Commented Nov 9, 2009 at 13:19

7 Answers 7

38

dpkg -i --force-confmiss mysql-common.deb will recreate any missing configuration files, ie /etc/mysql/my.cnf in your case.

2
  • 8
    Thanks! On Ubuntu, it was sudo dpkg --force-confmiss -i /var/cache/apt/archives/mysql-common*.deb
    – kolypto
    Commented Nov 9, 2009 at 13:26
  • Hi, Would this work for mysql-apt-config as well. My mysql-apt-config is missing. Thanks Michael Commented Dec 6, 2020 at 1:21
18

None of the above worked for me - maybe outdated - anyway, I found this solution:

apt-get -o Dpkg::Options::="--force-confmiss" install --reinstall mysql-common
1
  • This is the command to use, considering aptitude is not default. Don't forget the sudo :)
    – nsn
    Commented Jul 25, 2016 at 15:17
10

In Debian Squeeze — at least —, we also can do it this way, after su — or sudo for Ubuntu —

aptitude install -o Dpkg::Options::=--force-confmiss mysql-server

This will care for the dependencies of mysql-server and reset all the missing conf files of the lot, including mysql-common. Conflicting (remaining) files will be prompted out to be kept or reset.

Unfortunately, there is a bug in aptitude, and

aptitude purge -o Dpkg::Options::=--force-all mysql-server

will not work. So we have to do it one by one with

dpkg --force-all --purge  mysql-common  mysql-server  mysql-client …

This will remove any config file, original or modified, but custom files will be preserved, with an onscreen message. Note, by the way, that dpkg also recognizes --force-confnew and --force-confold options.

To get mysql-server dependencies' list print on screen :

aptitude --simulate remove mysql-server
0
3

You can find default mysql config files in /usr/share/doc/mysql-server-5.0/examples/ or similar. That may be all that you need unless you have some really special/esoteric configurations enabled.

0

In my /etc/mysql/ directory, I have a my.cnf.orig file which contains the original contents of my.cnf.

I'm not sure where /etc/mysql/my.cnf.orig came from - that is, whether I created it, or the installation of mysql did it. I remember checking at one time that it was exactly the same as my.cnf

If you have such a thing, and no my.cnf you can copy one to the other.

sudo cp /etc/mysql/my.cnf.orig /etc/mysql/my.cnf

In any case, it's a simple text file of 3897 bytes and you could copy and paste from a generic Mysql configuration file.

It will be a good idea once you restore your /etc/mysql/my.cnf to make a copy so you can restore it easily in future.

3
  • I usually make a backup of original-install configuration files by copying them to /path/to/foo.conf.orig ... if these are automatically installed, they're created when apt-get is installing a new version and detects you've altered the original configuration file. Commented Nov 9, 2009 at 6:10
  • Hmm, the more I think about it, the more it seems I created /etc/mysql/my.cnf.orig as a backup which wouldn't be overwritten by a fresh installation. But, putting it somewhere entirely different is a good idea.
    – pavium
    Commented Nov 9, 2009 at 6:14
  • I was trying to be generic; for my.cnf I would copy it to /etc/mysql/my.cnf.orig. Then, naturally, make a tarball backup of /etc. :) Commented Nov 9, 2009 at 6:19
0

You need to reinstall mysql-common with this command:apt-get install --reinstall mysql-common

2
  • Does that actually restore missing configuration files?
    – poolie
    Commented Oct 24, 2013 at 8:44
  • 1
    No, that doesn't work. Commented Jun 7, 2014 at 0:25
0

It appears some of the other solutions won't work if the configuration files of the package are managed with ucf.

In this case you can use :

UCF_FORCE_CONFFMISS=1 apt-get --reinstall install [pkgname]

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .