Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何绕过'--';运算符仅对变量或属性起作用_Mysql_Windows_Powershell_Escaping - Fatal编程技术网

Mysql 如何绕过'--';运算符仅对变量或属性起作用

Mysql 如何绕过'--';运算符仅对变量或属性起作用,mysql,windows,powershell,escaping,Mysql,Windows,Powershell,Escaping,我正在关注mysql站点关于在windows机器上重置mysql服务器密码的消息 逐字复制命令: C:\> "C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe" --defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.0\\my.ini" --init-file=C:\\mysql-init.txt 给我这个错误(缩写): 我环顾四周,发现了以

我正在关注mysql站点关于在windows机器上重置mysql服务器密码的消息

逐字复制命令:

C:\> "C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe"
     --defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.0\\my.ini"
     --init-file=C:\\mysql-init.txt
给我这个错误(缩写):

我环顾四周,发现了以下建议:

试试这个:

$cmd={cmd/c'c:\ProgramFiles\PostgreSQL\8.3\bin\pg_dump.exe “--encoding=UTF8--verbose--create--username=postgres-- file=C:\db\周三.pg db“'}

&$cmd

--是Powershell减量运算符。要使其成为“mundate”,需要将其括在单引号中,以禁止将其作为 操作人员您也可以使用反勾号来转义所有连字符,但是 那会变得很难看的

我试着按照这种格式做。。即

$cmd = {cmd /c 'C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe
     "--defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.0\\my.ini
     --init-file=C:\\mysql-init.txt"'}
&$cmd
但后来我犯了一个错误:

'C:\Program' is not recognised as an internal or external command
我还试着做回勾转义:

C:\> "C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe"
     `-`-defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.0\\my.ini"
     `-`-init-file=C:\\mysql-init.txt
但也有一个错误(缩写):


有什么想法吗?

我想你的命令应该是:

 $cmd = {cmd /c '"C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe"
 --defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.0\\my.ini"
 --init-file="C:\\mysql-init.txt"'}

您缺少双引号

我认为您的命令应该是:

 $cmd = {cmd /c '"C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe"
 --defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.0\\my.ini"
 --init-file="C:\\mysql-init.txt"'}

您缺少双引号

请尝试powershell V3转义序列
-->%

PS>echoargs--%--defaults file=“C:\\Program Files\\MySQL\\MySQL Server 5.0\\my.ini”
arg0是
命令行:
“C:\Windows\EchoArgs.exe”--默认值file=“C:\\Program Files\\MySQL\\MySQL Server 5.0\\my.ini”

尝试powershell V3转义序列
-%

PS>echoargs--%--defaults file=“C:\\Program Files\\MySQL\\MySQL Server 5.0\\my.ini”
arg0是
命令行:
“C:\Windows\EchoArgs.exe”--默认值file=“C:\\Program Files\\MySQL\\MySQL Server 5.0\\my.ini”

对于Powershell来说,停止参数处理的双破折号确实是一个悲哀的选择。 我试图通过Invoke命令使其工作,但下面的示例效果最好

&"C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe" '--defaults-file=""C:\Program Files\MySQL\MySQL Server 5.0\my.ini""' '--init-file="C:\mysql-init.txt"'
双引号之间的可执行文件


单引号之间的每个参数,以及双引号之间的参数值(或双引号使路径中的空格起作用)

对于Powershell来说,停止参数处理的双破折号确实是一个悲哀的选择。 我试图通过Invoke命令使其工作,但下面的示例效果最好

&"C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe" '--defaults-file=""C:\Program Files\MySQL\MySQL Server 5.0\my.ini""' '--init-file="C:\mysql-init.txt"'
双引号之间的可执行文件


单引号之间的每个参数,双引号之间的参数值(或使路径中的空格起作用的双引号)

相同错误:
C:\程序未被识别为内部或外部命令、可操作程序或批处理文件
是否运行了我编辑的答案?这表示您的路径没有正确引用…运行以下命令:“C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld nt.exe”--默认文件=“C:\\Program Files\\MySQL\MySQL Server 5.0\\my.ini”--init file=“C:\\MySQL init.txt”相同错误:
C:\Program未被识别为内部或外部命令,可操作程序或批处理文件
是否运行了我编辑的答案?这表示您的路径没有正确引用…运行以下命令:“C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld nt.exe”--默认值file=“C:\\Program Files\\MySQL\MySQL Server 5.0\\my.ini”--init file=“C:\\MySQL init.txt”发生此错误的原因是我们尝试了一半的表达式用引号括起来,另一半的表达式像普通表达式一样,把这两个词都用单引号引起来实际上对我很有效谢谢这个错误的发生是因为我们尝试了一半的表达式用引号引起来,另一半像一个普通的表达式,把这两个词都用单引号引起来实际上对我很有效谢谢
&"C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe" '--defaults-file=""C:\Program Files\MySQL\MySQL Server 5.0\my.ini""' '--init-file="C:\mysql-init.txt"'