Avatar billede kwudo Nybegynder
24. august 2006 - 17:50 Der er 46 kommentarer og
1 løsning

PhpMyadmin problem, intet login?

Hej alle sammen :-)

jeg har nu fået installeret hele min apache server, med phpmyadmin, mysql og det hele :-)

Men nu er problemet så, at når jeg går ind her:
http://80.62.179.227/phpMyAdmin-2.8.2.4/ så skal jeg ikke logge ind eller noget, har også prøvet og udfylde dataerne i config filen men skal stadig ikke logge ind.
Det gør den selv, og meningen er da jeg skal have flere phpmyadmin brugere med forskellige databaser, skal den ikke bare selv logge ind.

Kan i hjælpe mig?

m.v.h.
Rasmus

p.s. Skriv hvis i skal bruge billeder og lign.
Avatar billede pidgeot Nybegynder
24. august 2006 - 18:20 #1
Åbn din config-fil og find den første linie der starter med $cfg['Servers'][$i]['auth_type']. Denne står til config, hvilket netop gør du automatisk bliver logget ind med foruddefinerede brugeroplysninger.

Ret den til http eller cookie - hvis du bruger den sidste skal du tilføje en ekstra linie der definerer $cfg['blowfish_secret'] til en eller anden streng du selv bestemmer - op til 46 tegn.

Der burde dog også være et tidspunkt i setup-scriptet hvor du kan udfylde dette.
Avatar billede kwudo Nybegynder
24. august 2006 - 18:44 #2
1000 tak, det virker :-)

Men kan det lade sig gøre og oprette flere brugere, med hver deres tabeller?

f.x. bruger: kaj har en tabel der hedder test og en anden der hedder hej
og bent har en der hedder farvel

Kan man lave det?
Avatar billede pidgeot Nybegynder
24. august 2006 - 19:03 #3
Sagtens - jeg kan ikke lige huske hvordan PMA selv håndterer det med brugertilføjelse til bestemte databaser, men det kan gøres med en SQL-sætning:

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE ROUTINE, ALTER ROUTINE ON database.* TO 'brugernavn'@'localhost' IDENTIFIED BY 'kodeord';

(Bemærk at din MySQL muligvis ikke understøtter alle disse, du kan køre SHOW PRIVILEGES for at få vist de den kan og så fjerne de der mangler fra listen for oven.)

Hvis man også skal have ekstern adgang gentager du den samme sætning, men bruger % i stedet for localhost (hvis det er ligegyldigt hvorfra man connecter, ellers må du skrive et mere specifikt hostname). Det er dog normalt ikke nødvendigt, da scripts ofte køres på samme server som databasen, og man sagtens kan bruge PMA alligevel, sålænge det ligger på samme server som databasen.
Avatar billede kwudo Nybegynder
24. august 2006 - 20:34 #4
Hvordan og hvor skal det der kode sættes ind henne?
Avatar billede pidgeot Nybegynder
24. august 2006 - 20:49 #5
Kør den som en ganske almindelig SQL-sætning - der er mig bekendt et link ovre i menuen ved dine tabeller, hvis du ikke kan bruge kommandolinieværktøjet.

Bemærk dog at du skal være logget ind som root-brugeren før du kan give privilegier videre, med mindre du direkte har tilladt det til en anden bruger (se dokumentationen, http://dev.mysql.com/doc/refman/5.0/en/grant.html).
Avatar billede kwudo Nybegynder
24. august 2006 - 21:17 #6
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE ROUTINE, ALTER ROUTINE ON user.* TO 'brugernavn'@'localhost' IDENTIFIED BY 'kodeord';

hvad gør denne sætning og hvad er hvert ord, er det en række i en tabel?
Avatar billede kwudo Nybegynder
24. august 2006 - 21:38 #7
Jeg har lavet min egen lille oprettelses form, den indsender fint de data den skal bruge, md5 krypteret pass og den har samme privilegier, som den jeg normalt logger ind med.

men kan ikke logge ind med den jeg bruger jeg opretter :/
Avatar billede pidgeot Nybegynder
24. august 2006 - 21:42 #8
Hvert ord efter grant giver et bestemt privilegie til brugeren. Det er beskrevet nærmere i dokumentationen hvad hver enkelt er til. Kort fortalt giver den en række privilegier til brugernavn på databasen user - disse privilegier lader ham så bruge databasen normalt.

Hasher du SELV kodeordet? Så skal du jo være opmærksom på at det er den hash den skal have som kodeord, ikke det kodeord du har givet den - den hasher selv med en speciel algoritme, så det skal være plain-tekst.
Avatar billede kwudo Nybegynder
24. august 2006 - 21:49 #9
altså sådan indsættes passwordet i mysql:

$password = md5($_POST[password]);

lad os antage at kodeordet er test.
Bliver test krypteret til: 098f6bcd4621d373

og så logger jeg ind med følgene:

User: test
Kodeord: test

Er det ikke rigtigt?
Avatar billede pidgeot Nybegynder
24. august 2006 - 21:52 #10
Ikke hvis vi snakker om en brugerkonto til MySQL - den bruger nemlig ikke MD5.

Når du indsætter brugeren med GRANT-kommandoen, skal du IKKE hashe kodeordet - dvs. ikke kalde MD5. Det skal blot skrives direkte ind i SQL'en på den pågældende plads (dog må du gerne sende den igennem mysql_real_escape_string, i tilfælde af at kodeordet indeholder noget den ikke må).
Avatar billede kwudo Nybegynder
24. august 2006 - 21:56 #11
aah prøver lige :-)

Men har et problem :/
Når man er inde under login, kan man bare skrive noget i brugernavn og så logger den ind :/

Men hvis begge er tomme kan man ikke, kan du hjælpe med det os :) ?
Avatar billede kwudo Nybegynder
24. august 2006 - 21:59 #12
Har prøvet og indsende passwordet direkte til MySQL:

$password = $_POST[password];

og tildelt privilegier, men den giver stadig ikke adgang :/
Avatar billede pidgeot Nybegynder
24. august 2006 - 22:08 #13
Hashede du kodeordet da du satte det ind? Hvis du gjorde skal du sætte en ny grant (du skulle bare kunne sende den igen med det andet kodeord).

Vis også lige hele login-delen, så jeg kan se præcist hvad du prøver på - kan ikke rigtig se hvad du vil.
Avatar billede kwudo Nybegynder
24. august 2006 - 22:10 #14
http://80.62.179.227/phpMyAdmin-2.8.2.4/

og her er opret filen:

<?
if($_GET[action] == "mysql") {

include("cfg.php");

$password = $_POST[password];
$host = "localhost";
$user = $_POST[user];

mysql_query("INSERT INTO user (Host, User, Password) VALUES ('$host', '$user', '$password')") or die(mysql_error());

echo "Dit pass er nu oprettet!";

}

?>
Avatar billede kwudo Nybegynder
24. august 2006 - 22:13 #15
privilegierne sætter jeg manuelt.
Avatar billede pidgeot Nybegynder
24. august 2006 - 22:14 #16
Er det der user-tabellen i den database der hedder mysql? Hvis det er tilfældet, griber du det forkert an - du SKAL bruge GRANT for at du ikke skal til at lave en masse ting.

Hvis du direkte manipulerer med den tabel skal du kalde SQL-funktionen PASSWORD på kodeordet når det indsættes (dvs. det skal gøres i din query), OG du skal desuden bruges FLUSH PRIVILEGES for at den bruger de nye oplysninger.
Avatar billede kwudo Nybegynder
24. august 2006 - 22:16 #17
ja, det er det.

Hvordan gør jeg det nedenstående du skriver?
Avatar billede pidgeot Nybegynder
24. august 2006 - 22:26 #18
Et godt råd er helt at lade være. Det er langt, langt nemmere at bruge GRANT direkte (hvis du ikke har lov til det, så kør GRANT USAGE ON *.* TO 'dinbruger'@'localhost' WITH GRANT OPTION). Det eneste du der skal gøre er at køre den SQL-sætning jeg gav dig før - hvis du kun vil give mulighed for at connecte, skal du enten bruge GRANT USAGE ON *.* TO 'bruger'@'localhost' IDENTIFIED BY 'kodeord' eller CREATE USER user IDENTIFIED BY 'password'.

Hvis du alligevel vil manipulere med user-tabellen direkte skal du bruge INSERT INTO user (Host, User, Password) VALUES ('$host', '$user', PASSWORD('$password')), og derefter lave en ekstra query der siger FLUSH PRIVILEGES (for at fortælle MySQL at den skal genindlæse privilegiedataene). Desuden skal du så IGEN køre FLUSH PRIVILEGES når du sætter privilegierne senere hen - og derfor er det så meget nemmere bare at bruge GRANT, da du så ikke behøver at køre den ekstra kommando.
Avatar billede kwudo Nybegynder
24. august 2006 - 22:27 #19
Tror jeg prøver din grant igen så ;)
Avatar billede kwudo Nybegynder
24. august 2006 - 22:31 #20
Så virker det :)
Men så er problemet bare, hvordan gør jeg sådan man ikke kan logge ind kun ved at skrive noget i brugernavn?
Avatar billede pidgeot Nybegynder
24. august 2006 - 22:37 #21
Har du tilladt anonym adgang til din MySQL? Hvis du har, er det derfor - kør REVOKE ALL PRIVILEGES FROM ''@'localhost'. Hvis du har MySQL 5.0.2 eller senere, kan du også bare køre DROP USER ''@'localhost'.
Avatar billede kwudo Nybegynder
24. august 2006 - 23:04 #22
Kan vi skrives engang lørdag :-) ?
Er ret træt og skal arbejde hele dagen imorgen :/
Avatar billede kwudo Nybegynder
26. august 2006 - 20:52 #23
Har installeret en 2.5.6 version af phpmyadmin, da jeg ikke kunne få det andet til at virke.
men har næsten fået alt dette på denne version til at virke, men den melder fejl når jeg sætter følgene kode ind:

GRANT SELECT, INSERT, UPDATE, DELETE, FILE, CREATE, ALTER, INDEX, DROP ON user.* TO 'test'@'localhost' IDENTIFIED BY 'test';

følgene fejl kommer:

Fejl

SQL-forespørgsel : 

GRANT SELECT , INSERT , UPDATE , DELETE , FILE , CREATE , ALTER , INDEX , DROP ON user. * TO 'test'@ 'localhost'IDENTIFIED BY '123'

MySQL returnerede:


#1064 - You have an error in your SQL syntax near ''localhost'IDENTIFIED  BY  '123'' at line 1

Hva er problemet der?
har tjekket privilegierne hedder det samme.
Avatar billede pidgeot Nybegynder
26. august 2006 - 23:25 #24
Du har sat et mellemrum efter @, og glemt et efter 'localhost'.

Med andre ord skal det være:

GRANT SELECT , INSERT , UPDATE , DELETE , FILE , CREATE , ALTER , INDEX , DROP ON user. * TO 'test'@'localhost' IDENTIFIED BY '123'
Avatar billede kwudo Nybegynder
27. august 2006 - 00:54 #25
Så er det hele ved at være på plads, men last problem:

Når jeg er logget ind som admin bruger, med fuld privilegie kan jeg ikke udføre:

GRANT SELECT, INSERT, UPDATE, DELETE, FILE, CREATE, ALTER, INDEX, DROP ON user.* TO 'test'@'localhost' IDENTIFIED BY 'test';

Den melder følgene fejl:
Avatar billede kwudo Nybegynder
27. august 2006 - 00:54 #26
.. hov

følgene fejl:

#1133 - Can't find any matching row in the user table
Avatar billede pidgeot Nybegynder
27. august 2006 - 01:04 #27
Fra dokumentationen:
"Error: 1133 SQLSTATE: 42000 (ER_PASSWORD_NO_MATCH)

Message: Can't find any matching row in the user table "

ER_PASSWORD_NO_MATCH tyder på du ikke angiver det rigtige kodeord.

Hvis brugeren allerede er oprettet (med CREATE USER eller ved eks. at grante USAGE), kan du (og bør nok) helt udelade IDENTIFIED BY 'kodeord'.
Avatar billede kwudo Nybegynder
27. august 2006 - 01:27 #28
Hvordan kan det være brugernen kan se hinandens databaser :/ ?
http://80.62.179.227/phpMyAdmin/

Bruger:
grineflippet
Kode:
qwerty

Syntes det er lidt underligt :/
Avatar billede pidgeot Nybegynder
27. august 2006 - 01:34 #29
Jeg kan ikke se siden, da loginformen sender mig til localhost. Åbn lige din config-fil og find linien med $cfg['PmaAbsoluteUri']. Hvis der er en værdi, så prøv at slette den, ellers skal du sætte http://80.62.179.227/phpMyAdmin/ ind i stedet.

Jeg kan dog nok også regne det ud hvis du selv kører SHOW GRANTS mens du er logget ind som den bruger og giver mig outputtet.
Avatar billede kwudo Nybegynder
27. august 2006 - 01:37 #30
Avatar billede pidgeot Nybegynder
27. august 2006 - 01:44 #31
Alle de brugere du har oprettet har fået privilegier på den samme database, user. Derfor er det klart de ser det samme.

Grunden til at grineflippet også ser mysql-tabellen er fordi han har fulde privilegier på alt (herunder databaser der bliver oprettet senere hen.

Jeg kan i øvrigt se du kører med MySQL 3.23 - overvej om det ikke så småt var en ide at opgradere til 5.0.
Avatar billede pidgeot Nybegynder
27. august 2006 - 01:44 #32
Og det kan jo ske, det med konfigurationen :)
Avatar billede kwudo Nybegynder
27. august 2006 - 01:51 #33
Hvordan ændre jeg privilegierne for brugerne så de ikke har samme privilegier til samme databaser.
Og samme måde, gør grineflippet til bruger af sine egne databaser, og ikke kan se andres?
Avatar billede kwudo Nybegynder
27. august 2006 - 01:51 #34
n.b. er ved at hente mysql 5.0.24 ;)
Avatar billede pidgeot Nybegynder
27. august 2006 - 02:02 #35
Det første er nemt nok, hidtil har du oprettet brugerne ved at køre
GRANT SELECT, INSERT, UPDATE, DELETE, FILE, CREATE, ALTER, INDEX, DROP ON user.* TO 'test'@'localhost' IDENTIFIED BY 'test';

For at give dem en anden database, skriver du blot det databasen skal hedde i stedet for user.

For at fjerne privilegierne fra grineflippet, skal du bruge REVOKE:

REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'grineflippet'@'localhost'

og GRANTer så de nødvendige privilegier bagefter.

MEN - da det lader til du har fjernet root-brugeren (den fremgik ikke da jeg kiggede på listen over brugere), vil det så betyde du ikke har mulighed for at oprette nye brugere. Opret derfor en root-bruger INDEN du kører REVOKE:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'kodeord' WITH GRANT OPTION;

Du må selv om hvorvidt den rent faktisk skal hedde root, men der skal altid være mindst en bruger der har adgang til det hele og kan fungere som administrator.

Apropos MySQL 5.0, så vær lige opmærksom på at MySQL 4.1 og senere som udgangspunkt ikke er kompatibel med PHP 4 - der skal du i stedet bruge PHP 5.
Avatar billede kwudo Nybegynder
27. august 2006 - 02:17 #36
Har oprettet en bruger med den grant du skrev, men brugeren kan stadig se alle databaserne, og det .
Avatar billede pidgeot Nybegynder
27. august 2006 - 02:38 #37
Efter du har oprettet den nye root-bruger kan du revoke grineflippets privilegier når du er logget på som root. Jeg mener ikke man kan revoke fra sig selv (det ville være ret risikabelt om man kunne, da man kan ende med at ingen kan oprette nye brugere).

Bemærk at der altid SKAL være en enkelt bruger der har adgang til alle databaser med fulde privilegier (inkl. GRANT OPTION), og at det er denne der skal oprette nye brugere. Dette er normalt.
Avatar billede kwudo Nybegynder
27. august 2006 - 02:42 #38
Som det er nu er det så ikke grineflippet der har alle privilegierne?
Avatar billede pidgeot Nybegynder
27. august 2006 - 11:46 #39
Jo, men sagde du ikke at det IKKE skulle være det?
Avatar billede kwudo Nybegynder
27. august 2006 - 12:11 #40
Nej :)

meningen er:

At hver bruger skal have deres egen database.
og ikke kunne se andre end deres egen, og grineflippet er administrator brugere.
Brugeren må ik have mere end ÈN database.
Avatar billede pidgeot Nybegynder
27. august 2006 - 12:40 #41
Og sådan er det også nu. Hvis du logger ind som brugeren test, vil du se han kun har en database at tilgå.

Grunden til at den anden ikke-admin bruger, aaaa, ser den samme database er at du skrev samme database i deres GRANT (ON user.*, hvor user er navnet på databasen). Derfor skal du REVOKE den ene brugers privilegier og GRANTe de nye - når det er noget specifikt der skal fjernes er syntaksen den samme som for GRANT, men uden det der med IDENTIFIED BY.
Avatar billede kwudo Nybegynder
27. august 2006 - 15:23 #42
Fatter minus lige nu :p

http://80.62.179.227/phpMyAdmin

Bruger: test
kodeord: test
db: test

Bruger: hej
bruger: hej
db: test1

Hvorfor kan de stadig se begge to?
Avatar billede pidgeot Nybegynder
27. august 2006 - 16:07 #43
Sandsynligvis fordi der er en anoynm bruger der har adgang til det hele:

Grants for @localhost 
GRANT ALL PRIVILEGES ON *.* TO ''@'localhost' WITH GRANT OPTION

Kør en REVOKE ALL PRIVILEGES, GRANT OPTION FROM ''@'localhost', efterfulgt af DROP USER ''@'localhost' - så skulle den være der.
Avatar billede kwudo Nybegynder
27. august 2006 - 16:21 #44
Så er problemet nu, brugeren hej har adgang til db test
men skulle rigtig have til test1

og brugeren test har til både test og test1
Avatar billede pidgeot Nybegynder
27. august 2006 - 16:28 #45
Hm - den fjernede ikke den linie jeg troede den ville.

Inde i db-tabellen i mysql-databasen ligger der en række der giver en unavngivet bruger (dvs. alle) adgang til alle de databaser der starter med test.

Prøv at slette den række manuelt, og kør derefter FLUSH PRIVILEGES (eller genstart MySQL) - det *burde* virke efter det.
Avatar billede kwudo Nybegynder
27. august 2006 - 16:32 #46
Så virker det langt om længe :-)

1000 1000 milioner gange tak skal du have! :-)
Avatar billede pidgeot Nybegynder
27. august 2006 - 16:33 #47
Det var så meget *G*
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