通过 SSH 执行 Mysql 命令

通过 SSH 执行 Mysql 命令

我正在尝试通过 ssh 执行 mysql 查询,除非我放置 where=xxx 子句,否则它工作正常,有人可以指导我吗?这是一个有效的例子

ssh mysql1.server.xxx "sudo mysql -u root --execute 'SELECT * from mysql.user;'"

这是一个不起作用的例子

ssh mysql1.server.xxx "sudo mysql -u root --execute 'SELECT * from mysql.user where User='username';'"

答案1

您有嵌套的单引号:

'SELECT ... User='username';'
^                ^        ^ ^ <-- here

您需要对一组引号进行转义。例如:

ssh mysql1.example.com "mysql --execute \"SELECT * from mysql.user where User='username';\""

答案2

一般来说,无论何时使用 ssh 远程执行命令,都要注意引号,因为您可能需要对它们进行转义等,否则您可能会意外地嵌套它们。

特别是,在这种情况下,您正在嵌套引用。请参阅您的select声明:

‘从 mysql.user 中选择 *,其中 User=‘用户名’;’

如果没有该where子句,它就不会嵌套,可以正常工作。但是如果有该where子句,问题就出在 周围的额外单引号上username

相关内容