我遇到了一个让我发疯的问题,我一直在寻找解决方案,但我对 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/