aba36d26d9
The newer version of MySQL in Ubuntu 12.04 installs a default 'localhost' user with no username. Due to the way that MySQL looks up user details when you connect, if you connect from localhost and the user was only created with a wildcard host (%), the anonymous localhost user will be found instead. This means that your username is lost for the connection, and you have no privileges. This patch creates a second user with a hostname of 'localhost'. This will not work if your database is on a remote server, but you probably know what you are doing if that's the case. Patches to determine this server's name relative to the MySQL server are welcome (or even ideas on how to do it.) It also fixes up a couple of other small things: * make koha-remove stop zebra properly * stop the warning that the password file is missing on create Signed-off-by: Jared Camins-Esakov <jcamins@cpbibliography.com> Works as promised.
97 lines
3.5 KiB
Bash
Executable file
97 lines
3.5 KiB
Bash
Executable file
#!/bin/sh
|
|
#
|
|
# koha-remove -- Remove a Koha instance.
|
|
# Copyright 2010 Catalyst IT, Ltd
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
set -e
|
|
|
|
args=$(getopt -l keep-mysql -o k -n $0 -- "$@")
|
|
eval set -- $args
|
|
while [ ! -z "$1" ]
|
|
do
|
|
case "$1" in
|
|
-k|--keep-mysql) keepmysql=1; shift;;
|
|
--) shift; break;;
|
|
*) break;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
NAMES="$@"
|
|
|
|
SITECONFDIR="/etc/koha/sites"
|
|
# There has to be a better way of excluding '.' from find. But this works.
|
|
INSTANCES=`cd $SITECONFDIR && find . -type d -printf " %f" |sed s/\ .\ //`
|
|
|
|
if [ -z $NAMES ] ; then
|
|
echo "Please specify a Koha instance name. Your choices are:"
|
|
echo "$INSTANCES"
|
|
exit 1
|
|
fi
|
|
|
|
for name in $NAMES
|
|
do
|
|
# Does the directory (ie instance) name exist?
|
|
if [ ! -d $SITECONFDIR/$name ] ; then
|
|
echo Koha configuration directory for instance \"$name\" does not exist, please specify a valid Koha instance
|
|
exit 1
|
|
fi
|
|
|
|
echo "Removing Koha instance $name"
|
|
mysql_hostname="localhost"
|
|
if [ "$keepmysql" != "1" ]
|
|
then
|
|
# The grant creates the user in case it isn't, we don't want our loop to fail if it has already being deleted.
|
|
mysql --defaults-extra-file=/etc/mysql/koha-common.cnf <<eof
|
|
GRANT USAGE ON \`koha_$name\`.* TO \`koha_$name\`@\`%\`;
|
|
GRANT USAGE ON \`koha_$name\`.* TO \`koha_$name\`@\`$mysql_hostname\`;
|
|
DROP USER \`koha_$name\`@\`%\`;
|
|
DROP USER \`koha_$name\`@\`$mysql_hostname\`;
|
|
DROP DATABASE IF EXISTS \`koha_$name\`;
|
|
FLUSH PRIVILEGES;
|
|
eof
|
|
fi #`
|
|
|
|
# If the daemon is not running already, we don't want to fail this loop. So bin the result code if this fails.
|
|
koha-stop-zebra $name || /bin/true
|
|
[ -f "/etc/apache2/sites-available/$name" ] && \
|
|
rm "/etc/apache2/sites-available/$name"
|
|
[ -f "/etc/koha/sites/$name/koha-conf.xml" ] && \
|
|
rm "/etc/koha/sites/$name/koha-conf.xml"
|
|
[ -f "/etc/koha/sites/$name/zebra-biblios.cfg" ] && \
|
|
rm "/etc/koha/sites/$name/zebra-biblios.cfg"
|
|
[ -f "/etc/koha/sites/$name/zebra-authorities.cfg" ] && \
|
|
rm "/etc/koha/sites/$name/zebra-authorities.cfg"
|
|
[ -f "/etc/koha/sites/$name/zebra-authorities-dom.cfg" ] && \
|
|
rm "/etc/koha/sites/$name/zebra-authorities-dom.cfg"
|
|
[ -f "/etc/koha/sites/$name/zebra.passwd" ] && \
|
|
rm "/etc/koha/sites/$name/zebra.passwd"
|
|
# Maybe a user has left something in the config directory they want to keep? We won't delete it here, nor throw an error if the have.
|
|
[ -d "/etc/koha/sites/$name" ] && \
|
|
rmdir --ignore-fail-on-non-empty "/etc/koha/sites/$name"
|
|
[ -d "/var/lock/koha/$name" ] && \
|
|
rm -r "/var/lock/koha/$name"
|
|
[ -d "/var/log/koha/$name" ] && \
|
|
rm -r "/var/log/koha/$name"
|
|
[ -d "/var/run/koha/$name" ] && \
|
|
rm -r "/var/run/koha/$name"
|
|
getent passwd "$name-koha" > /dev/null && deluser --quiet "$name-koha"
|
|
# in case the site has already been disabled, we don't want to break the loop now.
|
|
a2dissite "$name" || /bin/true
|
|
done
|
|
|
|
service apache2 restart
|