Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.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
Php SSH上的Sql查询不起作用_Php_Mysql_Sql_Ssh - Fatal编程技术网

Php SSH上的Sql查询不起作用

Php SSH上的Sql查询不起作用,php,mysql,sql,ssh,Php,Mysql,Sql,Ssh,我正面临一个让我发疯的问题,我一直在寻找解决方案,但我对php的有限知识还不足以解决这个问题,所以我们开始吧,希望你能帮助我 我正在通过PHP生成一个查询,如下所示: CREATE USER 'wally'@'localhost' IDENTIFIED BY 'wally123'; GRANT USAGE ON * . * TO 'wally'@'localhost' IDENTIFIED BY 'wally123' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNEC

我正面临一个让我发疯的问题,我一直在寻找解决方案,但我对php的有限知识还不足以解决这个问题,所以我们开始吧,希望你能帮助我

我正在通过PHP生成一个查询,如下所示:

CREATE USER 'wally'@'localhost' IDENTIFIED BY 'wally123'; 
GRANT USAGE ON * . * TO 'wally'@'localhost' IDENTIFIED BY 'wally123' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ; 
GRANT ALL PRIVILEGES ON `wally\_%` . * TO 'wally'@'localhost'; 
CREATE USER 'wally'@'%' IDENTIFIED BY 'wally123'; GRANT USAGE ON * . * TO 'wally'@'%' IDENTIFIED BY 'wally123' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ; 
GRANT ALL PRIVILEGES ON `wally\_%` . * TO 'wally'@'%'; 
CREATE DATABASE wally_foro; 
CREATE DATABASE wally_foro2;
当我在我的phpmyadmin上运行它时,它工作得完美无缺,但当我将此查询输入ssh命令并发送它时:

mysql -uMYUSERHERE -pMYPASSWORDHERE  -e "CREATE USER 'wally'@'localhost' IDENTIFIED BY 'wally123'; GRANT USAGE ON * . * TO 'wally'@'localhost' IDENTIFIED BY 'wally123' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ; GRANT ALL PRIVILEGES ON `wally\_%` . * TO 'wally'@'localhost'; CREATE USER 'wally'@'%' IDENTIFIED BY 'wally123'; GRANT USAGE ON * . * TO 'wally'@'%' IDENTIFIED BY 'wally123' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ; GRANT ALL PRIVILEGES ON `wally\_%` . * TO 'wally'@'%'; CREATE DATABASE wally_foro; CREATE DATABASE wally_foro2;"
它只是给了我一个错误:

第1行出现错误1064(42000):SQL语法中有错误;检查与MySQL服务器版本对应的手册,以了解第1行“to'wally'@'localhost''附近使用的正确语法*

我需要它是一个ssh连接,但我不知道如何使它工作。如果假定我不能直接使用命令行上的脚本,为什么它会通过line命令而不是phpmyadmin退出错误。我错了吗

谢谢,非常感谢您的支持


感谢您的支持。到目前为止,我得到了以下信息:

mysql -uMYUSER -pMYPASS  -e "CREATE DATABASE wally_foro; CREATE DATABASE wally_foro2; CREATE USER 'wally'@'localhost' IDENTIFIED BY 'wally123'; GRANT USAGE ON * . * TO 'wally'@'localhost' IDENTIFIED BY 'wally123' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ; GRANT ALL PRIVILEGES ON ``wally\\\_\%`` . * TO 'wally'@'localhost'; CREATE USER 'wally'@'\%' IDENTIFIED BY 'wally123'; GRANT USAGE ON * . * TO 'wally'@'\%' IDENTIFIED BY 'wally123' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ; GRANT ALL PRIVILEGES ON ``wally\\\_\%`` . * TO 'wally'@'\%'; "
现在它确实创建了本地主机用户和数据库,但没有创建外部用户,我认为这可能与symbol%有关。我尝试对它进行替换,并复制它,但仍然不起作用


谢谢大家!

您是否尝试过转义单引号

"CREATE USER \'wally\'@\'localhost.....

反勾号就是问题所在:它们是一个shell字符,在SSH命令行连接到远程服务器之前被评估。您应该用反斜杠转义每个SQL。

当我需要在命令行上运行1-2个以上的SQL时,我通常将其全部放在文本文件中,然后运行:

mysql -uMYUSER -pMYPASS < /path/to/my/file
mysql-uMYUSER-pMYPASS

当存在特定字符(外国字母UTF-8编码)时,它也很有用。

用单引号替换整个字符串周围的双引号,然后在每个内部单引号前加反斜杠,或者使用
在所有引用的参数周围加上双引号,
在希望MySQL执行的整个字符串周围加上单引号

双引号是比单引号“弱”的引号字符,当某些字符包含在双引号中时,shell仍将尝试解释它们。。。但不是单引号


有关此处发生的情况的详细信息,请参阅。

是否尝试分别输入每个命令?是的,相同的错误。非常感谢。非常感谢。我觉得很接近你和苏卡的解决方案。已经这样做了(以及单引号),但现在我确实收到了以下错误:-bash:命令替换:第1行:在查找匹配的“`'-bash:命令替换:第2行:语法错误:第1行的意外文件结尾错误:未知命令“\''。谢谢,它确实提供了帮助!,但我仍然没有找到最终的解决方案。我已经找了好几天的命令了。。。因为我的第一个想法是用printf创建一个记录变量的文件,以便生成脚本,并能够将其直接上传到mysql服务器,但我没有在一行中上传文件。。。这只发生在像我这样的初学者身上。我真的非常感谢你!解决:)它也起作用了!现在我必须想办法做我想做的事!非常感谢!