Last active
September 16, 2023 00:38
-
-
Save ybucci/7bd94be9381766408149ac17d98d378d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
clear | |
# Função para solicitar e verificar a confirmação da senha | |
confirm_password() { | |
local prompt="Digite novamente a senha: " | |
read -s -p "$prompt" confirmed_password | |
echo | |
while [ "$confirmed_password" != "$1" ]; do | |
echo "As senhas não correspondem. Tente novamente." | |
read -s -p "$prompt" confirmed_password | |
echo | |
done | |
} | |
# Função para instalar o MySQL | |
install_mysql() { | |
clear | |
# Configurar sources.list | |
echo -n > /etc/apt/sources.list | |
echo 'deb http://archive.debian.org/debian/ stretch main contrib non-free' | sudo tee -a /etc/apt/sources.list > /dev/null | |
echo 'deb http://archive.debian.org/debian/ stretch-proposed-updates main contrib non-free' | sudo tee -a /etc/apt/sources.list > /dev/null | |
echo 'deb http://archive.debian.org/debian-security stretch/updates main contrib non-free' | sudo tee -a /etc/apt/sources.list > /dev/null | |
# Atualizar pacotes | |
apt update | |
# Adicionar as linhas no mysql.list | |
echo -e 'deb [ allow-insecure=yes ] http://repo.mysql.com/apt/debian/ stretch mysql-5.6\ndeb-src [ allow-insecure=yes ] http://repo.mysql.com/apt/debian/ stretch mysql-5.6' | tee /etc/apt/sources.list.d/mysql.list > /dev/null | |
wget -O /tmp/RPM-GPG-KEY-mysql https://repo.mysql.com/RPM-GPG-KEY-mysql --no-check-certificate > /dev/null | |
apt-key add /tmp/RPM-GPG-KEY-mysql > /dev/null | |
# Atualizar pacotes | |
apt update | |
# Instalar o servidor MySQL | |
if apt-get install mysql-server -y --allow-unauthenticated; then | |
echo "MySQL Instalado com sucesso" | |
echo | |
echo -e "bind-address = 0.0.0.0\nlower_case_table_names = 1" | tee -a /etc/mysql/mysql.conf.d/mysqld.cnf > /dev/null | |
systemctl enable mysql.service | |
systemctl restart mysql.service | |
else | |
echo "Erro ao instalar o MySQL" | |
echo | |
fi | |
} | |
# Função para criar novo banco de dados | |
create_new_database() { | |
local mysql_host="" | |
local mysql_port="" | |
local mysql_user="" | |
local mysql_password="" | |
local db_name="" | |
read -p "Digite o host do MySQL (padrão: localhost): " mysql_host | |
mysql_host=${mysql_host:-localhost} | |
read -p "Digite a porta do MySQL (padrão: 3306): " mysql_port | |
mysql_port=${mysql_port:-3306} | |
read -p "Digite o usuário do MySQL (padrão: root): " mysql_user | |
mysql_user=${mysql_user:-root} | |
read -s -p "Digite a senha do usuário MySQL: " mysql_password | |
echo | |
read -p "Digite o nome do novo banco de dados: " db_name | |
if mysql -h $mysql_host -P $mysql_port -u $mysql_user -p$mysql_password -e "CREATE DATABASE IF NOT EXISTS $db_name;"; then | |
echo "Banco de dados '$db_name' criado com sucesso." | |
echo | |
else | |
echo "Erro ao criar o banco de dados '$db_name'" | |
echo | |
fi | |
} | |
# Função para criar novo usuário | |
create_new_user() { | |
local mysql_host="" | |
local mysql_port="" | |
local mysql_user="" | |
local mysql_password="" | |
local db_user="" | |
local db_password="" | |
read -p "Digite o host do MySQL (padrão: localhost): " mysql_host | |
mysql_host=${mysql_host:-localhost} | |
read -p "Digite a porta do MySQL (padrão: 3306): " mysql_port | |
mysql_port=${mysql_port:-3306} | |
read -p "Digite o usuário do MySQL (padrão: root): " mysql_user | |
mysql_user=${mysql_user:-root} | |
read -s -p "Digite a senha do usuário MySQL: " mysql_password | |
echo | |
read -p "Digite o nome do novo usuário: " db_user | |
read -s -p "Digite a senha para o usuário $db_user: " db_password | |
confirm_password "$db_password" | |
if mysql -h $mysql_host -P $mysql_port -u $mysql_user -p$mysql_password -e "CREATE USER '$db_user'@'%' IDENTIFIED BY '$db_password';"; then | |
echo "Usuário '$db_user' criado com sucesso." | |
echo | |
else | |
echo "Erro ao criar o usuário '$db_user'" | |
echo | |
fi | |
} | |
# Função para dar grant all para usuário em um banco de dados | |
grant_permissions() { | |
local mysql_host="" | |
local mysql_port="" | |
local mysql_user="" | |
local mysql_password="" | |
local db_user="" | |
local db_name="" | |
read -p "Digite o host do MySQL (padrão: localhost): " mysql_host | |
mysql_host=${mysql_host:-localhost} | |
read -p "Digite a porta do MySQL (padrão: 3306): " mysql_port | |
mysql_port=${mysql_port:-3306} | |
read -p "Digite o usuário do MySQL (padrão: root): " mysql_user | |
mysql_user=${mysql_user:-root} | |
read -s -p "Digite a senha do usuário MySQL: " mysql_password | |
echo | |
read -p "Digite o nome do usuário: " db_user | |
read -p "Digite o nome do banco de dados: " db_name | |
if mysql -h $mysql_host -P $mysql_port -u $mysql_user -p$mysql_password -e "GRANT ALL PRIVILEGES ON $db_name.* TO '$db_user'@'%';"; then | |
echo "Permissões concedidas para usuário '$db_user' no banco de dados '$db_name'." | |
echo | |
else | |
echo "Erro ao conceder permissões para o usuário '$db_user' no banco de dados '$db_name'" | |
echo | |
fi | |
} | |
# Função para alterar a senha do usuário root do MySQL | |
change_root_password() { | |
local mysql_host="" | |
local mysql_port="" | |
local mysql_user="" | |
local mysql_password="" | |
local new_root_password="" | |
read -p "Digite o host do MySQL (padrão: localhost): " mysql_host | |
mysql_host=${mysql_host:-localhost} | |
read -p "Digite a porta do MySQL (padrão: 3306): " mysql_port | |
mysql_port=${mysql_port:-3306} | |
read -p "Digite o usuário do MySQL (padrão: root): " mysql_user | |
mysql_user=${mysql_user:-root} | |
read -s -p "Digite a senha do usuário MySQL: " mysql_password | |
echo | |
read -s -p "Digite a nova senha para o usuário root do MySQL: " new_root_password | |
confirm_password "$new_root_password" | |
echo | |
if mysql -h $mysql_host -P $mysql_port -u $mysql_user -p$mysql_password -e "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('$new_root_password');"; then | |
echo "Senha do usuário root do MySQL alterada com sucesso." | |
echo | |
else | |
echo "Erro ao alterar a senha do usuário root do MySQL" | |
echo | |
fi | |
} | |
# Função para resetar a senha de um usuário no MySQL 5.6 | |
reset_user_password() { | |
local mysql_host="" | |
local mysql_port="" | |
local mysql_user="" | |
local mysql_password="" | |
local reset_user="" | |
local new_user_password="" | |
read -p "Digite o host do MySQL (padrão: localhost): " mysql_host | |
mysql_host=${mysql_host:-localhost} | |
read -p "Digite a porta do MySQL (padrão: 3306): " mysql_port | |
mysql_port=${mysql_port:-3306} | |
read -p "Digite o usuário do MySQL (padrão: root): " mysql_user | |
mysql_user=${mysql_user:-root} | |
read -s -p "Digite a senha do usuário MySQL: " mysql_password | |
echo | |
read -p "Digite o nome do usuário para o qual deseja resetar a senha: " reset_user | |
read -s -p "Digite a nova senha para o usuário $reset_user: " new_user_password | |
echo | |
confirm_password "$new_user_password" | |
if mysql -h $mysql_host -P $mysql_port -u $mysql_user -p$mysql_password -e "SET PASSWORD FOR '$reset_user'@'%' = PASSWORD('$new_user_password');"; then | |
echo "Senha do usuário '$reset_user' resetada com sucesso." | |
echo | |
else | |
echo "Erro ao resetar a senha do usuário '$reset_user'" | |
echo | |
fi | |
} | |
# Função para reparar uma tabela específica | |
repair_table() { | |
local mysql_host="" | |
local mysql_port="" | |
local mysql_user="" | |
local mysql_password="" | |
local db_name="" | |
local table_name="" | |
read -p "Digite o host do MySQL (padrão: localhost): " mysql_host | |
mysql_host=${mysql_host:-localhost} | |
read -p "Digite a porta do MySQL (padrão: 3306): " mysql_port | |
mysql_port=${mysql_port:-3306} | |
read -p "Digite o usuário do MySQL (padrão: root): " mysql_user | |
mysql_user=${mysql_user:-root} | |
read -s -p "Digite a senha do usuário MySQL: " mysql_password | |
echo | |
read -p "Digite o nome do banco de dados: " db_name | |
read -p "Digite o nome da tabela a ser reparada: " table_name | |
if mysqlcheck -h $mysql_host -P $mysql_port -u $mysql_user -p$mysql_password --auto-repair --check "$db_name" "$table_name"; then | |
echo "Tabela '$table_name' no banco '$db_name' reparada com sucesso." | |
echo | |
else | |
echo "Erro ao reparar a tabela '$table_name' no banco '$db_name'" | |
echo | |
fi | |
} | |
# Função para reparar um banco de dados inteiro | |
repair_database() { | |
local mysql_host="" | |
local mysql_port="" | |
local mysql_user="" | |
local mysql_password="" | |
local db_name="" | |
read -p "Digite o host do MySQL (padrão: localhost): " mysql_host | |
mysql_host=${mysql_host:-localhost} | |
read -p "Digite a porta do MySQL (padrão: 3306): " mysql_port | |
mysql_port=${mysql_port:-3306} | |
read -p "Digite o usuário do MySQL (padrão: root): " mysql_user | |
mysql_user=${mysql_user:-root} | |
read -s -p "Digite a senha do usuário MySQL: " mysql_password | |
echo | |
read -p "Digite o nome do banco de dados a ser reparado: " db_name | |
if mysqlcheck -h $mysql_host -P $mysql_port -u $mysql_user -p$mysql_password --auto-repair --check "$db_name"; then | |
echo "Banco de dados '$db_name' reparado com sucesso." | |
echo | |
else | |
echo "Erro ao reparar o banco de dados '$db_name'" | |
echo | |
fi | |
} | |
# Função para fazer backup do banco de dados | |
backup_database() { | |
local mysql_host="" | |
local mysql_port="" | |
local mysql_user="" | |
local mysql_password="" | |
local db_name="" | |
local backup_path="" | |
read -p "Digite o host do MySQL (padrão: localhost): " mysql_host | |
mysql_host=${mysql_host:-localhost} | |
read -p "Digite a porta do MySQL (padrão: 3306): " mysql_port | |
mysql_port=${mysql_port:-3306} | |
read -p "Digite o usuário do MySQL (padrão: root): " mysql_user | |
mysql_user=${mysql_user:-root} | |
read -s -p "Digite a senha do usuário MySQL: " mysql_password | |
echo | |
read -p "Digite o nome do banco de dados a ser backup: " db_name | |
read -p "Digite o caminho completo para o arquivo de backup (Ex: /tmp/backup.sql): " backup_path | |
if mysqldump -h $mysql_host -P $mysql_port -u $mysql_user -p$mysql_password $db_name --single-transaction --quick --skip-lock-tables --routines --events --default-character=utf8 --column-statistics=0 > $backup_path; then | |
echo "Backup do banco de dados '$db_name' realizado com sucesso no arquivo '$backup_path'." | |
echo | |
else | |
echo "Erro ao fazer backup do banco de dados '$db_name'" | |
echo | |
fi | |
} | |
# Função para restaurar um banco de dados a partir de um arquivo de backup | |
restore_database() { | |
local mysql_host="" | |
local mysql_port="" | |
local mysql_user="" | |
local mysql_password="" | |
local db_name="" | |
local backup_path="" | |
read -p "Digite o host do MySQL (padrão: localhost): " mysql_host | |
mysql_host=${mysql_host:-localhost} | |
read -p "Digite a porta do MySQL (padrão: 3306): " mysql_port | |
mysql_port=${mysql_port:-3306} | |
read -p "Digite o usuário do MySQL (padrão: root): " mysql_user | |
mysql_user=${mysql_user:-root} | |
read -s -p "Digite a senha do usuário MySQL: " mysql_password | |
echo | |
read -p "Digite o nome do banco de dados a ser restaurado: " db_name | |
read -p "Digite o caminho completo para o arquivo de backup: " backup_path | |
mysql -h $mysql_host -P $mysql_port -u $mysql_user -p$mysql_password -e "CREATE DATABASE IF NOT EXISTS $db_name;" | |
if mysql -h $mysql_host -P $mysql_port -u $mysql_user -p$mysql_password $db_name < $backup_path; then | |
echo "Banco de dados '$db_name' restaurado com sucesso a partir do arquivo '$backup_path'." | |
echo | |
else | |
echo "Erro ao restaurar o banco de dados '$db_name' a partir do arquivo '$backup_path'" | |
echo | |
fi | |
} | |
# Exibir menu de seleção | |
while true; do | |
echo "1. Instalar o MySQL 5.6" | |
echo "2. Criar novo banco de dados" | |
echo "3. Criar novo usuário" | |
echo "4. Conceder todas as permissões a um usuário em um banco de dados" | |
echo "5. Alterar a senha do usuário root do MySQL" | |
echo "6. Resetar a senha de um usuário do banco" | |
echo "7. Reparar uma tabela específica" | |
echo "8. Reparar um banco de dados" | |
echo "9. Fazer backup de um banco de dados" | |
echo "10. Restaurar um banco de dados a partir de um arquivo de backup" | |
echo "11. Sair" | |
echo | |
read -p "Escolha uma opção: " choice | |
case $choice in | |
1) | |
install_mysql | |
;; | |
2) | |
create_new_database | |
;; | |
3) | |
create_new_user | |
;; | |
4) | |
grant_permissions | |
;; | |
5) | |
change_root_password | |
;; | |
6) | |
reset_user_password | |
;; | |
7) | |
repair_table | |
;; | |
8) | |
repair_database | |
;; | |
9) | |
backup_database | |
;; | |
10) | |
restore_database | |
;; | |
11) | |
echo "Saindo do script." | |
exit | |
;; | |
*) | |
echo "Opção inválida. Escolha novamente." | |
;; | |
esac | |
done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment