sql >> Database >  >> RDS >> Mysql

Maak een MySQL-gebruiker en database vanuit PHP

Dit antwoord is meerdere keren aangepast op basis van nieuwe informatie van de OP

Is root eigenlijk toegestaan om verbinding te maken met de server vanaf de host waarvandaan u verbinding maakt? Als de foutstring de canonieke naam van de server retourneert, is de kans groot dat 'localhost' niet naar 127.0.0.1 verwijst:

Dat zou iets moeten weergeven als "Toegang geweigerd voor gebruiker 'root'@localhost'", niet de naam van de server.

Probeer:

$con = mysql_connect("127.0.0.1","root","pass");

Bewerken (Na meer informatie in opmerkingen)

Als je verbinding maakt vanaf een totaal andere host, moet je MySQL [email protected]_hostname_or_ip mag verbinding maken en heeft de juiste rechten om een ​​database en gebruikers aan te maken.

U kunt dit vrij eenvoudig doen met phpmyadmin (op de MySQL-server), of een zoekopdracht als:

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 ;

Ik zou adviseren om deze gebruiker niet 'root' te noemen, maar maak gewoon een gebruiker aan met alle benodigde globale privileges. In het voorbeeld gebruikte ik 192.168.1.1, dat kan gemakkelijk een hostnaam zijn, zorg er gewoon voor dat DNS correct is ingesteld. Geef de host op die exact overeenkomt zoals het wordt weergegeven in logboeken wanneer u verbinding maakt met de externe server.

U kunt ook de limieten naar smaak aanpassen. Meer informatie over de CREATE USER syntaxis kan hier te vinden zijn , GRANT hier .

Bewerken

Als het gebruik van MySQL 4 - CREATE geen optie is. Je zou gewoon GRANT gebruiken (4.1 Docs On User Management )

Bewerken

Als je C-Panel gebruikt, gewoon gebruik de API . Hoewel ja, het heeft zijn eigenaardigheden, het is gemakkelijker om dingen te onderhouden die het gebruiken in plaats van ad-hoc work-arounds. Veel succesvolle applicaties gebruiken het zonder problemen. Net als bij elke andere API, moet u op de hoogte blijven van wijzigingen wanneer u deze gebruikt.



  1. SQL-injectie voorkomen

  2. java.lang.IllegalStateException:kon rij 0, col -1 van CursorWindow niet lezen - Android sqlite-probleem

  3. Hoe iif() werkt in SQLite

  4. Hoe te repareren "EXECUTE-instructie is mislukt omdat de WITH RESULT SETS-clausule 1 resultaatset (s) heeft gespecificeerd ..." in SQL Server