【发布时间】:2019-02-05 03:34:33
【问题描述】:
是否可以通过 java 代码中的 jdbc 运行 linux shell 命令以及如何运行? 我一直在尝试这个:
Class.forName("com.mysql.jdbc.Driver");
connect = DriverManager.getConnection("jdbc:mysql://" + this.host + "/" + this.db + "?", properties);
statement = connect.createStatement();
String sql = "\\! touch /home/dbsms/testfile";
statement.execute(sql);
但我收到“您的 SQL 语法有错误;”错误。我尝试这个的原因: MySQL 服务器在受保护(无互联网)网络上的机器上运行。我的 java 应用程序旨在操作数据库。它是一个文档管理数据库。因此,一旦将新文档插入数据库,我需要通知用户。同一网络上还有另一台能够发送 SMS 的机器。我需要做的是创建一个包含 SMS 文本并命名为电话号码的文件,SMS 机器上的守护程序将接收并处理它。我知道有一些库可以让我通过 ssh 在远程计算机上执行 shell 命令,但如果可能的话,我想使用 jdbc。
【问题讨论】:
-
使用 jdbc,我们有一个数据库连接,我们必须给出一个有效的 sql 语句才能执行。
-
不知道执行从 sql 运行的 shell 脚本。但我可以帮助您从 java 代码中执行相同的操作。
-
所以没有“\!命令”是可能的吗?
-
那太好了@Abhijit Pritam Dutta
-
如果任何有权访问数据库的人都可以在数据库服务器上运行 shell 命令,这确实是一个严重的安全问题。
标签: java mysql bash shell jdbc