我正在尝试通过 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
。