#!/bin/bash set -e MYSQL_PKG="$(dpkg --list | sed -ne 's/^ii \(mariadb-server-[[:digit:].]\+\) .*$/\1/p')" . /usr/share/yunohost/helpers do_pre_regen() { pending_dir=$1 cd /usr/share/yunohost/templates/mysql install -D -m 644 my.cnf "${pending_dir}/etc/mysql/my.cnf" } do_post_regen() { regen_conf_files=$1 if [ ! -f /etc/yunohost/mysql ]; then # ensure that mysql is running sudo systemctl -q is-active mysql.service \ || sudo service mysql start # generate and set new root password mysql_password=$(ynh_string_random 10) sudo mysqladmin -s -u root -pyunohost password "$mysql_password" || { if [ $FORCE -eq 1 ]; then echo "It seems that you have already configured MySQL." \ "YunoHost needs to have a root access to MySQL to runs its" \ "applications, and is going to reset the MySQL root password." \ "You can find this new password in /etc/yunohost/mysql." >&2 # set new password with debconf sudo debconf-set-selections << EOF $MYSQL_PKG mysql-server/root_password password $mysql_password $MYSQL_PKG mysql-server/root_password_again password $mysql_password EOF # reconfigure Debian package sudo dpkg-reconfigure -freadline -u "$MYSQL_PKG" 2>&1 else echo "It seems that you have already configured MySQL." \ "YunoHost needs to have a root access to MySQL to runs its" \ "applications, but the MySQL root password is unknown." \ "You must either pass --force to reset the password or" \ "put the current one into the file /etc/yunohost/mysql." >&2 exit 1 fi } # store new root password echo "$mysql_password" | sudo tee /etc/yunohost/mysql sudo chmod 400 /etc/yunohost/mysql fi [[ -z "$regen_conf_files" ]] \ || sudo service mysql restart } FORCE=${2:-0} DRY_RUN=${3:-0} case "$1" in pre) do_pre_regen $4 ;; post) do_post_regen $4 ;; *) echo "hook called with unknown argument \`$1'" >&2 exit 1 ;; esac exit 0