MySQL是一款流行的关系型数据库管理系统,它支持多种连接方式。常规连接和SSH连接是其中两种常见方式。下面我们将介绍它们之间的区别。
常规连接:
// 连接MySQL服务器
$host = 'localhost'; // 主机名
$user = 'root'; // 用户名
$password = '123456'; // 密码
$database = 'test'; // 数据库名
$conn = mysqli_connect($host, $user, $password, $database);
// 检查连接是否成功
if (!$conn) {
die('连接失败: ' . mysqli_connect_error());
}
// 查询数据
$sql = 'SELECT * FROM `user`';
$result = mysqli_query($conn, $sql);
// 处理查询结果
if (mysqli_num_rows($result) >0) {
while ($row = mysqli_fetch_assoc($result)) {
echo '用户名: ' . $row['username'] . ', 密码: ' . $row['password'] . '
';
}
} else {
echo '没有结果';
}
// 关闭连接
mysqli_close($conn);
常规连接的代码比较简单,用mysqli_connect()函数连接MySQL服务器,然后用mysqli_query()函数执行查询,最后用mysqli_fetch_assoc()函数处理查询结果。这种连接方式适用于在本地开发和测试。
SSH连接:
// 连接MySQL服务器
$host = 'localhost'; // 主机名
$user = 'root'; // 用户名
$password = '123456'; // 密码
$database = 'test'; // 数据库名
// SSH设置
$ssh_host = 'ssh.example.com'; // SSH主机名
$ssh_user = 'sshuser'; // SSH用户名
$ssh_password = 'sshpassword'; // SSH密码
$ssh_port = 22; // SSH端口
// SSH到MySQL服务器
$connection = ssh2_connect($ssh_host, $ssh_port);
if (ssh2_auth_password($connection, $ssh_user, $ssh_password)) {
// SSH认证成功
$tunnel = ssh2_tunnel($connection, $host, 3306);
// 连接MySQL服务器
$conn = mysqli_connect('127.0.0.1', $user, $password, $database, '3306', $tunnel);
// 检查连接是否成功
if (!$conn) {
die('连接失败: ' . mysqli_connect_error());
}
// 查询数据
$sql = 'SELECT * FROM `user`';
$result = mysqli_query($conn, $sql);
// 处理查询结果
if (mysqli_num_rows($result) >0) {
while ($row = mysqli_fetch_assoc($result)) {
echo '用户名: ' . $row['username'] . ', 密码: ' . $row['password'] . '
';
}
} else {
echo '没有结果';
}
// 关闭连接
mysqli_close($conn);
} else {
// SSH认证失败
die('SSH认证失败');
}
SSH连接的代码相对复杂,需要用ssh2_connect()函数连接SSH服务器,用ssh2_auth_password()函数进行SSH认证,然后用ssh2_tunnel()函数创建隧道,最后用mysqli_connect()函数连接MySQL服务器和数据库。SSH连接的好处是可以通过SSH隧道连接到远程的MySQL服务器,增加了数据传输的安全性。