Skip to content

Commit 767cf6d

Browse files
committed
Bug#22314098 MYSQL 5.7 SERVER START FAILING AFTER INSTALLATION
Use of other directory than /var/lib/mysql caused SELinux to deny access to file used as argument to --init-file. This broke initscript for new installations SELinux on Fedora don't accept access to /tmp for mysqld, use /var/tmp instead. Change fixes bug#79442.
1 parent d04d7a8 commit 767cf6d

File tree

2 files changed

+28
-22
lines changed

2 files changed

+28
-22
lines changed

packaging/rpm-fedora/mysql.spec.in

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,7 @@ mkdir debug
389389
-DBUILD_CONFIG=mysql_release \
390390
-DINSTALL_LAYOUT=RPM \
391391
-DCMAKE_BUILD_TYPE=Debug \
392+
-DTMPDIR=/var/tmp \
392393
-DWITH_BOOST=.. \
393394
-DWITH_MECAB=system \
394395
-DCMAKE_C_FLAGS="$optflags" \
@@ -416,6 +417,7 @@ mkdir release
416417
-DBUILD_CONFIG=mysql_release \
417418
-DINSTALL_LAYOUT=RPM \
418419
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
420+
-DTMPDIR=/var/tmp \
419421
-DWITH_BOOST=.. \
420422
-DWITH_MECAB=system \
421423
-DCMAKE_C_FLAGS="%{optflags}" \

packaging/rpm-oel/mysql.init

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ extra_opts="$@"
3737
# We use my_print_defaults which prints all options from multiple files,
3838
# with the more specific ones later; hence take the last match.
3939
get_mysql_option(){
40-
result=`/usr/bin/my_print_defaults "$1" | sed -n "s/^--$2=//p" | tail -n 1`
40+
result=$(/usr/bin/my_print_defaults "$1" | sed -n "s/^--$2=//p" | tail -n 1)
4141
if [ -z "$result" ]; then
4242
# not found, use default
4343
result="$3"
@@ -61,15 +61,12 @@ esac
6161
install_validate_password_sql_file () {
6262
local dir
6363
local initfile
64-
if [ -d /var/lib/mysql-files ]; then
65-
dir=/var/lib/mysql-files
66-
else
67-
dir=/tmp
68-
fi
64+
dir=/var/lib/mysql
6965
initfile="$(mktemp $dir/install-validate-password-plugin.XXXXXX.sql)"
7066
chown mysql:mysql "$initfile"
71-
echo "INSERT INTO mysql.plugin (name, dl) VALUES ('validate_password', 'validate_password.so');" > $initfile
72-
echo $initfile
67+
echo "INSERT INTO mysql.plugin (name, dl) VALUES ('validate_password', 'validate_password.so');" > "$initfile"
68+
echo "SHUTDOWN;" >> "$initfile"
69+
echo "$initfile"
7370
}
7471

7572
start(){
@@ -86,9 +83,9 @@ start(){
8683
action $"Starting $prog: " /bin/true
8784
ret=0
8885
else
89-
# prepare for start
86+
# prepare for start
9087
touch "$errlogfile"
91-
chown mysql:mysql "$errlogfile"
88+
chown mysql:mysql "$errlogfile"
9289
chmod 0640 "$errlogfile"
9390
[ -x /sbin/restorecon ] && /sbin/restorecon "$errlogfile"
9491
if [ ! -d "$datadir/mysql" ] ; then
@@ -99,19 +96,26 @@ start(){
9996
fi
10097
chown mysql:mysql "$datadir"
10198
chmod 0751 "$datadir"
102-
[ -x /sbin/restorecon ] && /sbin/restorecon "$datadir"
99+
if [ -x /sbin/restorecon ] ; then
100+
/sbin/restorecon "$datadir"
101+
if [ -x /usr/sbin/semanage -a -d /var/lib/mysql -a -d /var/lib/mysql-files ] ; then
102+
/usr/sbin/semanage fcontext -a -e /var/lib/mysql /var/lib/mysql-files
103+
/sbin/restorecon /var/lib/mysql-files
104+
fi
105+
fi
103106
# Now create the database
104-
initfile="$(install_validate_password_sql_file)"
105-
action $"Initializing MySQL database: " /usr/sbin/mysqld --initialize --datadir="$datadir" --user=mysql --init-file="$initfile"
107+
action $"Initializing MySQL database: " /usr/sbin/mysqld --initialize --datadir="$datadir" --user=mysql
108+
ret=$?
109+
[ $ret -ne 0 ] && return $ret
110+
initfile="$(install_validate_password_sql_file)"
111+
action $"Installing validate password plugin: " /usr/sbin/mysqld --datadir="$datadir" --user=mysql --init-file="$initfile"
106112
ret=$?
107-
rm -f "$initfile"
113+
rm -f "$initfile"
108114
chown -R mysql:mysql "$datadir"
109-
# Generate certs if needed
110-
if [ -x /usr/bin/mysql_ssl_rsa_setup -a ! -e "${datadir}/server-key.pem" ] ; then
111-
/usr/bin/mysql_ssl_rsa_setup --datadir="$datadir" --uid=mysql >/dev/null 2>&1
112-
fi
113-
if [ $ret -ne 0 ] ; then
114-
return $ret
115+
[ $ret -ne 0 ] && return $ret
116+
# Generate certs if needed
117+
if [ -x /usr/bin/mysql_ssl_rsa_setup -a ! -e "${datadir}/server-key.pem" ] ; then
118+
/usr/bin/mysql_ssl_rsa_setup --datadir="$datadir" --uid=mysql >/dev/null 2>&1
115119
fi
116120
fi
117121
chown mysql:mysql "$datadir"
@@ -164,7 +168,7 @@ stop(){
164168
action $"Stopping $prog: " /bin/true
165169
return 0
166170
fi
167-
MYSQLPID=`cat "$mypidfile"`
171+
MYSQLPID=$(cat "$mypidfile")
168172
if [ -n "$MYSQLPID" ]; then
169173
/bin/kill "$MYSQLPID" >/dev/null 2>&1
170174
ret=$?
@@ -194,7 +198,7 @@ stop(){
194198
fi
195199
return $ret
196200
}
197-
201+
198202
restart(){
199203
stop
200204
start

0 commit comments

Comments
 (0)