J'ai créé un script shell comme celui-ci, mais j'obtiens une erreur de syntaxe dans la commande grant. Est-ce que quelqu'un peut m'aider, s'il vous plaît?Caractère d'échappement avec double qoutes dans l'échappement charcter avec double qoutes dans le script shell
ssh -t [email protected] '
su root -c "
echo \"Give db name :\";
read db_name;
echo \"Give password :\";
read db_pass;
host=localhost;
sql1=\"create database \$db_name;\";
sql2=\"grant all on \${db_name}.* to \${db_name}@\${host} identified by \"\${db_pass}\";\";
sql3=\"\${sql1}\${sql2}\";
echo \"==============\";
mysql -u root -p -e \"\${sql3}\";
";
'
Vous donnez 'GRANTS' sur les objets DB à un' utilisateur' spécifique, et non à un nom de base de données! Modifiez votre instruction comme ceci 'sql2 = \" accordez tout sur \ $ {nom_bdd}. * À \ $ {nom_utilisateur} @ \ $ {hôte} identifié par \ "\ $ {db_pass} \"; \ ";' – Incognito
MYSql créera automatiquement un utilisateur mysql avec le nom d'utilisateur tout ce qu'on nous donnera. Ici nom_bd est une variable qui contient une valeur de chaîne et mysql créera un utilisateur mysql avec un nom d'utilisateur identique à nom_bd. – user103134
Ici, je pense que le problème est avec le caractère \ "avant et après \ $ db_pass dans la commande grant – user103134