php - 通过 SSH 进行的 SQL 查询不起作用

标签 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_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'@'\%'; "

现在它确实创建了本地主机用户和数据库,但没有创建外部用户,我认为这可能与符号 % 相关,我尝试对其进行转义并复制它,但仍然无法正常工作。

谢谢!

最佳答案

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

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

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

关于php - 通过 SSH 进行的 SQL 查询不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18972393/

相关文章:

php - 区分数学用户输入和其他所有输入

java - 当存在@Embeddable ID时如何正确插入@Entity

php - mysql 查询问题 where (IN) - ' and "

sql - T-SQL - 跟踪随时间发生的事件

javascript - "infinite"滚动时 AJAX 数据加载不正确

php - 如何避免 rtl 语言中 url 地址的更改

php - mysql 查询避免重复结果

mysql - 如何按所选顺序选择具有最小开始日期和最大结束日期的所有工作人员?

mysql - 为MySQL手动创建@OneToMany脚本

c# - Entity Framework - 大写第一个属性名称字母