Avatar billede kio_liex Nybegynder
22. januar 2003 - 10:01 Der er 42 kommentarer og
3 løsninger

Lille script der tjekker om....

ER der nogle der kan hjælpe mig med at lave et lille script der connecter til min db, opretter nogle databaser og derefter tjekker om de nu også er oprettet???

Mvh.:

Jesper
Avatar billede kio_liex Nybegynder
22. januar 2003 - 10:03 #1
Glemte lige at sige:

Kan det ikke laves således at der i starten er nogle variabler, der indeholder host navn, db navn, tabel navn, brugernavn og kodeord...?
Avatar billede miraculix Nybegynder
22. januar 2003 - 10:23 #2
Jeg er ikke helt med. Hvad skal scriptet skrives i? SQL, PHP, eller...?

Hvad er formålet?

Hvor langt er du kommet?
Avatar billede kio_liex Nybegynder
22. januar 2003 - 14:57 #3
Det er til at teste min MySQL db...

Og det skal laves i php4...

er det muligt...?
Avatar billede miraculix Nybegynder
22. januar 2003 - 16:19 #4
Joo, mon ikke.. Det er vist ikke noget der ikke kan lade sig gøre..

Tjek example 1 på:

http://www.php.net/manual/en/function.mysql-create-db.php

Bagefter kan du jo connecte til den nyoprettede database med mysql_connect og mysql_select_db

Men jeg forstår stadig ikke hvorfor du ønsker at teste den på denne måde. Har du ikke anden form for adgang? (webadmin, mysql_front, eller lign.?)

Vend endelig tilbage hvis du ikke er helt med på ovenstående.
Avatar billede kio_liex Nybegynder
23. januar 2003 - 11:28 #5
jo jeg har installer webmin på min debian maskine, men når jeg kører det script jeg har lavet sker der ikke rigtigt noget... :-(

Det eneste den tjekker er om den kan connecte til db'en... og det kan den...

men tabellerne bliver ikke oprettet...

plz help...

kan man ikke lave det jeg har beskrevet?
Avatar billede miraculix Nybegynder
23. januar 2003 - 11:43 #6
Jo det kan man godt, du skal tage udgangspunkt i i det link jeg nævnte ovenfor. Det er bare ikke så fedt at lave sine database ændringer fra PHP. Hvis du nu glemmer scriptet et sted, så kan alle med webadgang køre det igen...

Det er imidlertid noget nemmere hvis du kan få en form for adgang hvor du kan lave nogle SQL-scripts der gør det du vil (a' la' create database() osv)

Jeg foretrækker selv mysqlfront (http://www.mysqlfront.de), men det kræver at du har direkte adgang til mysql-server og det lyder det som om du har.

Men hvis du nu poster dit script, har vi jo en chance for at se hvad der er galt. ;-)

Du kan også bare køre mysql klienten fra din shell-prompt:
# mysql
(så spørger den om brugernavn og pwd)

Og hvis du har lavet et SQL-script kan du køre det med:
# mysql -u<brugernavn> -p<password> <databasenavn> < <scriptfil>
Avatar billede miraculix Nybegynder
23. januar 2003 - 11:50 #7
Æv, chekkede lige. De har stoppet udviklingen af mysqlfront. Men mon ikke den er til at hente et sted. Min ver. hedder 2.0 og er fra januar sidste år og fungerer upåklageligt.
Avatar billede kio_liex Nybegynder
23. januar 2003 - 11:53 #8
hvorfor opretter den ikke mine tabeller fra mit script???

det set sådan ud:
<?

$conn = mysql_connect("localhost", "figuren_dk", "*******")
  or die("Could not connect!<br>");
  print ("Connected successfully!<br>");

# mysql_query("create database figuren_dk");

  mysql_select_db("figuren_dk", $conn);

$tabelSQL = "CREATE TABLE artikler (
  id                            integer not null primary key auto_increment,
  oprettet                    datetime not null,
  kategori                    varchar(100) not null,
  under_kat                varchar(100) not null,
  overskrift                varchar(100) not null,
  side_overskrift        varchar(100) not null,
  kort_beskrivelse    text not null,
  indhold                    text not null,
  forfatter                    varchar(100) not null,
  side_nr                    varchar(100) not null,
  antal_sider                varchar(100) not null,
  aktiv                        int(1) not null
)";
mysql_query($tabelSQL);

mysql_close($conn);
?>
####################

jeg tror jeg har lidt problemmer med rettighederne, på db/brugeren...
jeg kan ikke connecte via ip adressen på min firewall, den "forwarder" selvfølgelig port 3306... til serverens interne ip...
Avatar billede miraculix Nybegynder
23. januar 2003 - 12:14 #9
prøv at lave mysql_quey($tabelSQL) om til.

mysql_quey($tabelSQL) or die ( mysql_error() );

Så kan det være du får et hint.
Avatar billede miraculix Nybegynder
23. januar 2003 - 12:22 #10
Dit script virker fint hos mig, så der må næsten være noget med rettighederne...
Avatar billede kio_liex Nybegynder
23. januar 2003 - 12:22 #11
Sådan...
men:
Connected successfully!
No Database Selected

???
Avatar billede miraculix Nybegynder
23. januar 2003 - 12:26 #12
Meget mystisk. Prøv at sætte or die på mysql_select_db
Avatar billede kio_liex Nybegynder
23. januar 2003 - 12:28 #13
Connected successfully!
Access denied for user: '@localhost' to database 'figuren_dk'

hmmm det er måske derfor???

kan du ikke komme med nogle debugging shell kommander?
Avatar billede miraculix Nybegynder
23. januar 2003 - 12:36 #14
Det er det nok..

Hmm, jeg kender ikke rigtig nogen.

Skriver den ikke figuren_dk@localhost ?

Du skal nok oprette en linie i tabellen db i mysql databasen, hvor du giver figuren_dk adgang til databasen figuren_dk fra localhost.

Og husk herefter flush privileges !
Avatar billede miraculix Nybegynder
23. januar 2003 - 12:50 #15
Ved nærmere eftertanke skal dit script jo udvides med de kommandoer der giver de korrekte rettigheder.

Jeg plejer at gøre det ved at indsætte rækker i mysql/user og mysql/db tabellerne og så flushe privilegs, men man kan også gøre det med et grant statement. Jeg ved bare ikke om man kan det med php, men det kan man jo nok...

Men så skal dit script i virkeligheden køres af en admin (root) databasebruger.
Avatar billede kio_liex Nybegynder
23. januar 2003 - 12:59 #16
Det skal den ikke...

Jeg har forskellige brugere på min linux maskine(den der er MySQL på), og der er så en db med brugerens navn... og der skal KUN gives rettigheder til den bruger hvor brugernavn og db navn er det sammen...

har du nogle shell komandoere hvor jeg kan gøre det?, jeg er root på lokalmaskinen... men har ikke så meget styr på shell komandoerene...

hvordan ændre jeg root's password, så det ikke er "ingenting"?
Avatar billede miraculix Nybegynder
23. januar 2003 - 13:45 #17
Linuxbrugerne har ikke noget med det at gøre. mysql-serveren kører som en eller anden bruger og det er det. Det er databasebrugerne der er interessante.

Jeg kan fuldt tilslutte mig din plan om at scriptet opretter en database og en _database_ bruger der kun kan connecte til denne database.

Men hvis scriptet skal køre som denne bruger kan det ikke tildele rettigheder til ting  og sager uden at have mere adgang end godt er (navnlig adgang til at tildele rettigheder)

Derfor skal scriptet køres som root-_database_ brugeren. (aldrig som logget ind som root på linuxboxen)

Roots password ændres med mysqladmin:

#mysqladmin -uroot password xxxxx (tror jeg nok, det er længe side ;-) )
Avatar billede kio_liex Nybegynder
23. januar 2003 - 14:00 #18
uhhh....

det er ikke et php script til at oprette/tildele rettighedder til db, jeg søger... men det ville da være fint, også gør det ikke noget at det skal være root...

kan du lave sådan et, ville det være SUPER, og så kan du da godt få nogle flere point....
Avatar billede miraculix Nybegynder
23. januar 2003 - 15:06 #19
Jo, jeg kan da nok finde på noget. Jeg tror noget af vores forvirring opstod af at du fik skrevet noget med at oprette databaser i det oprindelige spørgsmål ;-)

Men faktisk kan du tildele rettigheder ved at indsætte linier i de to tabeller jeg nævnte for et par posts siden..

Men jeg skal lige lidt ordne et par ting, så det bliver først senere..
Avatar billede kio_liex Nybegynder
23. januar 2003 - 15:35 #20
Fedt... glæder mig til at se hvordan det bliver...
Avatar billede miraculix Nybegynder
23. januar 2003 - 17:09 #21
Jeg blev lige i tvivl om en ting, fordi du nævner noget med en lokal maskine og så den der er mysql på.

Kan du logge ind (har du shell-adgang) på den maskine der kører mysql? (Det må du jo næsten have hvis du kan køre mysqladmin, men lige for at være sikker)..

Så vil jeg nemlig lave det som SQL script. Så er der ikke noget med noget php der kan connecte til databasen som root bruger.
Avatar billede kio_liex Nybegynder
23. januar 2003 - 18:43 #22
ja jeg har shell-adgang...

kan du ikke prøve at lave det i php...?

hvordan virker det hvis det nu skulle være de der SQL script's???
Avatar billede miraculix Nybegynder
23. januar 2003 - 20:13 #23
Så logger du ind og kører:

# mysql -u<brugernavn> -p  < <scriptfil>

I en scriptfil lægger man bare en masse mysql consol kommandoer. Det kan dels være SQL statements, men der er også en række andre kommandoer såsom:

use <database>;
show tables;
show fields from <table>;
grant <adgangsstreng som jeg ikke lige kan huske men det er den jeg vil finde frem>;
flush privileges; (genindlæser de rettigheder man har gemt i de tabeller de styrer rettigheder)
optimize table;

Man kan også fyre dem af med mysql_query i php, men det kan være rart at kunne kigge sig omkring vha. mysql-prompten.

Endelig kan du bruge teknikken til at indlæse en tidligere eksporteret database.
Eksport:

#mysqldump -u<brugernavn> -p <databasenavn> > dumfil.sql
< Efter nogle dage er databasen gået ned og skal genindlæses: >
#mysql -u <brugernavn> -p <databasenavn> < dumpfil.sql
Avatar billede miraculix Nybegynder
23. januar 2003 - 20:14 #24
Hov, jeg mente naturligvis > dumpfil.sql og ikke dumfil.sql, den er slet ikke dum at havde, hvis databasen går ned ;-)
Avatar billede kio_liex Nybegynder
23. januar 2003 - 20:24 #25
okay...
hvordan opretter jeg en bruger i mysql?

det jeg skal er at jeg skal have en "nem" måde at kunne oprette brugere og db på, og deri også give dem rettigheder...

prøver lige at lave noget, vil du så kigge på det?
Avatar billede miraculix Nybegynder
23. januar 2003 - 20:43 #26
Gerne.

Hvis du kigger i mysql manualen så kig på CREATE DATABASE og GRANT kommandoerne.
Avatar billede miraculix Nybegynder
23. januar 2003 - 20:43 #27
PS! GRANT opretter en bruger, hvis han/hun ikke er oprettet i forvejen
Avatar billede kio_liex Nybegynder
23. januar 2003 - 21:50 #28
Så har jeg kigget lidt på GRANT...

men jeg er blevet mere forviret...

og nu kan jeg ikke komme ind på MySQL via Webmin, jeg har fået ændret root passworded på en eller anden måde... :-(

men prøv at downloade flg.:

http://www.figuren.dk/123/test.txt

men please help...

jeg er helt lost lige nu...
Avatar billede miraculix Nybegynder
23. januar 2003 - 22:37 #29
Øjeblik! Jeg chekker lige koden...

Imellemtiden kan du checke om du kan connecte fra shell-prompten:

#mysql -uroot

se hvad der sker og post fejlmeddelelsen..
Avatar billede miraculix Nybegynder
23. januar 2003 - 23:18 #30
Jeg har kigget på din kode.

Der er lidt problemer med om du kalder dine variable adgangskode eller password, og dine fejlmeddelelser er ikke helt perfekte.

Men efter at have rettet det med adgangskode -c- password, kan jeg godt oprette en db udfra den formular du laver.

Jeg tror imidlertid ikke BLA BLA er lovlig GRANT syntaks ;-)

Hvad gjorde du for at save grenen over til webmin?
Avatar billede kio_liex Nybegynder
24. januar 2003 - 08:00 #31
"-uroot password"

jeg tror det var det der skete...

Kan du ikke hjælpe mig med at lave GRANT rigtigt...?

Det med sikkerheden, klare jeg med .htaccess så lægger jeg mit super seje top hemmelige bruger/database script, ind bag den mappe, så SKAL der jo logges ind...

ang:
#mysql -uroot

####################################

Viracocha:~# mysql -uroot
ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)

####################################

har heller ikke adgang...

har lige prøvet:

####################################

Viracocha:~# mysql -u-proot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 15 to server version: 3.23.49-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

####################################

????
Avatar billede miraculix Nybegynder
24. januar 2003 - 10:06 #32
Den var sjov..

Hvis jeg prøver samme får jeg:
$ mysql -u -proot
ERROR 1045: Access denied for user: '-proot@localhost' (Using password: NO)

Det kunne tyde på at du logger på som brugeren "-proot"

Prøv at køre:
$mysql -uroot -p

Hvis du tænker på hvor nemt det gik galt ved prompten. Så tænk på hvor galt det kan gå hvis du laver en programmeringsfejl, overser noget i dit PHP script, eller hvis du kommer til at taste et forkert brugernavn ind...

Derfor foretrækker jeg altid at lave sådan noget ved først at chekke det rigtigt kommandosæt i prompten, og så lægge det ind i et script der bruger et sprog der ligger så tæt som muligt på det jeg lige har tjekket ved prompten..

Men tilbage til dit GRANT spørgsmål:

F.eks. en bruger (student1) der skal kunne lave select, insert, update, delete, create og drop på sin egen database, men kun skal have adgang fra localhost (altså enten fra shell eller via en webserver på den maskine der kører mysql):

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
          ON student1.*
          TO student1@localhost
          IDENTIFIED BY 'et_hemmeligt_password';
Avatar billede miraculix Nybegynder
24. januar 2003 - 10:23 #33
Kan du udføre følgende kommandoer når du er logget ind som "-proot" ?:

use mysql;
select host, user, password from user;

Hvis du kan skal du naturligvis IKKE poste resultatet!!

Men du vil kunne se hvilke brugere der er oprettet og om de har et password. (selve passwordet er krypteret)


PS! Jeg prøvede lige den du nævner ovenfor (#mysqladmin -uroot password) (i et testmiljø naturligvis) men får at vide at jeg har for få parametre. Er du sikker på du ikke fik angivet et password? Kunne du have kommet til at trykke på en andent tast samtidig med enter? F.eks. * eller ´ ?
Avatar billede kio_liex Nybegynder
24. januar 2003 - 16:33 #34
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
          ON student1.*
          TO student1@localhost
          IDENTIFIED BY 'et_hemmeligt_password';

Skal det skrives ud i en lang streng, hvis det er fra en shell?

hvordan skal det skrives hvis det man skal kunne connecte fra alle steder? Skal port 3306 være åben i min firewall?

Da jeg skrev: #mysqladmin -uroot password
mener jeg også at jeg fik at vide at jeg har for få parametre... (så vidt jeg husker)
Avatar billede miraculix Nybegynder
24. januar 2003 - 16:48 #35
Statementet, som jeg har skrevet det, skrives ved mysql-prompten, eller som en string i en mysql_query() som i dit script...

Så hvis du kan logge ind på mysql (faktisk er det mysql-klienten du starter), som du gjorde ovenfor, (#mysql -uroot -p)så kan du skrive  i flere linier. Mysql-klienten sender først forespørgslen, når den støder på et semikolon..

Det var det jeg mente da jeg spurgte om hvad du kunne få adgang til når du var logget ind som "-proot":

Viracocha:~# mysql -u-proot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 15 to server version: 3.23.49-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>
^^^^^^^  mysql-prompten

Prøv at skrive nogle af de kommandoer jeg sendte i posten 24/01-2003 10:23:48:
use mysql;
select host, user, password from user;

Og sig hvad der sker, (uden at poste listen af krypterede passwords, hvis det lykkes)...
Avatar billede kio_liex Nybegynder
25. januar 2003 - 15:54 #36
okay, sådan her?

Viracocha:~# mysql -u-proot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 24 to server version: 3.23.49-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use mysql;
ERROR 1044: Access denied for user: '@localhost' to database 'mysql'
mysql> select host, user, password from user;
ERROR 1046: No Database Selected
mysql>


???
Avatar billede kio_liex Nybegynder
25. januar 2003 - 15:56 #37
ang mit svar 24/01-2003 16:33:38 "hvordan skal det skrives hvis det man skal kunne connecte fra alle steder? Skal port 3306 være åben i min firewall?"


???
Avatar billede kio_liex Nybegynder
25. januar 2003 - 16:02 #38
gider du lige tjekke http://www.figuren.dk/123/test.txt igen...

jeg opretter "dette" spørgsmål igen med nogle flere point...
Avatar billede disky Nybegynder
25. januar 2003 - 17:44 #39
Dette er en MYSQL gruppe du beder om et script, altså er du landet forkert.

Luk begge spørgsmål, specielt #2 da det strider imod reglerne.

Og opret i f.eks. php gruppen.
Avatar billede mortenfn Nybegynder
26. januar 2003 - 00:56 #40
dette er ikke et script men en lille vejledning i brug af MySQL
http://www.thorsnet.dk/index.php?m=MySQL&side=MySQL
Avatar billede disky Nybegynder
26. januar 2003 - 09:37 #41
han beder specifikt om et script !
Og svarene er php kode, altså den forkerte gruppe.

Havde det været rent SQL kode der var givet som svar, og havde han bedt om det havde det været korrekt.


KIO_LEX:
Luk begge spørgsmål !
Avatar billede kio_liex Nybegynder
26. januar 2003 - 11:01 #42
I må MEGET undskylde...

har ikke tænkt over at det måske var den forkerte kategori, jeg har jo bare MySQL problemmer... :-(

Skal nok oprette dem det rigtige sted...

Det med at afsætte flere point, der havde jeg ikke set at der er sådan en lille funktion...
Avatar billede kio_liex Nybegynder
26. januar 2003 - 11:07 #43
miraculix, hvis du så bare lige kommer over i dette spørgsmål:

http://www.eksperten.dk/spm/309676

Så vil du få dine point...
Avatar billede Slettet bruger
26. januar 2003 - 11:10 #44
disky> Som altid skal du brokke dig istedet for at hjælpe. Men sådan en gammel bitter særling er du åbenbart?
Avatar billede miraculix Nybegynder
26. januar 2003 - 12:01 #45
Jeg kan heller ikke se hvad der er galt.

Spørgsmålet handler primært om brug af MySql. Om man skriver sciptet som mysql script (som jeg anbefaler kio_lex at gøre), eller som php script er mindre interessant, det er PRIMÆRT mysql viden og ikke PHP viden der er brug for. (De fleste der kender det ene kender heldigvis også det andet).

Men hvis det er så vigtigt for dig disky, så fortsætter vi i PHP gruppen og håber der ikke er nogen derovre der bliver stødt over det høje indhold af mysql i spørgsmålet.
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