Avatar billede lojmann Nybegynder
07. januar 2001 - 17:52 Der er 20 kommentarer og
1 løsning

mySQL med parm :)

Hej,

Jeg er lige ved at lave et ShellScript, hvor jeg gerne ville have at den slev lige skulle fyre nogle mySQL kommandoer af...

Er det muligt at logge ind, på mysql \"prompten\" med noget ala:

./mysql -u root -p ****** | *mine mySQL* kommandoer

???
Avatar billede morph Nybegynder
07. januar 2001 - 18:29 #1
det kan man

mysql -u root -ppass -e \'use database; select * from table\'
Avatar billede lojmann Nybegynder
07. januar 2001 - 18:36 #2
Ok, hvis nu jeg skal logge ind, som root, oprette en db som har samme navn som indholdet af $1 og så derefter give $1 fuld access til $1, hvordan vil du skrive det?

Det skal lige siges at $1 er navnet på en bruger (deffineret tidligere i ShellScriptet) og databasen skal hedde det samme som brugeren...
Avatar billede morph Nybegynder
07. januar 2001 - 19:06 #3
mysql -u root -p**** -e \'create database $1; use mysql; insert into user values (\'localhost\',\'$1\',password(\'pass\')\',\'Y\',\'Y\',\'Y\',\'Y\',\'Y\',\'Y\',\'Y\',\'Y\',\'Y\',\'Y\',\'Y\',\'Y\',\'Y\',\'Y\'); flush priviliges;\'

Uden at være sikker på det vil virke i et shell script.

Men jeg kan ikke lige forestille mig andre muligheder.
Avatar billede lojmann Nybegynder
07. januar 2001 - 19:10 #4
hvilket noget af det er passwordet?

password eller pass?
Avatar billede morph Nybegynder
07. januar 2001 - 19:19 #5
password(\'dette er passwordet\')
Avatar billede lojmann Nybegynder
07. januar 2001 - 19:21 #6
Mente jeg nok!

Hmm... virker ikke i scriptet!

Fejlen er:

./web-host: line 18: syntax error near unexpected token `;\'
./web-host: line 18: `./mysql -u root -p**** -e \'create database $1; use mysql; insert into user values (\'localhost\',\'$1\',password(\'pass\')\',\'Y\',\'Y\',\'Y\',\'Y\',\'Y\',\'Y\',\'Y\',\'Y\',\'Y\',\'Y\',\'Y\',\'Y\',\'Y\',\'Y\'); flush priviliges;\' \'
Avatar billede morph Nybegynder
07. januar 2001 - 19:23 #7
(\'pass\')\',\'Y\',
(\'pass\'),\'Y\',

flush priviliges;\' \'
flush priviliges;\'

Prøv sådan istedet
Avatar billede lojmann Nybegynder
07. januar 2001 - 19:26 #8
Fejl igen:

./web-host: line 18: unexpected EOF while looking for matching `\'\'
./web-host: line 24: syntax error: unexpected end of file

Den laver INGEN entryes i databasen :(
Avatar billede morph Nybegynder
07. januar 2001 - 19:29 #9
opretter den en database ?
Avatar billede lojmann Nybegynder
07. januar 2001 - 19:30 #10
heller ikke...

Linie 18 er mySQL kommandoen og linie 24 er lige efter min \"exit 0\" (dvs. linie 24 er TOM)
Avatar billede morph Nybegynder
07. januar 2001 - 19:32 #11
./mysql -u root -p**** -e \'create database $1;\'

prøv denne for at se om det er helt hen i skoven..... Det kan jo godt være den ikke kan finde ud af den $1 parameter.
Avatar billede lojmann Nybegynder
07. januar 2001 - 19:34 #12
Den laver en DB som så hedder $1 :(
Avatar billede morph Nybegynder
07. januar 2001 - 19:35 #13
så må jeg nok stå af, da jeg ikke kender så meget til shell scripting :/
Avatar billede lojmann Nybegynder
07. januar 2001 - 19:36 #14
Så den overføre ikke variablen til mySQL consolen, men det virker fint med de andre unix kommandoer jeg bruger...
Avatar billede morph Nybegynder
07. januar 2001 - 19:38 #15
hmmmmm.

Mon ikke det skulle være noget med at $1 er i en directe sql streng ........

Prøv at lave `$1´ der er forskel på de to `´
Avatar billede lojmann Nybegynder
07. januar 2001 - 19:39 #16
ERROR 1064 at line 1: You have an error in your SQL syntax near \'`$1´\' at line 1
Avatar billede lojmann Nybegynder
07. januar 2001 - 19:41 #17
Med med to gang \' virkede det :)
Avatar billede morph Nybegynder
07. januar 2001 - 19:41 #18
hvad er det du vil have dit shell script til ?
Avatar billede lojmann Nybegynder
07. januar 2001 - 19:44 #19
Det fixer nogle rettigheder, og så opretter den en mySQL DB som den også sætter rettigheder på...

Det er ikke noget særligt, det er kun for at lære ShellScript :)
Avatar billede lojmann Nybegynder
07. januar 2001 - 19:46 #20
Men linien med fejl i, ser således ud: ./mysql -u root -p -e \'create database \'$1\'; use mysql; grant all on \'$1\'.* to \'$1\'@localhost identified by \'password\';\' 
Avatar billede lojmann Nybegynder
07. januar 2001 - 19:56 #21
Fandt løsningen:

grant all on \'$1\'.* to \'$1\'@localhost identified by \"kode\";\'

Tak for hjælpen :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester