Hoe MySQL-gebruikerstabel te openen Accounts toevoegen via phpMyAdmin. Over de opdrachtregel en beveiliging

Als u geïnteresseerd bent in webontwikkeling of software ontwikkeling Over het algemeen heb je waarschijnlijk wel eens gehoord van databases. Databases zijn dat virtuele opslagplaatsen voor de gegevens die nodig zijn om webapplicaties te maken. Ze worden gebruikt om gebruikersinformatie op te slaan, zoals gebruikersnaam, wachtwoord, e-mailadres en andere. Over het algemeen kan elk type informatie dat u in de toekomst nodig heeft, in de database worden opgeslagen.

Uiteraard moeten de gegevens die u opslaat geordend zijn. Dit is waar databasebeheersystemen een rol gaan spelen. Deze systemen worden gebruikt om met een database te werken en stellen ontwikkelaars in staat gegevens te structureren, op te slaan, op te vragen en aan te passen.

MySQL is zo'n databasebeheersysteem. Dit is een van de meest bekende systemen, dankzij het gebruiksgemak en de ondersteuning van de gemeenschap. Trouwens, de prevalentie ervan heeft zelfs zulke mensen aangetrokken grote bedrijven zoals Facebook en Twitter, die er tot op zekere hoogte gebruik van maken.

In deze gids zullen we het beoordelen MySQL-basisprincipes en leer hoe u een MySQL-gebruiker maakt. We zullen ook leren hoe u toegangsrechten kunt verlenen aan MySQL-gebruikers. In deze zelfstudie doen we dit allemaal vanaf de opdrachtregel.

Voordat u begint, heeft u het volgende nodig:

  • Geïnstalleerd op uw MySQL-computer. Gebruikershandleiding voor installatie op .

Stap 1 – Maak een MySQL-gebruiker aan en verleen onbeperkte toegangsrechten

Zodra u MySQL gaat gebruiken, krijgt u een gebruikersnaam en wachtwoord. Deze initiële inloggegevens geven u 'root access'-rechten. Gebruiker met rechten root-toegang hebben volledige toegang naar alle databases en tabellen binnen deze databases.

Maar vaak moet u iemand anders zonder toestemming toegang tot een database verlenen volledige controle. Bedrijven die bijvoorbeeld ontwikkelaars inhuren om databases te onderhouden, maar hen niet de mogelijkheid willen geven deze te verwijderen of te wijzigen vertrouwelijke informatie, zal hen hoogstwaarschijnlijk toegangsrechten voor niet-rootgebruikers verlenen. In dit geval kan het bedrijf bepalen wat zijn ontwikkelaars wel en niet met de gegevens kunnen doen.

Het aanmaken van een MySQL-gebruiker is heel eenvoudig. We laten u zien hoe u een MySQL-gebruiker kunt aanmaken en hoe u hieraan databasetoegangsrechten kunt toewijzen. Als de gebruiker geen root is, is het niet praktisch om hem alle rechten te geven en dit is een goede reden om te onderzoeken hoe je toegangsrechten aan gebruikers kunt toewijzen. Om een ​​nieuwe gebruiker aan te maken, volgt u deze stappen:

  1. Start de opdrachtregel en van daaruit de MySQL-server: mysql
  2. Voer de volgende opdracht uit: CREATE USER "non-root"@"localhost" GEIDENTIFICEERD DOOR "123";

    In dit commando is 'non-root' de naam die we aan onze nieuwe gebruiker toekennen. En '123' is zijn wachtwoord. U kunt vervangen door uw waarden tussen de aanhalingstekens.

  3. Het simpelweg aanmaken van een nieuwe gebruiker is niet voldoende. U moet er toegangsrechten aan toewijzen. Om een ​​nieuw aangemaakte gebruiker onbeperkte toegangsrechten tot de database te verlenen, voert u de volgende opdracht uit: GRANT ALL PRIVILEGES ON * . * NAAR "niet-root"@"localhost";
  4. Om de wijzigingen door te voeren, voert u de updateopdracht uit: FLUSH PRIVILEGES;

Dit is alles! Uw nieuwe gebruiker heeft dezelfde databaserechten als root-gebruiker.

Stap 2 – Wijs speciale machtigingen toe aan de MySQL-gebruiker

Zoals hierboven aangegeven is het niet erg verstandig om een ​​niveau aan te geven root-toegang niet-rootgebruiker. Vaker wel dan niet, zult u moeten voorzien verschillende niveaus toegang voor verschillende gebruikers. MySQL maakt dit gemakkelijk en snel door de volgende opdracht uit te voeren:

GRANT [toestemmingstype] AAN [databasenaam].[tabelnaam] AAN ‘non-root’@"localhost’;

U hoeft alleen maar de waarde 'permission type' te vervangen door het type toegangsrechten dat u aan de nieuwe gebruiker wilt verlenen. U moet ook de database- en tabelnamen opgeven waartoe toegang moet worden verkregen. Net als in het vorige voorbeeld is 'non-root' de gebruikersnaam, dat wil zeggen dat u deze kunt vervangen door de gebruikersnaam die u nodig heeft. MySQL heeft verschillende soorten machtigingen, waarvan sommige hieronder worden beschreven:

  • CREËREN– Hiermee kunnen gebruikers databases/tabellen maken
  • SELECTEER– Hiermee kunnen gebruikers gegevens samplen
  • INVOEGEN– Hiermee kunnen gebruikers nieuwe records aan tabellen toevoegen
  • UPDATE– Geeft gebruikers de mogelijkheid om te veranderen bestaande records in tabellen
  • VERWIJDEREN– Hiermee kunnen gebruikers records uit tabellen verwijderen
  • DRUPPEL– Hiermee kunnen gebruikers records in databases/tabellen verwijderen

Om een ​​van deze opties te gebruiken, hoeft u alleen maar te vervangen [toestemmingstype] noodzakelijk woord. Als u meerdere typen machtigingen wilt toewijzen, scheidt u deze met komma's, zoals in de volgende opdracht. We kunnen bijvoorbeeld privileges toewijzen zoals CREËREN En SELECTEER voor onze niet-root MySQL-gebruiker met deze opdracht:

SUBSIDIE MAKEN, SELECTEER OP *. * NAAR "niet-root"@"localhost";

Uiteraard kan het voorkomen dat u een situatie tegenkomt waarin u eerder verleende toegangsrechten van een gebruiker moet intrekken. U kunt dit doen door de volgende opdracht uit te voeren:

REVOKE [toestemmingstype] AAN [databasenaam].[tabelnaam] FROM 'non-root'@'localhost';

Om bijvoorbeeld alle rechten van een niet-rootgebruiker in te trekken, moet u het volgende doen:

TREK ALLE PRIVILEGES IN OP *.* VAN "non-root"@"localhost";

Ten slotte kunt u een bestaande gebruiker verwijderen met behulp van de opdracht:

DROP GEBRUIKER 'niet-root'@'localhost';

Houd er rekening mee dat u root-toegang nodig hebt om deze opdrachten uit te voeren. Volg het zeker ook SPOEL PRIVILEGES na elke wijziging van de toegangsrechten.

Conclusie

In deze zelfstudie hebben we enkele basisprincipes geleerd over MySQL-machtigingen en hoe u een MySQL-gebruiker kunt maken. In het bijzonder:

  • Maak een nieuwe gebruiker aan en wijs alle toegangsrechten aan hem toe
  • Het toekennen van speciale toegangsrechten aan gebruikers, het intrekken en verwijderen van gebruikers

Het toekennen van rechten lijkt misschien moeilijk bij het ontwikkelen van een nieuwe webapplicatie, maar het is een zeer belangrijke stap voor het beheren en onderhouden van een database. Bijna alles moderne toepassingen zijn gebouwd op databases, dus het is erg belangrijk dat de ontwikkelaar weet hoe hij toegangsrechten tot databases in MySQL moet toewijzen/verwijderen.

Bij het verbinden met een MySQL-server geeft de gebruiker een gebruikersnaam en wachtwoord op, en de server controleert of de client geautoriseerd is om toegang te krijgen tot de server en, indien succesvol, de juiste rechten aan de gebruiker te verlenen. Gebruikersprivilegegegevens worden opgeslagen in systeem basis mysql.

Gebruikersverificatie wordt uitgevoerd met behulp van drie velden van de gebruikerstabel (host, gebruiker en wachtwoord) mysql-databases. De server brengt alleen een verbinding tot stand als hij in de gebruikerstabel een vermelding vindt waarin de gebruikersnaam en het wachtwoord overeenkomen met de ingevoerde waarden.

Met de volgende opdrachten kunt u zien hoe wachtwoorden in de gebruikerstabel worden opgeslagen:

mysql>GEBRUIK mysql

mysql>SELECTEER wachtwoord VAN gebruiker;

U kunt alle tabellen in de mysql-database bekijken door de opdracht uit te voeren

mysql>tabellen weergeven;

Zodra de verbinding tot stand is gebracht, begint de server een sessie met de gebruiker. Bij elk binnenkomend verzoek controleert de server of de gebruiker voldoende rechten heeft om het verzoek te voltooien. Informatie over bevoegdheden bevindt zich in de tabellen: gebruiker, db, host, tabellen_priv of kolommen_priv.

De lijst met privileges wordt hieronder weergegeven:

De MySQL-server leest de inhoud van deze tabellen tijdens het opstarten en telkens wanneer wijzigingen in privileges van kracht worden.

Met de bevoegdheden SELECT, INSERT, UPDATE en DELETE kunt u bewerkingen uitvoeren op rijen in databasetabellen. Het indexprivilege maakt het maken of vernietigen van indexen mogelijk. Met het alter-recht kunt u de opdracht gebruiken tafel veranderen. Met de privileges voor aanmaken en verwijderen kunt u nieuwe aanmaken of vernietigen. bestaande bases gegevens en tabellen. VERLEEN voorrecht gram Hiermee kunt u andere gebruikers de rechten verlenen die u heeft.

De overige rechten worden gebruikt voor SQL-beheer-servers... opdracht afsluiten sluit de server af.

Bij het opstarten MySQL-server alle informatie over gebruikersrechten wordt in het geheugen geladen en vanaf dat moment worden de rechten van kracht.

De opdrachten Grant en Revoke staan ​​dit toe systeembeheerders creëer MySQL-gebruikers en verleen of weiger rechten aan gebruikers op vier niveaus.

· Mondiaal niveau.

Globale privileges zijn van toepassing op alle databases op opgegeven server. Deze bevoegdheden worden opgeslagen in de tabel mysql.user.

· Databaseniveau.

Databaserechten zijn van toepassing op alle tabellen gespecificeerde basis gegevens. Deze bevoegdheden worden opgeslagen in de tabellen mysql.db en mysql.host.

· Tafelniveau.

Tabelrechten zijn van toepassing op alle kolommen van de opgegeven tabel.

Deze rechten worden opgeslagen in een mysql-tabel. tabellen_priv.

· Kolomniveau.

Kolomrechten zijn van toepassing op individuele kolommen in de opgegeven tabel. Deze bevoegdheden worden opgeslagen in de mysql-tabel .columns_priv.

Met de opdracht Grant kunt u nieuwe servergebruikers toevoegen:

mysql> GRANT SELECT, INSERT ON taxi.* NAAR Mike@localhost

GEÏDENTIFICEERD DOOR "geheim";

Deze opdracht geeft invoeg- en selectierechten voor de taxidatabase (voor alle tabellen - dit wordt aangegeven met een asterisk) aan de gebruiker Mike, die lokaal verbinding maakt (localhost), en bij verbinding met de server moet de gebruiker het wachtwoord "geheim" opgeven ". Het wachtwoord wordt gecodeerd op de server opgeslagen.

mysql> VERLEEN ALLE PRIVILEGES OP *.* AAN Ann@"%"

-> GEIDENTIFICEERD DOOR "some_pass" MET SUBSIDIEOPTIE;

Hier krijgt Anna alle rechten (alle privileges) op alle tabellen van alle serverdatabases (* . *), en kan ze zowel lokaal als op afstand verbinding maken via het netwerk (dit wordt aangegeven door het %-symbool achter Anna@). Bovendien kan Anna haar rechten overdragen aan andere gebruikers (met toekenningsoptie), d.w.z. zij kan zelf het toekenningscommando geven en nieuwe gebruikers van het systeem aanmaken.

mysql> VERLEEN GEBRUIK OP *.* AAN dummy@localhost

GEÏDENTIFICEERD DOOR `wachtwoord';

De dummygebruiker die in dit voorbeeld is gemaakt, kan verbinding maken met de server, maar alleen met lokale computer. Het USAGE-privilege betekent dat de gebruiker niet alle andere privileges heeft. Dit kan nodig zijn wanneer iemand wordt aangenomen, maar zijn verantwoordelijkheden zijn nog niet gedefinieerd. Er wordt verwacht dat databasegerelateerde privileges later zullen worden toegewezen. Het is niet mogelijk om een ​​gebruiker aan te maken met een leeg wachtwoord. Het systeem staat dit om veiligheidsredenen niet toe.

Met het REVOKE-commando kan een beheerder gebruikersrechten intrekken:

REVOKE SELECT (use_on) OP taxi.timetable VAN Mike @ localhost;

Gebruiker Mike kan de waarden van het use_on-veld in het rooster niet bekijken.

Met het set-commando kunnen verschillende opties worden ingesteld die de werking van de server of client beïnvloeden. Het wachtwoord voor de rootgebruiker kan ook met dit commando worden ingesteld:

mysql> WACHTWOORD INSTELLEN VOOR root@localhost=WACHTWOORD("nieuw_wachtwoord" );

Gebruikers kunnen ook rechtstreeks werken met privilegetoewijzingstabellen:

mysql> GEBRUIK mysql;

Mysql> UPDATE gebruiker SET Wachtwoord=WACHTWOORD("nieuw_wachtwoord")

-> WAAR gebruiker = "root";

Hierna moet u een commando geven dat de server dwingt de privilegetabellen opnieuw te lezen - dan zullen ze van kracht worden:

mysql> FLUSH-RECHTEN;

Als het wachtwoord is opgegeven met behulp van de toekenningsverklaring. . .geïdentificeerd door, het is niet nodig om de functie wachtwoord() te gebruiken. Deze opdracht voert zijn eigen versleuteling van het wachtwoord uit, dus het wachtwoord moet in een eenvoudige vorm worden opgegeven tekstvorm bijvoorbeeld op deze manier:

mysql> VERLEEN GEBRUIK OP *.* AAN jeffrey@"%" GEÏDENTIFICEERD DOOR "biscuit";

Wijzigingen die in de privilegetoewijzingstabellen zijn aangebracht met behulp van de opdrachten Grant, Revoke of Set Password, worden door de server in aanmerking genomen zodra deze instructies worden uitgevoerd.

Kenmerkend MySQL-functie - eigen veiligheid, afhankelijk van externe bescherming. Zo modern, volledig functioneel en efficiënt systeem databasebeheer heeft MySQL zijn eigen tools voor het beheren van gebruikers en hun toegang tot de bronnen die het beheert.

Als je het niet weet juiste naam en gebruikerswachtwoord, databasetoegang via MySQL heel moeilijk te krijgen.

IN normale modus Dit is voldoende voor het hosten van werk. Onvoorziene situaties, aanvallen van hackers en andere problemen zijn een kwestie van buitenaf systeembeheer en veiligheidsdiensten. Dit concept is traditioneel geworden en wordt praktisch niet besproken.

MySQL-serverinstallatie en rootgebruiker

Ongeacht in welke besturingsomgeving het databasebeheersysteem is geïnstalleerd, er is altijd minstens één gebruiker: root. Installeer MySQL, maak een gebruiker aan met alles wortelrechten- zonder dit is het onmogelijk om met de server te werken. Deze gebruiker heeft voldoende rechten om:

  • nieuwe gebruikers aanmaken en beheren;
  • databases maken en beheren.

Het is in principe mogelijk om "wachtwoordloze" gebruikers in MySQL te hebben, maar dit is onaanvaardbaar.

Algemene praktijk:

  • server geïnstalleerd eigen computer, waarop hosting geïnstalleerd kan worden (lokale optie);
  • De server bevindt zich op een openbare hosting op internet.

In het eerste geval is het mogelijk om vanaf de opdrachtregel met de server te werken en phpMyAdmin te gebruiken, in het tweede geval alleen phpMyAdmin of een soortgelijke tool, maar de opdrachtregel is soms beschikbaar via externe SSH-toegang.

Native beheertools

Gevoel van familierelaties met de Unixoid-familie en met het verleden uit Apache-servers- een karakteristiek kenmerk van MySQL: een gebruiker aanmaken is een opdrachtregel met vreemde syntaxis. Voor specialisten die met Linux en soortgelijke systemen werken, is dit even bekend als wild in de ogen Windows-gebruikers, die nooit ‘in het echte leven uitkwam’.

Het aanmaken van gebruikers begint met het starten van de opdrachtregel van de server. IN Windows-omgeving dit gebeurt als volgt.

Eerst (1) moet u als beheerder de opdrachtregel uitvoeren, vervolgens naar de map gaan waar MySQL zich bevindt (2) en vervolgens de server zelf starten (3):

  • mysql -u... -p

hier zijn "-u..." en "-p" schakelaars die verwijzen naar de naam "..." = root (of een andere naam) en het bijbehorende wachtwoord. In principe mag de gebruiker geen root zijn, maar iemand die “root” (administratieve) rechten heeft.

In wezen: De server is eigenlijk altijd actief, hier is mysql -u... -p een commando om toegang te krijgen tot de server, niet om deze te starten.

IN Linux-omgeving en vergelijkbare systemen is een dergelijk commando een “native” actie en wordt in de regel eenvoudigweg bepaald door mysqld op de juiste plaats te starten (door het juiste pad), moet dit worden verduidelijkt met de beheerder. Hier staat meestal een andere naam: niet mysql, maar mysqld. Bovendien is deze actie niet altijd beschikbaar voor alle gebruikers ( besturingssysteem, niet de MySQL-server). In tegenstelling tot Windows zijn orde en veiligheid bij Linux een natuurlijke en onbesproken vereiste, waar altijd een beschaafde houding tegenover staat.

Zodra mysql is gestart, zal het dit in ieder geval aangeven met een prompt (4):

  • mysql>

en het zal mogelijk zijn om met zowel gebruikers als databases te werken.

Opmerking. Bij installatie in een Windows-omgeving kan alles: Apache, MySQL, in standaardpaden worden geïnstalleerd, maar het wordt aanbevolen om compactere en dichtbijgelegen locaties voor deze belangrijke tools te gebruiken:

  • c:\SCiA\Apache;
  • c:\SCiA\PHP;
  • c:\SCiA\MySQL;
  • c:\SCiB\localhost\www\phpMyAdmin\;
  • c:\SCiB\site1\www\;
  • c:\SCiB\site2\www\;
  • c:\SCiB\siteN\www\.

Deze logica zal niet alleen het beheer vereenvoudigen, maar ook de mogelijkheden van de ontwikkelaar vergroten om tussen productversies te schakelen en de functionaliteit ervan te beheren.

Werken aan de MySQL-opdrachtregel

Zodra de server heeft gereageerd en de opdrachtregel heeft opgegeven, kunnen gebruikers worden aangemaakt en rechten worden toegewezen.

IN in dit voorbeeld Met het commando create user werd de gebruiker Petrov aangemaakt met het wachtwoord 123DFG. Als er een fout wordt gemaakt bij het invoeren van een opdracht, biedt de server aan om deze te corrigeren, maar het is beter als u eraan werkt opdrachtregelmaak nooit fouten!

Het volgende commando 'grant all privileges' geeft alle rechten op alles. U hoeft het flush-commando niet te geven, maar het "duwt" de commandobuffer eruit, dat wil zeggen, het herstelt de uitvoering ervan.

MySQL: maak een gebruiker aan en geef rechten op de database

Commando gebruikt in voorbeeld:

  • VERLEEN ALLE PRIVILEGES OP *.* AAN "Petrov"@"localhost";

in feite opent het voor de gebruiker Petrov toegang tot alle databases (eerste asterisk) tot alle tabellen (tweede asterisk).

Door algemene regel MySQL, een gebruiker aanmaken is:

  • VERLEEN [privilegetype] AAN [databasenaam].[tabelnaam] AAN "[gebruiker]"@"localhost";

De volgende rechten zijn toegestaan:

  • ALLE PRIVILEGES - alle rechten.
  • CREATE - het recht om nieuwe tabellen/databases te maken.
  • DROP - het recht om tabellen/databases te verwijderen.
  • VERWIJDEREN - het recht om informatie in tabellen te verwijderen.
  • INSERT - het recht om informatie in tabellen te schrijven.
  • SELECT - het recht om informatie uit tabellen te lezen.
  • UPDATE - het recht om informatie in tabellen bij te werken.
  • SUBSIDIEOPTIE - het recht om te werken met de rechten van andere gebruikers.

Vanuit praktisch oogpunt impliceert "create user" in MySQL drie machtigingen:

  • alle rechten op alle databases en alle gebruikers;
  • lezen en schrijven;
  • alleen lezen.

Andere mogelijkheden voor het verlenen van rechten zijn zelden nodig. In de omgeving van Linux-systemen zijn er veel meer redenen voor ‘juridische’ vrijheid (en noodzaak), maar daar liggen ook veel meer mogelijkheden dan in Windows.

De omgekeerde werking van MySQL "gebruiker aanmaken" is drop.

  • verwijder gebruiker "Petrov"@"localhost";

Na het uitvoeren van dit commando zal de gebruiker Petrov niet langer bestaan ​​en zullen zijn privileges verloren gaan. Gebruik de opdracht om rechten te wijzigen:

  • REVOKE [privilege] ON [DB].[Tabel] TO "[user]"@"localhost";

Een veel voorkomende actie in MySQL is het aanmaken of verwijderen van een gebruiker en dat is alles, maar het wijzigen van privileges is ook een geldige handeling (zelden nodig).

Met behulp van phpMyAdmin

Er zijn veel implementaties van deze prachtige tool. Afhankelijk van de gebruikte Apache-versies, PHP en MySQL duren vaak lang om te vinden de vereiste versie dit product, maar zodra phpMyAdmin succesvol is geïnstalleerd, heeft de gebruiker er veel handige mogelijkheden en een comfortabele interface.

Met behulp van phpMyAdmin kunt u MySQL opdracht geven een gebruiker voor elke host aan te maken en te beheren huidige gebruikers bijna operatief.

phpMyAdmin is niet de enige hulpmiddel met een comfortabele, intuïtieve en veelzijdige interface, maar het is de meest populaire tool voor het beheren van MySQL-servers.

Over de opdrachtregel en beveiliging

Natuurlijk, met behulp van de opdracht MySQL-reeksen- een onaantrekkelijke activiteit, maar u moet er rekening mee houden dat in sommige gevallen alleen de opdrachtregel van de server de database of gebruiker kan opslaan en de import of export van informatie kan garanderen.

Versies softwareproducten Ze ontwikkelen zich zo snel dat ontwikkelaars simpelweg geen tijd hebben om mogelijkheden te combineren, bijvoorbeeld PHP en MySQL, MySQL en phpMyAdmin. Als er iets onverwachts gebeurt, slaat de opdrachtregel de situatie altijd op.

Je mag ook nooit vergeten: MySQL-beheer heeft alleen betrekking op de toegang tot de databases en via de functionaliteit ervan. Databasebestanden zijn toegankelijk buiten MySQL. Externe bescherming van MySQL en de bronnen die het beheert, is een reële en belangrijke behoefte.