/[smeserver]/rpms/smeserver-mysql/sme10/smeserver-mysql-2.7.0-bz12145-backupuserprivileges.patch
ViewVC logotype

Annotation of /rpms/smeserver-mysql/sme10/smeserver-mysql-2.7.0-bz12145-backupuserprivileges.patch

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (hide annotations) (download)
Sun Sep 1 04:21:50 2024 UTC (3 months ago) by jpp
Branch: MAIN
CVS Tags: smeserver-mysql-2_7_0-19_el7_sme
* Sun Sep 01 2024 Jean-Philippe Pialasse <jpp@koozali.org> 2.7.0-19.sme
- backup user privileges in separate file [SME: 12145]
  this will allow mariadb 10.3 and higher migration
  and is needed to restore to SME 11

1 jpp 1.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     +

admin@koozali.org
ViewVC Help
Powered by ViewVC 1.2.1 RSS 2.0 feed