summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmake/cpack_rpm.cmake5
-rw-r--r--sql/sys_vars.cc2
-rw-r--r--support-files/rpm/server-postin.sh53
3 files changed, 36 insertions, 24 deletions
diff --git a/cmake/cpack_rpm.cmake b/cmake/cpack_rpm.cmake
index e915e732612..d3a9eb6841f 100644
--- a/cmake/cpack_rpm.cmake
+++ b/cmake/cpack_rpm.cmake
@@ -64,8 +64,10 @@ SET(CPACK_RPM_SPEC_MORE_DEFINE "${CPACK_RPM_SPEC_MORE_DEFINE}
SET(CPACK_RPM_PACKAGE_REQUIRES "MariaDB-common")
-SET(CPACK_RPM_server_USER_FILELIST "%ignore /etc" "%ignore /etc/init.d")
+SET(CPACK_RPM_server_USER_FILELIST "%ignore /etc" "%ignore /etc/init.d" "%config(noreplace) /etc/my.cnf.d/*")
SET(CPACK_RPM_common_USER_FILELIST "%config(noreplace) /etc/my.cnf")
+SET(CPACK_RPM_shared_USER_FILELIST "%config(noreplace) /etc/my.cnf.d/*")
+SET(CPACK_RPM_client_USER_FILELIST "%config(noreplace) /etc/my.cnf.d/*")
SET(CPACK_RPM_client_PACKAGE_OBSOLETES "mysql-client MySQL-client MySQL-OurDelta-client")
SET(CPACK_RPM_client_PACKAGE_PROVIDES "MariaDB-client MySQL-client mysql-client")
@@ -84,6 +86,7 @@ SET(CPACK_RPM_server_PACKAGE_PROVIDES "MariaDB MariaDB-server MySQL-server confi
SET(CPACK_RPM_server_PRE_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-prein.sh)
SET(CPACK_RPM_server_PRE_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-preun.sh)
SET(CPACK_RPM_server_POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-postin.sh)
+SET(CPACK_RPM_server_POST_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-postun.sh)
SET(CPACK_RPM_shared_PACKAGE_OBSOLETES "mysql-shared MySQL-shared-standard MySQL-shared-pro MySQL-shared-pro-cert MySQL-shared-pro-gpl MySQL-shared-pro-gpl-cert MySQL-shared MySQL-OurDelta-shared")
SET(CPACK_RPM_shared_PACKAGE_PROVIDES "MariaDB-shared MySQL-shared mysql-shared libmysqlclient.so.${SHARED_LIB_MAJOR_VERSION} libmysqlclient.so.${SHARED_LIB_MAJOR_VERSION}(libmysqlclient_${SHARED_LIB_MAJOR_VERSION}) libmysqlclient_r.so.${SHARED_LIB_MAJOR_VERSION} libmysqlclient_r.so.${SHARED_LIB_MAJOR_VERSION}(libmysqlclient_${SHARED_LIB_MAJOR_VERSION})")
diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc
index 6de285086a2..f9e43712f31 100644
--- a/sql/sys_vars.cc
+++ b/sql/sys_vars.cc
@@ -568,7 +568,7 @@ static Sys_var_ulong Sys_connect_timeout(
static Sys_var_charptr Sys_datadir(
"datadir", "Path to the database root directory",
READ_ONLY GLOBAL_VAR(mysql_real_data_home_ptr),
- CMD_LINE(REQUIRED_ARG, 'h'), IN_FS_CHARSET, DEFAULT(0));
+ CMD_LINE(REQUIRED_ARG, 'h'), IN_FS_CHARSET, DEFAULT(mysql_real_data_home));
#ifndef DBUG_OFF
static Sys_var_dbug Sys_dbug(
diff --git a/support-files/rpm/server-postin.sh b/support-files/rpm/server-postin.sh
index 88ff059ff22..156865b61ad 100644
--- a/support-files/rpm/server-postin.sh
+++ b/support-files/rpm/server-postin.sh
@@ -1,37 +1,46 @@
-mysql_datadir=%{mysqldatadir}
-
-# Create data directory
-mkdir -p $mysql_datadir/{mysql,test}
# Make MySQL start/shutdown automatically when the machine does it.
if [ $1 = 1 ] ; then
if [ -x /sbin/chkconfig ] ; then
/sbin/chkconfig --add mysql
fi
-fi
-# Create a MySQL user and group. Do not report any problems if it already
-# exists.
-groupadd -r %{mysqld_group} 2> /dev/null || true
-useradd -M -r -d $mysql_datadir -s /bin/bash -c "MySQL server" -g %{mysqld_group} %{mysqld_user} 2> /dev/null || true
-# The user may already exist, make sure it has the proper group nevertheless (BUG#12823)
-usermod -g %{mysqld_group} %{mysqld_user} 2> /dev/null || true
+ mysql_dirs=(`%{_sbindir}/mysqld --verbose --help 2>/dev/null|sed -ne 's/^\(basedir\|datadir\)[[:space:]]*\(.*\)$/\2/p'`)
+ basedir="${mysql_dirs[0]}"
+ datadir="${mysql_dirs[1]}"
+ # datadir may be relative to a basedir!
+ if expr $datadir : / > /dev/null; then
+ mysql_datadir=$datadir
+ else
+ mysql_datadir=$basedir/$datadir
+ fi
+
+ # Create a MySQL user and group. Do not report any problems if it already
+ # exists.
+ groupadd -r %{mysqld_group} 2> /dev/null || true
+ useradd -M -r -d $mysql_datadir -s /bin/bash -c "MySQL server" -g %{mysqld_group} %{mysqld_user} 2> /dev/null || true
+ # The user may already exist, make sure it has the proper group nevertheless (BUG#12823)
+ usermod -g %{mysqld_group} %{mysqld_user} 2> /dev/null || true
-# Change permissions so that the user that will run the MySQL daemon
-# owns all database files.
-chown -R %{mysqld_user}:%{mysqld_group} $mysql_datadir
+ # Change permissions so that the user that will run the MySQL daemon
+ # owns all database files.
+ chown -R %{mysqld_user}:%{mysqld_group} $mysql_datadir
-# Initiate databases
-%{_bindir}/mysql_install_db --rpm --user=%{mysqld_user}
+ if [ ! -e $mysql_datadir ]; then
+ # Create data directory
+ mkdir -p $mysql_datadir/{mysql,test}
-# Upgrade databases if needed would go here - but it cannot be automated yet
+ # Initiate databases
+ %{_bindir}/mysql_install_db --rpm --user=%{mysqld_user}
+ fi
-# Change permissions again to fix any new files.
-chown -R %{mysqld_user}:%{mysqld_group} $mysql_datadir
+ # Change permissions again to fix any new files.
+ chown -R %{mysqld_user}:%{mysqld_group} $mysql_datadir
-# Fix permissions for the permission database so that only the user
-# can read them.
-chmod -R og-rw $mysql_datadir/mysql
+ # Fix permissions for the permission database so that only the user
+ # can read them.
+ chmod -R og-rw $mysql_datadir/mysql
+fi
# install SELinux files - but don't override existing ones
SETARGETDIR=/etc/selinux/targeted/src/policy