48 lines
1.5 KiB
PowerShell
48 lines
1.5 KiB
PowerShell
Param(
|
|
[string]$Host = $env:DB_HOST,
|
|
[int]$Port = [int]($env:DB_PORT),
|
|
[string]$Database = $env:DB_NAME,
|
|
[string]$User = $env:DB_USER,
|
|
[string]$Password = $env:DB_PASSWORD,
|
|
[string]$AdminPlain = 'Admin123456'
|
|
)
|
|
|
|
Write-Host "Using DB: ${Host}:${Port}/${Database}"
|
|
|
|
# 生成管理员 bcrypt 哈希
|
|
try {
|
|
$nodeScript = @"
|
|
const bcrypt = require('bcryptjs');
|
|
const pwd = process.argv[2] || 'Admin123456';
|
|
bcrypt.hash(pwd, 10).then(h => { console.log(h); }).catch(e => { console.error(e); process.exit(1); });
|
|
"@
|
|
$hash = node -e $nodeScript $AdminPlain
|
|
if (-not $hash) { throw 'bcrypt hash failed' }
|
|
} catch {
|
|
Write-Error "Failed to generate bcrypt hash: $_"
|
|
exit 1
|
|
}
|
|
|
|
# 读取SQL并替换占位符
|
|
$schema = Get-Content -Raw -Encoding UTF8 "$PSScriptRoot/create-bank-schema.sql"
|
|
$seed = (Get-Content -Raw -Encoding UTF8 "$PSScriptRoot/seed-bank-demo.sql").Replace('REPLACE_ADMIN_BCRYPT', $hash)
|
|
$sql = $schema + "`n" + $seed
|
|
|
|
# 写入临时文件
|
|
$tmp = New-TemporaryFile
|
|
Set-Content -Path $tmp -Value $sql -Encoding UTF8
|
|
|
|
# 调用 mysql 客户端
|
|
try {
|
|
$env:MYSQL_PWD = $Password
|
|
Get-Content $tmp | mysql --host=$Host --port=$Port --user=$User --database=$Database --default-character-set=utf8mb4 --protocol=TCP
|
|
if ($LASTEXITCODE -ne 0) { throw "mysql returned $LASTEXITCODE" }
|
|
Write-Host "✅ Schema & seed executed successfully"
|
|
} catch {
|
|
Write-Error "Failed to execute SQL: $_"
|
|
exit 1
|
|
} finally {
|
|
Remove-Item $tmp -Force -ErrorAction SilentlyContinue
|
|
}
|
|
|