Quantcast
Channel: Teguh Triharto Learning Center
Viewing all articles
Browse latest Browse all 413

.::: Script to backup user MySQL MariaDB & MarinaDB :::.

$
0
0

1. capture user
select @@hostname,user,host from mysql.user where user like 'teguh%';
show grants for 'teguh'@'%';
show grants for 'teguh'@'localhost';

MariaDB [(none)]> select @@hostname,user,host from mysql.user where user like 'teguh%';
+------------+-------+-----------+
| @@hostname | User  | Host      |
+------------+-------+-----------+
| teguhth    | teguh | %         |
| teguhth    | teguh | localhost |
+------------+-------+-----------+
2 rows in set (0.006 sec)
 
MariaDB [(none)]> show grants for 'teguh'@'%';
+---------------------------------------------------------------------------------------------------------------------------------+
| Grants for teguh@%                                                                                                              |
+---------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO `teguh`@`%` IDENTIFIED BY PASSWORD '*EB39BF97E50561CC0C8AA79DC4F49D572679286F' WITH GRANT OPTION |
+---------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.003 sec)

MariaDB [(none)]> show grants for 'teguh'@'localhost';
+-----------------------------------------------------------------------------------------------------------------------------------------+
| Grants for teguh@localhost                                                                                                              |
+-----------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO `teguh`@`localhost` IDENTIFIED BY PASSWORD '*EB39BF97E50561CC0C8AA79DC4F49D572679286F' WITH GRANT OPTION |
+-----------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.000 sec)

MariaDB [(none)]>

 

2. create scritp backup user

[root@teguhth user]# cat backup_user.sh
#!/bin/bash

# Set your MariaDB credentials
DB_USER="teguh"
DB_PASSWORD="teguhteguh"
DB_HOST="localhost"
DB_PORT="3306"

# Set the output directory
OUTPUT_DIR="/data/user"

# Create a timestamp for the output file
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")

# Function to execute SQL queries and append results to a file
execute_query_and_append() {
    QUERY=$1
    OUTPUT_FILE=$2

    # Execute the query, append results to the output file, and add a semicolon
    echo -n "$(mysql -u$DB_USER -p$DB_PASSWORD -h $DB_HOST -P $DB_PORT -e "$QUERY;")">> "$OUTPUT_FILE"
    echo ";">> "$OUTPUT_FILE"
}

# Get a list of users and hosts from the provided sample output
USERS_AND_HOSTS=(
                 "teguh %"
                 "teguh localhost"
                 )

# Iterate over users and collect results
for USER_AND_HOST in "${USERS_AND_HOSTS[@]}"; do
    # Extract user and host
    USER=$(echo $USER_AND_HOST | awk '{print $1}')
    HOST=$(echo $USER_AND_HOST | awk '{print $2}')

    # Set the output file
    OUTPUT_FILE="$OUTPUT_DIR/$TIMESTAMP-user_info_${USER}_${HOST}.sql"

    # Show create user
    CREATE_USER_QUERY="SHOW CREATE USER '$USER'@'$HOST';"
  execute_query_and_append "$CREATE_USER_QUERY""$OUTPUT_FILE"

# Show grants for user
    GRANTS_QUERY="SHOW GRANTS FOR '$USER'@'$HOST';"
    execute_query_and_append "$GRANTS_QUERY""$OUTPUT_FILE"
    
# Add '---' before lines matching "CREATE USER for"& "grants for USER for"
sed -i '/CREATE USER for/s/^/---/'"$OUTPUT_FILE"
sed -i '/Grants for/s/^/---/'"$OUTPUT_FILE"
# Display the modified file
cat "$OUTPUT_FILE"

done

echo "Script completed successfully!"
[root@teguhth user]#


3. run backup user

sh backup_user.sh

[root@teguhth user]# ls
backup_user.sh  old  test
[root@teguhth user]# sh backup_user.sh
---CREATE USER for teguh@%
CREATE USER `teguh`@`%` IDENTIFIED BY PASSWORD '*EB39BF97E50561CC0C8AA79DC4F49D572679286F';
---Grants for teguh@%
GRANT ALL PRIVILEGES ON *.* TO `teguh`@`%` IDENTIFIED BY PASSWORD '*EB39BF97E50561CC0C8AA79DC4F49D572679286F' WITH GRANT OPTION;
---CREATE USER for teguh@localhost
CREATE USER `teguh`@`localhost` IDENTIFIED BY PASSWORD '*EB39BF97E50561CC0C8AA79DC4F49D572679286F';
---Grants for teguh@localhost
GRANT ALL PRIVILEGES ON *.* TO `teguh`@`localhost` IDENTIFIED BY PASSWORD '*EB39BF97E50561CC0C8AA79DC4F49D572679286F' WITH GRANT OPTION;
Script completed successfully! at 20231211_164938
[root@teguhth user]#
 


4. check result
[root@teguhth user]# ls
20231211_164938-user_info_teguh_localhost.sql  20231211_164938-user_info_teguh_%.sql  backup_user.sh  old  test
[root@teguhth user]#
[root@teguhth user]# cat 20231211_164938-user_info_teguh_%.sql
---CREATE USER for teguh@%
CREATE USER `teguh`@`%` IDENTIFIED BY PASSWORD '*EB39BF97E50561CC0C8AA79DC4F49D572679286F';
---Grants for teguh@%
GRANT ALL PRIVILEGES ON *.* TO `teguh`@`%` IDENTIFIED BY PASSWORD '*EB39BF97E50561CC0C8AA79DC4F49D572679286F' WITH GRANT OPTION;
[root@teguhth user]#
[root@teguhth user]# cat 20231211_164938-user_info_teguh_localhost.sql
---CREATE USER for teguh@localhost
CREATE USER `teguh`@`localhost` IDENTIFIED BY PASSWORD '*EB39BF97E50561CC0C8AA79DC4F49D572679286F';
---Grants for teguh@localhost
GRANT ALL PRIVILEGES ON *.* TO `teguh`@`localhost` IDENTIFIED BY PASSWORD '*EB39BF97E50561CC0C8AA79DC4F49D572679286F' WITH GRANT OPTION;
[root@teguhth user]#
 



Viewing all articles
Browse latest Browse all 413

Trending Articles