Fórum Root.cz
Hlavní témata => Server => Téma založeno: vana-hb 25. 10. 2014, 20:36:43
-
Zdravím a mám dotaz který se bude asi někomu zdát jednoduchý, ale já to nějak nemůžu dogooglit. Zajímalo by mě jaké je pravidlo pro psaní apostrofů v MySQL příkazech viz níže. Tak jak to je skript funguje? U dat$user (což utvoří datt databázi) nejsou a naproti tomu u u '$password' být musí. Dále $user@'%' funguje stejně jako '$user'@'%' a $user@% nefunguje.
Existuje nějaké pravidlo nebo zvyklost jak by to mělo správně vypadat???? Moc dík protože fakt nevidim.
#!/bin/bash
user="t"
password="xxx"
mysql -uroot -pheslo -e"CREATE DATABASE IF NOT EXISTS dat$user;CREATE USER $user@'%' IDENTIFIED BY '$password';"
mysql -uroot -pheslo -e"GRANT ALL PRIVILEGES ON dat$user.* TO $user@'%';"
-
Tyhle problémy vznikají vždy, když se kombinují dva skriptovací jazyky a oba používají uvozovky a apostrofy. V daném případě Bash a MySQL.
String v MySQL musí být v apostrofech. Proto je kolem proměnné $password. To celé se však nachází v uvozovkách, proměnnou $password expanduje už Bash. Proto se do výsledného SQL dotazu vpašuje ...IDENTIFIED BY 'heslo';
Kdybys tam nedal ty apostrofy, MySQL by slovo "heslo" považovalo za název proměnné.