0

私は本当に夢中になっている問題に直面しています。解決策を探していましたが、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 行目の ERROR 1064 (42000): SQL 構文にエラーがあります。1 行目の ' TO 'wally'@'localhost''付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください*

ssh接続である必要がありますが、それを機能させる方法がわかりません。コマンドラインでスクリプトを直接使用できないと思われる場合、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'@'\%'; "

これで、localhost ユーザーとデータベースも作成されますが、シンボル % に関与している可能性があると思われる外部ユーザーは作成されません。スケープして複製しようとしましたが、まだ機能していません。

ありがとうございました !

4

4 に答える 4

0

バッククォートが問題です。これらはシェル文字であり、SSH コマンドラインがリモート サーバーに接続する前に評価されます。それぞれをバックスラッシュでエスケープする必要があります。

于 2013-09-24T04:06:36.787 に答える
0

一重引用符をエスケープしようとしましたか??

"CREATE USER \'wally\'@\'localhost.....
于 2013-09-24T03:50:36.397 に答える