使用 phpseclib 库连接到 mysql 数据库

2023-12-23

我已使用 phpscelib 库成功连接到我的 VPS。现在我想连接到我现有的数据库。请帮助我吗?

<?php
set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');

include('Net/SSH2.php');


$ssh = new Net_SSH2('192.ccc.ccc.ccc');
if (!$ssh->login('ccc', 'cccc')) {
exit('Login Failed');
}

echo $ssh->exec("I need to put MySql commands here");
?>

首先,允许该用户远程访问mysql不是更好吗?不过,我不知道你的理由。

最常见的透明方式是创建 ssh 隧道。这可以通过两种不同的方式来完成。如果 mysql 计算机上未打开 mysql 端口 (3306),则您将需要一个必须由远程计算机打开的反向 ssh 隧道。登录 mysql 机器并发出以下命令:

ssh -R 12345:localhost:3306 user@php_machine -N

如果远程计算机上的 mysql 端口打开,则 php 计算机可以打开隧道:

ssh -f user@mysql_machine -L 12345:mysql_machine:3306 -N

无论隧道的创建方式如何,PHP 应用程序现在都可以仅使用 PDO 并连接到本地主机端口 12345。

$pdo = new PDO('mysql:host=localhost;port=12345;dbname=test', $user, $password);

所有流量都将通过隧道进行加密。


如果您只想发出几个简单的命令,您可以使用以下替代方案。

最简单但是unsecure方法是使用以下命令:

echo $ssh->exec('mysql -uUSER -pPASSWORD DATABASE -e "SQL COMMAND"');

这是不安全的,因为系统上的其他用户可以看到该密码。

您可以使用以下方法解决安全问题expect. expect是一个可以以更安全的方式将密码传递给mysql的程序。确保expect安装在远程系统上。这是一个使用的示例SHOW TABLES数据库命令test:

include('Net/SSH2.php');

$ssh = new Net_SSH2('192.xxx.xxx.xxx');
if (!$ssh->login('ssh_user', 'ssh_password')) {
exit('Login Failed');
}

echo $ssh->exec('expect <<EOF
# disable command output
log_user 0
# start the mysqldump process
spawn mysql -uTHE_USER -p test -e "SHOW TABLES"
# wait for the password prompt
expect "password:"
# send the password (mind the \r)
send "THE_PASSWORD\r"
# enable output again
log_user 1
# echo all outout until the end
expect eof
EOF
');

为了进一步了解发生了什么,我最近写了一篇博客文章 http://www.metashock.de/2013/07/safely-pass-mysql-credentials-to-mysqldump-in-a-script/关于那个。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 phpseclib 库连接到 mysql 数据库 的相关文章

  • 截断 Mysql 表 Cron 作业?

    我在如何使用 cron 作业截断 Mysql 表时遇到了一些麻烦 无论我尝试什么 我似乎都无法让数据库清除表格 感谢您的帮助 mysql uderp example pexample hlocalhost Dexample e TRUNCA
  • 为什么这会返回资源 id #2? [复制]

    这个问题在这里已经有答案了 可能的重复 我如何从 PHP 中的 MySql 响应中 回显 资源 id 6 https stackoverflow com questions 4290108 how do i echo a resource
  • 通过 facebook graph API 检索 facebook 用户的邮政编码

    我正在尝试使用 facebook graph API 检索用户的邮政编码 我正在使用以下代码 代码在php ini中 facebook new Facebook array appId gt APP ID secret gt APP SEC
  • PHP:读取字体文件的 TrueType/OpenType 元数据

    如何阅读字体详细信息 例如 字体在其元数据中包含版权 姓氏 设计者 版本等信息 我还希望脚本能够计算文件中的字形数量 并返回字体支持的语言 例如 典型的字体可能包含西方语言 瑞典语和罗马语言支持 并具有数百个字形 它应该支持 truetyp
  • 如何解码 eval( gzinflate( base64_decode(

    我已将此代码注入到我的网站中 如何解码尾随字符串 我需要知道发生了什么以及其背后的代码是什么 这应该输出将被执行的代码eval 我希望这就是您正在寻找的
  • 为什么我的 if 语句没有按我预期的方式工作?

    我正在尝试实现以下目标 我向我的 SQL 数据库询问使用SELECT FROM subjects 这样做之后我要求使用数组mysqli fetch assoc 在那之前一切都很好 现在的问题是 当我尝试在每个循环中修改 genero 的值
  • 使用 PHP 的 MySQL 连接字符串

    我正在尝试通过本地计算机连接到托管在我的服务器上的数据库 我的服务器有cPanel 11 它是一个典型的共享服务器 由CentOS提供支持 安装了PHP和MySQL 准确地说 我在同一台服务器上持有经销商帐户 我想在不同帐户或域之间访问数据
  • Joomla 页面中的自定义 php 代码

    我正在尝试将 Joomla 1 5 9 页面中的表源从页面中的硬编码 html 更改为从 SQL 数据库获取信息 执行此操作的正确方法是什么 创建一个新的模型或组件并以某种方式在页面中使用它 我找到了这些 http docs joomla
  • 忽略重复条目并在 EF Core 中的 DbContext.SaveChanges() 上提交成功条目

    我有一个 ASP Net Core 2 2 Web API 在我的一个控制器操作中 我向 MySQL 数据库表添加了一堆行 我使用的是 Pomelo 例如 dbContext AddRange entities dbContext Save
  • 从数据库填充复选框

    我有两个表 第一个由与名称关联的 id 组成 1 汽车 2 火车 3 普通 ETC 第二个表由两个字段 user id 和第一个表中的 id 组成 例如 1 1 2 1 3 当用户转到该页面时 我试图重新填充选定的复选框 首先 您查询数据库
  • Bash:递归复制命名文件,保留文件夹结构

    我希望 cp R src prog js images icon jpg tmp package 将在目标目录中产生对称结构 tmp package src prog js images icon jpg 但相反 这两个文件都被复制到 tm
  • 从支付网关重定向回时用户会话丢失

    我已将 Cyber source 配置为我的支付网关 我能够导航到 cybersource 并进行付款 并能够成功重定向回该网站 我也可以取消付款并重定向回我的网站 我收到来自支付网关的响应 但是 用户在从支付网关重定向回来时会被注销 我正
  • 如何在 Zend Framework 3 中注册自定义表单视图助手

    我正在将继承的 Zend Framework 2 应用程序迁移到 Zend Framework 3 并且在注册自定义表单视图助手时遇到了一些困难 这些助手在应用程序使用版本 2 时起作用 主要用于添加标签属性以实现可访问性 例如 这是一个自
  • Laravel leftJoin 仅右表的最后一条记录

    我是 Laravel 的新手 我有两张桌子 1 产品 2 价格 products id product int p key name varchar prices id price int p key id product int
  • 如何使用 PHP 对字符串进行 rot13 处理?

    我有一个很大的 php 代码 我想手动对其进行编码和解码 我的问题是 php 代码里面有很多单引号和双引号 因此我在使用时出现错误str rot13 功能如下 那么正确的语法是什么以及如何使用下面的函数进行编码 str rot13 That
  • 如何制作 Bash 脚本来查找项目中未使用的图像?

    如何制作一个 Bash shell 脚本 它可以识别所有 jpg gif 和 png 文件 然后识别文件夹中任何文本文件中哪些文件未通过 url href 或 src 链接 这就是我开始的 但我最终得到了与我想要的相反的结果 我不想知道引用
  • MySQL 按重复项从上到下排序

    我有一个lammer问题 因为我不是mysql专业人士 我有类似的字段 id color 1 red 2 green 3 yellow 4 green 5 green 6 red 我想按重复项进行分组 最常见的重复项先进行分组 所以应该这样
  • Laravel $request->file() 返回 null

    尝试在后端使用 Laravel 上传文件时遇到问题 Issue Laravel request gt file 方法返回 null Setup 我使用以下方法构建了一个 AJAX 请求超级代理人 https github com visio
  • MySQL 查询计算上个月

    我想计算上个月的订单总额 我收到了从当前日期获取当月数据的查询 SELECT SUM goods total AS Total Amount FROM orders WHERE order placed date gt date sub c
  • 一种无需 JavaScript 即可在 PHP 中确定浏览器宽度的方法?

    首先有吗 或者我必须使用javascript 我希望能够更改使用的 CSS 因此 frex 我可以为移动设备或其他设备加载较小的字体 不幸的是 仅使用 PHP 无法检测用户分辨率 如果您使用 Javascript 则可以在 cookie 中

随机推荐

  • 从 Promise 内部返回已解析的 Observable

    我正在尝试通过扩展默认值来构建自定义 Angular 2 http 请求 并且我正在使用 Ionic 2 本地存储来存储身份验证令牌 将来可能会使用文件系统 我的问题是如何从我的 http 服务返回已解决的承诺 以便我可以在我的组件中订阅
  • 使用 graph_tool 的所有最短路径

    我想知道 graph tool 中是否有一个内置函数可以用来查找all从节点 s 到节点 t 的最短路径 如果没有 有什么方法可以使用shortest distance 在模块graph tool topology中 或shortest p
  • 时间:2019-03-17 标签:c#integervalidationcompactframework

    使用 Net Compact Framework 2 0 如何验证整数 Int32 TryParseCompact Framework 不支持 验证 是什么意思 你的意思是解析而不抛出 static bool TryParse string
  • 如何使用 php 从 HTML 中删除

    标签及其内容

    下面是我需要删除的文字 p 标签来自 p p Addiction stress and subjective wellbeing p p The need and significance of traditional shop lot p
  • 为什么Java构造函数不能同步?

    根据Java语言规范 http java sun com docs books jls third edition html classes html 8 8 3 构造函数不能标记为同步 因为在创建该对象的线程完成之前 其他线程无法看到正在
  • 哈希表中的开放寻址仅对搜索有用吗?首先,元素是如何进入哈希表的?

    From 关于开放寻址的维基百科链接 http en wikipedia org wiki Open addressing 开放寻址或封闭散列是一种碰撞方法 哈希表中的分辨率 使用这种方法 哈希冲突是 通过探测或搜索中的替代位置来解决 数组
  • 使用 AJAX 和 jquery 以及 Codeigniter 将表单数据传递到控制器

    我正在尝试将此表单中的数据发布到数据库中 我尝试过一些教程但没有成功 这是我的代码 有任何想法吗 View
  • 如何自定义 virtualenv shell 提示符

    如何定义激活时使用的自定义提示Python虚拟环境 https pypi python org pypi virtualenv 我有一个 bash 脚本 用于激活调用特定时使用的 virtualenvFabric http docs fab
  • Spring Boot JPA 存储库类的 Byte Buddy 运行时生成

    我在用字节好友生成 JPA 实体和 JPA 存储库 我能够生成 JPA 实体 但无法继续生成相应的 JPA 存储库 以下是代表 Person 实体的代码 import javax persistence Entity public clas
  • IBM MQSeries 与 Tomcat 的连接池

    我们正在尝试建立从 tomcat 到 IBM MQSeries 的 jms 连接 并考虑建立连接池 我们点击了下面的链接 并提供了建议的解决方案 使用 Tomcat 的 WebSphere MQ 连接池 https stackoverflo
  • 为什么 perfmon 看不到我的自定义性能计数器的实例?

    我正在为应用程序创建一些自定义性能计数器 我编写了一个简单的 C 工具来创建类别和计数器 例如 下面的代码片段基本上就是我正在运行的代码片段 然后 我运行一个单独的应用程序 不断刷新计数器的原始值 当它运行时 计数器和虚拟实例会在本地的 p
  • 听向上/向下滚动?

    我正在构建一个应用程序 ES6 我很好奇捕获向上 向下滚动事件的 正确 方法是什么 我尝试 npm 安装react scroll listener 但我无法让它与我的ES6类一起工作 基本上我想要 如果向上滚动 则执行此操作 如果向下滚动
  • 在R中添加具有连续数字的列

    如果这个问题非常简单 我深表歉意 但我正在寻找一种方法 将一列连续整数添加到数据帧中 如果我的数据帧有 200 个观察值 例如 第一个观察值从 1 开始 并且最后一个以 200 结尾 我怎样才能做到这一点 对于数据框 df 您可以使用 df
  • Angular 2 表单验证,minLength 验证器不起作用

    我有以下 Angular 2 形式
  • SQL 更新 - 多列

    我想使用第二个表中的值来更新表中的多个列Select语句来获取这样的值 UPDATE tbl1 SET col1 col2 col3 SELECT colA colB colC FROM tbl2 WHERE tbl2 id someid
  • 如何自动将 C++ 文件转换为 Wireshark Lua 解析器

    我有一个定义特定协议的 C 文件 该文件包含定义协议中使用的消息的结构 每个结构体都包含特定消息的字段 示例如下 struct STATS00 MESSAGE T uint8 t message type uint16 t num send
  • 在这个CGBitmapContextCreate中,为什么bytesPerRow为0?

    我在Apple的示例代码中注意到 他们经常在CGBitmapContextCreate的bytesPerRow参数中提供0值 例如 这来自反射 http developer apple com library ios samplecode
  • Android 上不显示 OneSignal-Pushnotification 小图标

    我们有一个 Cordova 应用程序 其中每个 drawable xy 文件夹中都包含一个文件 icon png 我们使用 OneSignal 提供推送通知 通知正在按预期工作 除了那个小图标 我的手机顶部栏上只有一个空白图标 其中显示应用
  • 粗体文本行高高于普通文本行高

    一定是我在这里缺少的一些基本东西 我认为 font weight bold 不应该改变文本占用的垂直空间 特别是当行高设置为高于字体大小时 http jsfiddle net Arkkimaagi 7xAyy http jsfiddle n
  • 使用 phpseclib 库连接到 mysql 数据库

    我已使用 phpscelib 库成功连接到我的 VPS 现在我想连接到我现有的数据库 请帮助我吗 首先 允许该用户远程访问mysql不是更好吗 不过 我不知道你的理由 最常见的