2
2
3
3
set -eux
4
4
5
+ CHANGED_PWD=false
6
+ # Change the password recreating the root user on mariadb < 10.2
7
+ # where ALTER USER is not available.
8
+ # https://stackoverflow.com/questions/56052177/
9
+ CHANGED_PWD_BY_RECREATE=false
10
+
11
+ # Install the default used DB if DB is not set.
12
+ if [[ -n ${GITHUB_ACTION-} && -z ${DB-} ]]; then
13
+ if command -v lsb_release > /dev/null; then
14
+ case " $( lsb_release -cs) " in
15
+ xenial | bionic)
16
+ sudo apt-get install -qq mysql-server-5.7 mysql-client-core-5.7 mysql-client-5.7
17
+ CHANGED_PWD=true
18
+ ;;
19
+ focal)
20
+ sudo apt-get install -qq mysql-server-8.0 mysql-client-core-8.0 mysql-client-8.0
21
+ CHANGED_PWD=true
22
+ ;;
23
+ * )
24
+ ;;
25
+ esac
26
+ fi
27
+ fi
28
+
5
29
# Install MySQL 5.5 if DB=mysql55
6
30
if [[ -n ${DB-} && x$DB =~ ^xmysql55 ]]; then
7
31
sudo bash .travis_mysql55.sh
10
34
# Install MySQL 5.7 if DB=mysql57
11
35
if [[ -n ${DB-} && x$DB =~ ^xmysql57 ]]; then
12
36
sudo bash .travis_mysql57.sh
37
+ CHANGED_PWD=true
13
38
fi
14
39
15
40
# Install MySQL 8.0 if DB=mysql80
16
41
if [[ -n ${DB-} && x$DB =~ ^xmysql80 ]]; then
17
42
sudo bash .travis_mysql80.sh
43
+ CHANGED_PWD=true
18
44
fi
19
45
20
46
# Install MariaDB client headers after Travis CI fix for MariaDB 10.2 broke earlier 10.x
21
47
if [[ -n ${DB-} && x$DB =~ ^xmariadb10.0 ]]; then
22
- sudo apt-get install -y -o Dpkg::Options::=' --force-confnew' libmariadbclient-dev
48
+ if [[ -n ${GITHUB_ACTION-} ]]; then
49
+ sudo apt-get install -y -o Dpkg::Options::=' --force-confnew' mariadb-server mariadb-server-10.0 libmariadb2
50
+ CHANGED_PWD_BY_RECREATE=true
51
+ else
52
+ sudo apt-get install -y -o Dpkg::Options::=' --force-confnew' libmariadbclient-dev
53
+ fi
23
54
fi
24
55
25
56
# Install MariaDB client headers after Travis CI fix for MariaDB 10.2 broke earlier 10.x
26
57
if [[ -n ${DB-} && x$DB =~ ^xmariadb10.1 ]]; then
27
- sudo apt-get install -y -o Dpkg::Options::=' --force-confnew' libmariadbclient-dev
58
+ if [[ -n ${GITHUB_ACTION-} ]]; then
59
+ sudo apt-get install -y -o Dpkg::Options::=' --force-confnew' mariadb-server mariadb-server-10.1 libmariadb-dev
60
+ CHANGED_PWD_BY_RECREATE=true
61
+ else
62
+ sudo apt-get install -y -o Dpkg::Options::=' --force-confnew' libmariadbclient-dev
63
+ fi
28
64
fi
29
65
30
66
# Install MariaDB 10.2 if DB=mariadb10.2
@@ -33,6 +69,12 @@ if [[ -n ${DB-} && x$DB =~ ^xmariadb10.2 ]]; then
33
69
sudo apt-get install -y -o Dpkg::Options::=' --force-confnew' mariadb-server mariadb-server-10.2 libmariadbclient18
34
70
fi
35
71
72
+ # Install MariaDB 10.3 if DB=mariadb10.3
73
+ if [[ -n ${GITHUB_ACTION-} && -n ${DB-} && x$DB =~ ^xmariadb10.3 ]]; then
74
+ sudo apt-get install -y -o Dpkg::Options::=' --force-confnew' mariadb-server mariadb-server-10.3 libmariadb-dev
75
+ CHANGED_PWD=true
76
+ fi
77
+
36
78
# Install MySQL if OS=darwin
37
79
if [[ x$OSTYPE =~ ^xdarwin ]]; then
38
80
brew update
@@ -52,6 +94,36 @@ if [[ x$OSTYPE =~ ^xdarwin ]]; then
52
94
$( brew --prefix " $DB " ) /bin/mysql -u root -e ' CREATE DATABASE IF NOT EXISTS test'
53
95
else
54
96
mysqld --version
97
+
98
+ if [[ -n ${GITHUB_ACTION-} && -f /etc/mysql/debian.cnf ]]; then
99
+ MYSQL_OPTS=' --defaults-extra-file=/etc/mysql/debian.cnf'
100
+ # Install from packages in OS official packages.
101
+ if sudo grep -q debian-sys-maint /etc/mysql/debian.cnf; then
102
+ # bionic, focal
103
+ DB_SYS_USER=debian-sys-maint
104
+ else
105
+ # xenial
106
+ DB_SYS_USER=root
107
+ fi
108
+ else
109
+ # Install from official mysql packages.
110
+ MYSQL_OPTS=' '
111
+ DB_SYS_USER=root
112
+ fi
113
+
114
+ if [ " ${CHANGED_PWD} " = true ]; then
115
+ # https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/
116
+ sudo mysql ${MYSQL_OPTS} -u " ${DB_SYS_USER} " \
117
+ -e " ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY ''"
118
+ elif [ " ${CHANGED_PWD_BY_RECREATE} " = true ]; then
119
+ sudo mysql ${MYSQL_OPTS} -u " ${DB_SYS_USER} " << SQL
120
+ DROP USER 'root'@'localhost';
121
+ CREATE USER 'root'@'localhost' IDENTIFIED BY '';
122
+ GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
123
+ FLUSH PRIVILEGES;
124
+ SQL
125
+ fi
126
+
55
127
# IF NOT EXISTS is mariadb-10+ only - https://mariadb.com/kb/en/mariadb/comment-syntax/
56
128
mysql -u root -e ' CREATE DATABASE /*M!50701 IF NOT EXISTS */ test'
57
129
fi
0 commit comments