Dette svar er blevet redigeret flere gange baseret på nye oplysninger fra OP
Er root faktisk tilladt at oprette forbindelse til serveren fra værten, som du opretter forbindelse fra? Hvis fejlstrengen returnerer det kanoniske navn på serveren, er der en meget god chance for, at 'localhost' ikke peger på 127.0.0.1 :
Det burde lyde noget som "Adgang nægtet for brugeren 'root'@localhost'", ikke navnet på serveren.
Prøv:
$con = mysql_connect("127.0.0.1","root","pass");
Rediger (Efter mere information i kommentarerne)
Hvis du opretter forbindelse fra en helt anden vært, skal du fortælle MySQL [email protected]_hostname_or_ip
har tilladelse til at oprette forbindelse og har passende privilegier til at oprette en database og brugere.
Du kan gøre dette ret nemt ved at bruge phpmyadmin (på MySQL-serveren), eller en forespørgsel som:
CREATE USER 'root'@'192.168.1.1' IDENTIFIED BY PASSWORD 'secret';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'192.168.1.1' IDENTIFIED BY PASSWORD 'secret' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
Jeg vil råde til ikke at navngive denne bruger 'root', bare oprette en bruger med alle de nødvendige globale privilegier. I eksemplet brugte jeg 192.168.1.1, der nemt kunne være et værtsnavn, bare sørg for, at DNS er sat korrekt op. Angiv værten, der matcher præcist som det vises i logfiler, når du opretter forbindelse til fjernserveren.
Du kan også justere grænser efter smag. Flere oplysninger om CREATE USER
syntaks kan findes her
, GRANT
her
.
Rediger
Hvis du bruger MySQL 4 - CREATE er ikke en mulighed. Du ville bare bruge GRANT (4.1 Docs On User Management )
Rediger
Hvis du bruger C-Panel, skal du bare brug API'en . Selvom ja, det har sine særheder, er det lettere at vedligeholde ting, der bruger det i stedet for ad hoc-arbejde. Mange succesfulde applikationer bruger det uden problemer. Som enhver anden API skal du være på forkant med ændringer, når du bruger den.