1 |
diff -Nur --no-dereference smeserver-mysql-2.7.0.old/root/etc/e-smith/events/actions/mysql-dump-tables smeserver-mysql-2.7.0/root/etc/e-smith/events/actions/mysql-dump-tables |
2 |
--- smeserver-mysql-2.7.0.old/root/etc/e-smith/events/actions/mysql-dump-tables 2022-03-11 10:32:13.000000000 -0500 |
3 |
+++ smeserver-mysql-2.7.0/root/etc/e-smith/events/actions/mysql-dump-tables 2024-09-01 00:17:19.404000000 -0400 |
4 |
@@ -18,24 +18,53 @@ |
5 |
echo $message | /usr/bin/mail -s "error on backup of $db MariaDB database" admin |
6 |
fi |
7 |
message="$message \nThere was an error trying to dump database $db, please check for table errors in this db. Forcing a backup of the corrupted DB." |
8 |
- mysqldump --force --ignore-table=mysql.event --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mysql/"$db"-failed.dump || message="$message \nFailed to force backup of corrupted db $db as $db-failed.dump" >&2 |
9 |
+ mysqldump --force --ignore-table=mysql.event --ignore-table=mysql.users --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mysql/"$db"-failed.dump || message="$message \nFailed to force backup of corrupted db $db as $db-failed.dump" >&2 |
10 |
if [ "$fixtables" = "enabled" ]; then |
11 |
repair="failure" |
12 |
message="$message \nTrying to auto-repair the db and do a backup after..." |
13 |
mysqlcheck -s --auto-repair -c "$db" && \ |
14 |
- mysqldump --ignore-table=mysql.event --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mysql/"$db".dump && repair="success" |
15 |
+ mysqldump --ignore-table=mysql.event --ignore-table=mysql.users --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mysql/"$db".dump && repair="success" |
16 |
message="$message \n => $repair" |
17 |
fi |
18 |
echo $message |
19 |
echo $message | /usr/bin/mail -s "error on backup of $db MariaDB database" admin |
20 |
} |
21 |
|
22 |
+# Do nothing if disabled |
23 |
if [ "$status" = "disabled" ] |
24 |
then |
25 |
echo "mysqld is disabled - no tables dumped" >&2 |
26 |
exit 0 |
27 |
fi |
28 |
+ |
29 |
+# Actual mysql db backup |
30 |
for db in $(mysql -BNre "show databases;"|egrep -vi "^information_schema$|^performance_schema$") |
31 |
do |
32 |
- mysqldump --ignore-table=mysql.event --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mysql/"$db".dump || onfailure $db |
33 |
+ mysqldump --ignore-table=mysql.event --ignore-table=mysql.users --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mysql/"$db".dump || onfailure $db |
34 |
+done |
35 |
+ |
36 |
+# Backup the users and privileges |
37 |
+# backup of mysql/mariadb users excluding root for later restore. |
38 |
+# would allow compatible backup from mariadb <103 to mariadb >= 103 |
39 |
+# will also need to exclude mysql.user from restore in mariadb >= 103 |
40 |
+# inspired by https://stackoverflow.com/a/56588240 |
41 |
+# for mariadb 5.5 we replace authentication_string with Password |
42 |
+mysql $@ -sNe " \ |
43 |
+ SELECT \ |
44 |
+ CONCAT( 'CREATE USER \'', User, '\'@\'', Host, '\' IDENTIFIED BY \'', Password, '\'\;' ) AS User \ |
45 |
+ FROM mysql.user \ |
46 |
+ WHERE \ |
47 |
+ User NOT LIKE 'mysql.%' AND CONCAT( User, Host ) <> 'rootlocalhost' \ |
48 |
+" >/home/e-smith/db/mysql/mysql.privileges.dump |
49 |
+mysql $@ -sNe " \ |
50 |
+ SELECT \ |
51 |
+ CONCAT( '\'', User, '\'@\'', Host, '\'' ) as User FROM mysql.user \ |
52 |
+ WHERE \ |
53 |
+ User NOT LIKE 'mysql.%' \ |
54 |
+ AND CONCAT( User, Host ) <> 'rootlocalhost' \ |
55 |
+" | sort | while read u ; |
56 |
+ do echo "-- $u">> /home/e-smith/db/mysql/mysql.privileges.dump |
57 |
+ mysql $@ -sNe "show grants for $u" | sed 's/$/;/' >> /home/e-smith/db/mysql/mysql.privileges.dump |
58 |
done |
59 |
+echo >> /home/e-smith/db/mysql/mysql.privileges.dump |
60 |
+echo "FLUSH PRIVILEGES;" >> /home/e-smith/db/mysql/mysql.privileges.dump |
61 |
diff -Nur --no-dereference smeserver-mysql-2.7.0.old/rootscl/etc/e-smith/events/actions/mariadb_VER_-dump-tables smeserver-mysql-2.7.0/rootscl/etc/e-smith/events/actions/mariadb_VER_-dump-tables |
62 |
--- smeserver-mysql-2.7.0.old/rootscl/etc/e-smith/events/actions/mariadb_VER_-dump-tables 2024-08-31 23:52:18.590000000 -0400 |
63 |
+++ smeserver-mysql-2.7.0/rootscl/etc/e-smith/events/actions/mariadb_VER_-dump-tables 2024-09-01 00:16:51.103000000 -0400 |
64 |
@@ -35,24 +35,53 @@ |
65 |
echo $message | /usr/bin/mail -s "error on backup of $db MariaDB !!!VER!!! database" admin |
66 |
fi |
67 |
message="$message \nThere was an error trying to dump database $db, please check for table errors in this db. Forcing a backup of the corrupted DB." |
68 |
- /opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysqldump --socket=!!!SOCKET!!! --force --ignore-table=mysql.event --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mariadb!!!VER!!!/"$db"-failed.dump || message="$message \nFailed to force backup of corrupted db $db as $db-failed.dump" >&2 |
69 |
+ /opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysqldump --socket=!!!SOCKET!!! --force --ignore-table=mysql.event --ignore-table=mysql.users --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mariadb!!!VER!!!/"$db"-failed.dump || message="$message \nFailed to force backup of corrupted db $db as $db-failed.dump" >&2 |
70 |
if [ "$fixtables" = "enabled" ]; then |
71 |
repair="failure" |
72 |
message="$message \nTrying to auto-repair the db and do a backup after..." |
73 |
/opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysqlcheck --socket=!!!SOCKET!!! -s --auto-repair -c "$db" && \ |
74 |
- /opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysqldump --socket=!!!SOCKET!!! --ignore-table=mysql.event --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mariadb!!!VER!!!/"$db".dump && repair="success" |
75 |
+ /opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysqldump --socket=!!!SOCKET!!! --ignore-table=mysql.event --ignore-table=mysql.users --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mariadb!!!VER!!!/"$db".dump && repair="success" |
76 |
message="$message \n => $repair" |
77 |
fi |
78 |
echo $message |
79 |
echo $message | /usr/bin/mail -s "error on backup of $db MariaDB database" admin |
80 |
} |
81 |
|
82 |
+# Do nothing if disabled |
83 |
if [ "$status" = "disabled" ] |
84 |
then |
85 |
echo "mysqld is disabled - no tables dumped" >&2 |
86 |
exit 0 |
87 |
fi |
88 |
+ |
89 |
+# Actual mysql db backup |
90 |
for db in $(/opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysql --socket=!!!SOCKET!!! -BNre "show databases;"|egrep -vi "^information_schema$|^performance_schema$") |
91 |
do |
92 |
- /opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysqldump --socket=!!!SOCKET!!! --ignore-table=mysql.event --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mariadb!!!VER!!!/"$db".dump || onfailure $db |
93 |
+ /opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysqldump --socket=!!!SOCKET!!! --ignore-table=mysql.event --ignore-table=mysql.users --single-transaction --add-drop-table -QB "$db" -r /home/e-smith/db/mariadb!!!VER!!!/"$db".dump || onfailure $db |
94 |
+done |
95 |
+ |
96 |
+# Backup the users and privileges |
97 |
+# backup of mysql/mariadb users excluding root for later restore. |
98 |
+# would allow compatible backup from mariadb <103 to mariadb >= 103 |
99 |
+# will also need to exclude mysql.user from restore in mariadb >= 103 |
100 |
+# inspired by https://stackoverflow.com/a/56588240 |
101 |
+/opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysql $@ -sNe " \ |
102 |
+ SELECT \ |
103 |
+ CONCAT( 'CREATE USER \'', User, '\'@\'', Host, '\' IDENTIFIED BY \'', authentication_string, '\'\;' ) AS User \ |
104 |
+ FROM mysql.user \ |
105 |
+ WHERE \ |
106 |
+ User NOT LIKE 'mysql.%' AND CONCAT( User, Host ) <> 'rootlocalhost' \ |
107 |
+" >/home/e-smith/db/mariadb!!!VER!!!/mysql.privileges.dump |
108 |
+/opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysql $@ -sNe " \ |
109 |
+ SELECT \ |
110 |
+ CONCAT( '\'', User, '\'@\'', Host, '\'' ) as User FROM mysql.user \ |
111 |
+ WHERE \ |
112 |
+ User NOT LIKE 'mysql.%' \ |
113 |
+ AND CONCAT( User, Host ) <> 'rootlocalhost' \ |
114 |
+" | sort | while read u ; |
115 |
+ do echo "-- $u">> /home/e-smith/db/mariadb!!!VER!!!/mysql.privileges.dump |
116 |
+ /opt/rh/rh-mariadb!!!VER!!!/root/usr/bin/mysql $@ -sNe "show grants for $u" | sed 's/$/;/' >> /home/e-smith/db/mariadb!!!VER!!!/mysql.privileges.dump |
117 |
done |
118 |
+echo >> /home/e-smith/db/mariadb!!!VER!!!/mysql.privileges.dump |
119 |
+echo "FLUSH PRIVILEGES;" >> /home/e-smith/db/mariadb!!!VER!!!/mysql.privileges.dump |
120 |
+ |