O desafio aqui é simples. Você quer acessar um banco de dados MySQL, porém este banco não permite nenhum tipo de acesso externo, sendo acessível apenas a partir do servidor local (127.0.0.1 / Localhost) e também não há um PHPMyAdmin disponível neste servidor. E agora, como fazer?
Este programa mostra os comandos básicos para acessar diretamente o servidor MySQL a partir do servidor local, mostrando como enviar tanto queries parametrizadas como escritas em texto plano
No exemplo abaixo, estou mostrando como listar todas as tabelas de um site WordPress e fazer alterações na mesma. No exemplo também mostro como se faz codificar uma senha no padrão do WordPress. No final das contas, o exemplo abaixo serve para alterar a senha de acesso de um usuário administrador do WordPress, tendo em vista que utilizei o nome padrão da tabela “wp_users”, porém o nome correto da tabela de usuários deverá ser vista na relação de tabelas que mostro logo no início.
Dito tudo isso, segue o código, e boa diversão!
<?php
// Dados de acesso ao BD
$host = '<endereço do host>';
$dbname = '<nome do BD / Schema';
$username = '<nome do usuário>';
$password = '<senha do BD>';
// Verifica conexão
$conn = new mysqli($host, $username, $password, $dbname);
if ($conn->connect_error) {
die("Conexão falhou: " . $conn->connect_error);
}
// Mostra tabelas existentes no BD
$sql = "SHOW TABLES FROM `$dbname`";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "Tabelas em '$dbname':<br>";
while ($row = $result->fetch_array()) {
echo $row[0] . "<br>";
}
} else {
echo "Não encontrei tabelas em '$dbname'.";
}
// Codifica a senha do padrão do WordPress
$password = '<nova senha>';
$preHashed = base64_encode(hash_hmac('sha384', trim($password), 'wp-sha384', true));
$bcryptHash = password_hash($preHashed, PASSWORD_BCRYPT);
$wpHash = '$wp' . $bcryptHash;
echo "<hr/>WordPress-style hash: " . $wpHash . "<hr/>";
// Altera senha do usuário inicial / administrador no BD do WordPress
$stmt = $conn->prepare("UPDATE wp_users SET user_pass = ? WHERE ID = 1");
$stmt->bind_param("s", $wpHash);
$stmt->execute();
$result = $stmt->get_result();
$stmt->close();
// Caso você queira enviar mais comandos SQL para o BD
// Exemplo: mostra todos os usuários do WordPress
$query = "SELECT * FROM wp_users";
$userResult = $conn->query($query);
echo "<h3>Resultado da Query</h3>";
if ($userResult->num_rows > 0) {
echo "<table border='1'><tr>";
while ($fieldInfo = $userResult->fetch_field()) {
echo "<th>{$fieldInfo->name}</th>";
}
echo "</tr>";
while ($row = $userResult->fetch_assoc()) {
echo "<tr>";
foreach ($row as $value) {
echo "<td>" . htmlspecialchars($value) . "</td>";
}
echo "</tr>";
}
echo "</table>";
} else {
echo "wp_users está vazia.";
}
$conn->close();
?>Se este post foi útil para você, deixe um comentário lá no final.