# Configurações $ZipFilePath = "D:\EvoluTI\mysql-8.0.zip" # Substitua pelo caminho do seu arquivo ZIP $ExtractToDir = "D:\EvoluTI\mysql-8.0" # Substitua pelo diretório de extração $mysqlServiceName = "MySQL80" $mysqlRootPassword = "mysql147" # Verificar se o script está sendo executado como administrador If (-Not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { Write-Warning "Este script precisa ser executado como administrador." Start-Process powershell -ArgumentList "-File `"$PSCommandPath`"" -Verb RunAs Exit } # Configurar a página de código para UTF-8 [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 # Verificar se o arquivo ZIP existe If (-Not (Test-Path $ZipFilePath)) { Write-Error "Arquivo ZIP não encontrado: $ZipFilePath" Exit } # Criar o diretório de extração se não existir If (-Not (Test-Path $ExtractToDir)) { Write-Output "Criando o diretório de extração: $ExtractToDir" New-Item -ItemType Directory -Path $ExtractToDir } # Extrair o arquivo ZIP Write-Output "Extraindo o arquivo ZIP para $ExtractToDir" Add-Type -AssemblyName System.IO.Compression.FileSystem [System.IO.Compression.ZipFile]::ExtractToDirectory($ZipFilePath, $ExtractToDir) # Configurações do MySQL $mysqlDir = $ExtractToDir $mysqlDataDir = Join-Path $mysqlDir "data" $myIniFile = Join-Path $mysqlDir "my.ini" # Criar o arquivo de configuração my.ini If (-Not (Test-Path $myIniFile)) { Write-Output "Criando o arquivo de configuração my.ini..." $content = @" [mysqld] basedir=$mysqlDir datadir=$mysqlDataDir port=3306 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES "@ $content | Out-File -Encoding ASCII $myIniFile } Else { Write-Output "Arquivo my.ini já existe, pulando esta etapa..." } # Criar o diretório de dados If (-Not (Test-Path $mysqlDataDir)) { Write-Output "Criando o diretório de dados..." New-Item -ItemType Directory -Path $mysqlDataDir } Else { Write-Output "Diretório de dados já existe, pulando esta etapa..." } # Inicializar o banco de dados If (-Not (Test-Path (Join-Path $mysqlDataDir "ibdata1"))) { Write-Output "Inicializando o banco de dados..." Start-Process -FilePath "$mysqlDir\bin\mysqld.exe" -ArgumentList "--defaults-file=$myIniFile --initialize-insecure" -Wait } Else { Write-Output "Banco de dados já inicializado, pulando esta etapa..." } # Iniciar o servidor MySQL Write-Output "Iniciando o servidor MySQL..." Start-Process -FilePath "$mysqlDir\bin\mysqld.exe" -ArgumentList "--defaults-file=$myIniFile" # Esperar alguns segundos para o servidor MySQL iniciar Start-Sleep -Seconds 10 # Definir senha para o usuário root Write-Output "Definindo senha para o usuário root..." & "$mysqlDir\bin\mysql.exe" -u root --execute="ALTER USER 'root'@'localhost' IDENTIFIED BY '$mysqlRootPassword';" # Verificar se o serviço já está registrado $service = Get-Service -Name $mysqlServiceName -ErrorAction SilentlyContinue If (-Not $service) { # Registrar o MySQL como um serviço do Windows Write-Output "Registrando o MySQL como um serviço do Windows..." Start-Process -FilePath "$mysqlDir\bin\mysqld.exe" -ArgumentList "--install $mysqlServiceName --defaults-file=$myIniFile" -Wait } Else { Write-Output "Serviço MySQL já está registrado, pulando esta etapa..." } # Verificar o status do serviço MySQL $service = Get-Service -Name $mysqlServiceName -ErrorAction SilentlyContinue If ($service.Status -ne "Running") { Write-Output "Serviço MySQL não está em execução. Tentando iniciar o serviço..." Start-Service -Name $mysqlServiceName } Else { Write-Output "Serviço MySQL já está em execução." } # Verificar se o serviço MySQL iniciou corretamente $service = Get-Service -Name $mysqlServiceName If ($service.Status -ne "Running") { Write-Output "Falha ao iniciar o serviço MySQL. Verifique os logs para mais detalhes." Write-Output "Verificando os logs do MySQL..." Get-Content -Path (Join-Path $mysqlDataDir "*.err") } Else { Write-Output "Serviço MySQL iniciado com sucesso!" } Write-Output "Fim do script."