File: mysql-packagesource-server.postinst.in

package info (click to toggle)
mysql-8.0 8.0.44-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,272,892 kB
  • sloc: cpp: 4,685,345; ansic: 412,712; pascal: 108,395; java: 83,641; perl: 30,221; cs: 27,067; sql: 26,594; python: 21,816; sh: 17,285; yacc: 17,169; php: 11,522; xml: 7,388; javascript: 7,083; makefile: 1,793; lex: 1,075; awk: 670; asm: 520; objc: 183; ruby: 97; lisp: 86
file content (141 lines) | stat: -rw-r--r-- 4,335 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#!/bin/bash

# Copyright (c) 2015, 2025, Oracle and/or its affiliates.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License, version 2.0,
# as published by the Free Software Foundation.
#
# This program is designed to work with certain software (including
# but not limited to OpenSSL) that is licensed under separate terms,
# as designated in a particular file or component or in included license
# documentation.  The authors of MySQL hereby grant you an additional
# permission to link the program and your derivative works with the
# separately licensed software that they have either included with
# the program or referenced in the documentation.
#
# 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, version 2.0, for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA

. /usr/share/debconf/confmodule
. /usr/share/mysql-@MYSQL_BASE_VERSION@/mysql-helpers
take_upstart_job_backup () {
	if [ -e "/etc/init/mysql.conf" ] && [ -d "/var/lib/mysql" ];
	then
		mv /etc/init/mysql.conf /var/lib/mysql/.mysql.conf.backup
	fi
}

invoke() {
	if pathfind invoke-rc.d; then
		invoke-rc.d mysql
	else
		/etc/init.d/mysql $1
	fi
}

case "$1" in
	configure)

	if [ -z "$2" ];
	then

		set -e

		# Check if we should override new default auth plugin
		OVERRIDEFILE="/etc/mysql/mysql.conf.d/default-auth-override.cnf"
		if [ ! -e "$OVERRIDEFILE" ];
		then
			db_get mysql-server/default-auth-override && OVERRIDE=${RET}
			if [ "$OVERRIDE" = "Use Legacy Authentication Method (Retain MySQL 5.x Compatibility)" ]; then
				install -m0644 /dev/null "$OVERRIDEFILE"
				echo "# This file is automatically generated by MySQL Maintainer Scripts" >> "$OVERRIDEFILE"
				echo "[mysqld]" >> "$OVERRIDEFILE"
				echo "default-authentication-plugin = mysql_native_password" >> "$OVERRIDEFILE"
			fi
		fi

		# Check if we should enable lowercase table names
		OVERRIDEFILE="/etc/mysql/mysql.conf.d/lowercase-table-names.cnf"
		if [ ! -e "$OVERRIDEFILE" ];
		then
			db_get mysql-server/lowercase-table-names && OVERRIDE=${RET}
			if [ "$OVERRIDE" = "Enabled" ]; then
				install -m0644 /dev/null "$OVERRIDEFILE"
				echo "# This file is automatically generated by MySQL Maintainer Scripts" >> "$OVERRIDEFILE"
				echo "[mysqld]" >> "$OVERRIDEFILE"
				echo "lower-case-table-names = 1" >> "$OVERRIDEFILE"
			fi
		fi

		# If the existing config file is a proper file, we back it up
		if [ -f "/etc/mysql/my.cnf" ] && [ ! -L "/etc/mysql/my.cnf" ]; then
			cp /etc/mysql/my.cnf /etc/mysql/my.cnf.bak
			echo "WARNING: /etc/mysql/my.cnf moved to /etc/mysql/my.cnf.bak"
			echo "Please use etc/mysql/mysql.conf.d for any custom configuration settings"
		fi
		update-alternatives --force --install /etc/mysql/my.cnf my.cnf "/etc/mysql/mysql.cnf" 300

		verify_ready
		MYSQLDATA=/var/lib/mysql
		MYSQLFILES=/var/lib/mysql-files
		if aa-status --enabled 2>/dev/null; then
			apparmor_parser -r -T -W /etc/apparmor.d/usr.sbin.mysqld 2>/dev/null || true
		fi
		if [ ! "$(ls -A ${MYSQLDATA})" ] && [ -d ${MYSQLFILES} ];
		then
			db_get mysql-@DEB_PRODUCTNAME@-server/root-pass && PASSWD=${RET}
			db_set mysql-@DEB_PRODUCTNAME@-server/root-pass ""
			db_set mysql-@DEB_PRODUCTNAME@-server/re-root-pass ""
			SQL=$(mktemp -u ${MYSQLFILES}/XXXXXXXXXX)
			install /dev/null -m0600 -omysql -gmysql "${SQL}"
			if [ ! -z "${PASSWD}" ];
			then
				PASSWD=$(printf %q "${PASSWD}")
				cat << EOF > ${SQL}
USE mysql;
ALTER user 'root'@'localhost' IDENTIFIED BY '${PASSWD}';
SHUTDOWN;
EOF
				PASSWD=""
			else
				cat << EOF > ${SQL}
SET @@SESSION.SQL_LOG_BIN=0;
USE mysql;
INSTALL PLUGIN auth_socket SONAME 'auth_socket.so';
ALTER USER 'root'@'localhost' IDENTIFIED WITH 'auth_socket';
SHUTDOWN;
EOF
			fi
			mysqld --initialize-insecure --user=mysql > /dev/null
			run_init_sql "$SQL"
			rm -f "$SQL"
		fi
		set +e

	fi

	;;

	abort-upgrade|abort-remove|abort-configure)

	;;

	*)
	exit 1
	;;
esac

db_stop

take_upstart_job_backup

#DEBHELPER#

exit 0