MySQL is een van de meest populaire databasemanagers ter wereld. Het bevat veel functies die het betrouwbaar, efficiënt en robuust maken. De maximale betrouwbaarheid wordt bereikt als het op de juiste manier wordt gebruikt. Het maken van gebruikers met beperkte rechten op de database is een van de gemakkelijkste en betrouwbaarste manieren om de MySQL-beveiliging te vergroten.
MySQL gebruiker aanmaken
Bij het installeren van MySQL is de rootgebruiker (MySQL-beheerder) de eerste gebruiker die wordt aangemaakt. De rootgebruiker mag van alles en nog wat doen in de MySQL-database. Het is handig voor andere mensen om toegang te krijgen tot uw database met dit account.
Kwaadwillende gebruikers kunnen proberen in te loggen als root-gebruikers om de gehoste informatie te stelen of de service samen met de gegevens te vernietigen. Daarom moet de systeembeheerder gebruikers met specifieke machtigingen voor de database maken. Dit zorgt ervoor dat als de veiligheid van die gebruiker in gevaar komt, de impact minimaal of beheersbaar is.
Met de instructie MySQL Create User kunt u een nieuw gebruikersaccount maken op de databaseserver. Het biedt authenticatie-, resourcelimiet-, rol- en wachtwoordbeheereigenschappen voor de nieuwe accounts. Het overzicht stelt ons ook in staat om de accounts te controleren die moeten worden vergrendeld of ontgrendeld.
Om een gebruiker aan te maken, is het vereist om een globaal privilege te hebben (wees een rootgebruiker) van de "CREATE USER"-instructie of het INSERT-privilege voor het MySQL-systeemschema. Er verschijnt een fout als u probeert een gebruiker aan te maken die al bestaat, maar als u de clausule "IF NOT EXISTS" gebruikt, geeft de instructie een waarschuwing voor elke benoemde gebruiker die al bestaat in plaats van een foutmelding.
Om een niet-rootgebruiker aan te maken en hen specifieke rechten te verlenen om de database te openen en te wijzigen, gebruiken we de volgende syntaxis:
CREATE USER IF NOT EXISTS 'fosslinux'@'localhost' IDENTIFIED BY 'foss12345';
De accountnaam bestaat uit twee delen; de gebruikersnaam en hostnaam, gescheiden door het @-teken. De gebruikersnaam is de naam van de gebruiker, terwijl de hostnaam de naam van de host is van waaruit de gebruiker verbinding kan maken met de databaseserver.
username@hostname
De hostnaam is optioneel. Als de hostnaam niet is opgegeven, kan de gebruiker verbinding maken vanaf elke host op de server. Een gebruikersnaam zonder hostnaam kan worden geschreven als gebruikersnaam@%
CREATE USER IF NOT EXISTS 'fosslinux@%' IDENTIFIED BY 'foss12345';
Houd er rekening mee dat met de instructie Create User een nieuwe gebruiker met volledige toegang wordt gemaakt. gebruik de GRANT-instructie
. om privileges aan de gebruiker te gevenGebruik de volgende stappen om een nieuwe gebruiker aan te maken in de MySQL-database:
1. Door de MySQL-clienttool te gebruiken, opent u de MySQL-server
2. Typ het wachtwoord en druk op Enter.
3. Maak een nieuwe gebruiker aan met het volgende commando
create user 'foss'@'localhost' identified by 'foss12345';
4. Gebruik de volgende opdracht om gebruikers op de MySQL-server weer te geven
select user from mysql.user;
Van de getoonde output is de gebruiker 'foss' succesvol aangemaakt.
5. Gebruik nu de IF NOT EXISTS-clausule met de CREATE USER-instructie door de volgende opdracht uit te voeren:
Bevoegdheden toekennen aan de nieuwe MySQL-gebruiker
Enkele van de meest voorkomende privileges die door de MySQL-server aan een nieuwe gebruiker worden verleend, zijn:
1. ALLE VOORRECHTEN: staat alle rechten toe aan een nieuwe gebruikersaccount
2. MAKEN: stelt de gebruikersaccount in staat databases en tabellen te maken
3. DROP: stelt de gebruikersaccount in staat databases en tabellen te laten vallen
4. VERWIJDEREN: stelt het gebruikersaccount in staat om rijen uit een specifieke tabel te verwijderen
5. INVOER: stelt de gebruikersaccount in staat om rijen in een specifieke tabel in te voegen
6. SELECTEER: stelt de gebruikersaccount in staat een database te lezen
7. BIJWERKEN: stelt een gebruikersaccount in staat tabelrijen bij te werken
Voer de volgende opdracht uit om alle rechten aan een gebruiker te verlenen
GRANT ALL PRIVILEGES ON *.* TO 'foss'@'localhost';
Voer de volgende opdracht uit om specifieke privileges te geven aan een nieuw aangemaakte gebruiker,
GRANT CREATE, SELECT, INSERT ON *.* TO 'foss'@'localhost';
Voer de onderstaande opdracht uit om alle rechten die aan een gebruiker zijn toegewezen te wissen.
FLUSH PRIVILEGES;
Voer de volgende opdracht uit om de bestaande rechten te zien die aan een gebruiker zijn toegewezen.
SHOW GRANTS FOR 'foss'@'localhost';
MySQL Drop-gebruiker
Met de MySQL Drop User-verklaring kunt u een of meer gebruikersaccounts en hun privileges van de databaseserver verwijderen. Als het gebruikersaccount niet bestaat op de databaseserver, wordt er een fout geretourneerd.
Om de Drop User-instructie te gebruiken, moet u een globaal privilege of het DELETE-privilege voor het MySQL-systeemschema hebben.
De syntaxis voor het volledig verwijderen van gebruikersaccounts van de databaseserver is als volgt:
DROP USER 'foss'@'localhost';
Opmerking: De accountnaam in het bovenstaande voorbeeld wordt geïdentificeerd als gebruikersnaam@hostnaam. De gebruikersnaam is de naam van het account dat u van de databaseserver wilt verwijderen en de hostnaam is de servernaam van het gebruikersaccount. bijvoorbeeld 'foss@localhost'. foss is de gebruikersnaam, terwijl localhost is de hostnaam.
De volgende stappen moeten worden gevolgd bij het verwijderen van een bestaande gebruiker uit de MySQL-serverdatabase;
1. Door de MySQL-clienttool te gebruiken, opent u de MySQL-server
2. Typ het accountwachtwoord en druk vervolgens op Enter
3. Voer de volgende opdracht uit om een gebruikersaccount te verwijderen
DROP USER 'fosslinux'@'localhost';
4. Voer de volgende opdracht uit om gebruikers te laten zien
select user from mysql.user;
U krijgt een uitvoer waarin de gebruikersnaam fosslinux niet aanwezig zal zijn, zoals hieronder getoond:
5. De Drop-gebruiker kan ook worden gebruikt om meer dan één gebruikersaccount tegelijk te verwijderen. Om dat te doen, scheidt u de account_names met komma's.
Opmerking: Omdat we de gebruikers al hadden verwijderd, zullen we twee gebruikers maken met behulp van de concepten voor het maken van gebruikers (fosslinuxtuts en fosslinux@%). Daarna zullen we het commando in stap 4 uitvoeren om de bestaande gebruikers te tonen zoals hieronder getoond:
Zet nu de twee gebruikers tegelijk neer met behulp van de onderstaande opdracht:Voer de volgende opdracht uit om beide gebruikers te verwijderen:
DROP USER 'fosslinuxtuts'@'localhost', 'fosslinux@%' ;
Houd er rekening mee dat de DROP-instructie geen open gebruikerssessies automatisch kan sluiten. Wanneer de DROP-instructie wordt uitgevoerd terwijl een gebruikersaccountsessie actief is, heeft de opdracht er geen invloed op totdat de sessie wordt gesloten. Het gebruikersaccount wordt alleen verwijderd wanneer de sessie wordt gesloten en de volgende poging van de gebruiker kan niet opnieuw inloggen.
MySQL gebruikers tonen/alle gebruikers weergeven
Om een database in MySQL te beheren, moet u de lijst met alle gebruikersaccounts in een database zien. Mensen gaan ervan uit dat er een SHOW USERS-commando is, vergelijkbaar met SHOW DATABASE of SHOW TABLES voor het weergeven van de lijst met alle gebruikers die beschikbaar zijn op de databaseserver. Helaas heeft de MySQL-server geen SHOW USERS-opdracht om een lijst van alle gebruikers op de MySQL-server weer te geven. Dus in plaats daarvan gebruiken we de volgende query om de lijst van alle gebruikers in de databaseserver te zien:
Select user from mysql.user;
Na het uitvoeren van de opdracht krijgt u de gebruikersgegevens uit de gebruikerstabel van de MySQL-databaseserver.
Opmerking: In dit voorbeeld gebruiken we de MySQL-database. Selecteer de database door de onderstaande opdracht uit te voeren en gebruik vervolgens de instructie select from om de bestaande gebruikers te controleren, zoals weergegeven in de onderstaande afbeelding:
use mysql;
SELECT user FROM user;
Als u meer informatie over de gebruikerstabel wilt zien, voert u de volgende opdracht uit:
DESC user;
De opdracht geeft de volgende uitvoer die alle beschikbare kolommen van de mysql.user-database weergeeft:
Voer de volgende zoekopdracht uit om geselecteerde informatie te krijgen, zoals de hostnaam, de vervalstatus van het wachtwoord en de accountvergrendeling:
SELECT user, host, account_locked, password_expired FROM user;
De volgende uitvoer zal verschijnen na succesvolle uitvoering van de query:
Toon huidige gebruiker
U kunt informatie over de huidige gebruiker krijgen door de functie user() of current_user() te gebruiken, zoals hieronder weergegeven:
Select user();
OF
Select current_user();
De volgende uitvoer zal verschijnen na het succesvol uitvoeren van een van de bovenstaande commando's.
Toon momenteel ingelogde gebruiker
U kunt een gebruiker zien die momenteel is aangemeld bij de databaseserver door de volgende opdracht op de MySQL-server te gebruiken:
SELECT user, host, db, command FROM information_schema.processlist;
De bovenstaande commando's geven een soortgelijk scherm als hieronder weergegeven:
Het MySQL-gebruikerswachtwoord wijzigen
MySQL-gebruikersrecords bevatten de aanmeldingsgegevens, accountrechten en hostgegevens voor een MySQL-account voor toegang tot en beheer van de database. Inloggegevens omvatten de gebruikersnaam en het wachtwoord. Daarom kan het nodig zijn om het gebruikerswachtwoord in de MySQL-database te wijzigen.
Als u het wachtwoord van een gebruikersaccount wilt wijzigen, moet u rekening houden met de volgende informatie:
- Details van het gebruikersaccount dat moet worden gewijzigd
- De applicatie wordt gebruikt door het gebruikersaccount waarvan het wachtwoord moet worden gewijzigd. Als het wachtwoord van de gebruikersaccount opnieuw is ingesteld zonder de verbindingsreeks van de toepassing te wijzigen, kan de toepassing geen verbinding maken met de databaseserver.
Met MySQL kunt u het wachtwoord van de gebruikersaccount op drie verschillende manieren wijzigen:
- UPDATE-instructie
- SET PASSWORD-instructie
- ALTER USER-instructie
Het wachtwoord van de gebruikersaccount wijzigen met behulp van de UPDATE-verklaring
Na het uitvoeren van de UPDATE-instructie, gebruiken we de FLUSH PRIVILEGE-instructie om privileges uit de toekenningstabel van de MySQL-database opnieuw te laden.
Stel dat u het wachtwoord wilt wijzigen voor een gebruikersaccount foss dat verbinding maakt vanaf de localhost met het wachtwoord foss12345, voer het volgende commando uit:
USE mysql;
UPDATE user SET password=password('kip12345') WHERE user='foss';
FLUSH PRIVILEGES;
De bovenstaande verklaring werkt niet op MySQL-versie 5.7.6 of hoger, omdat de MySQL-gebruikerstabel de authenticatiereekskolom bevat waarin alleen het wachtwoord wordt opgeslagen. Hogere versies hebben de authenticatiereekskolom in de UPDATE-instructie zoals weergegeven in de volgende instructie:
USE mysql;
UPDATE user SET authentication_string = password('foss12345') WHERE user = 'foss';
FLUSH PRIVILEGES;
Opmerking: Deze methode werkt alleen met oudere versies van MySQL. Ga daarom naar de andere methoden als u nieuwere of nieuwste MySQL-versies heeft.
Het wachtwoord van de gebruikersaccount wijzigen met de instructie SET PASSWORD
Als u een ander accountwachtwoord wilt wijzigen, moet u het recht UPDATE hebben. De verklaring gebruikt het gebruikersaccount in het volgende formaat:gebruikersnaam@localhost
Het opnieuw laden van privileges uit de rant-tabellen van de MySQL-database met behulp van de FLUSH PRIVILEGES hoeft niet te worden gebruikt. Om het wachtwoord van de gebruikersaccount (foss) te wijzigen met behulp van de instructie SET PASSWORD, gebruikt u de volgende instructie:
SET PASSWORD FOR 'foss'@'localhost' = PASSWORD('foss12345');
Als u MySQL-versie 5.7.6 of hoger gebruikt, is de bovenstaande verklaring verouderd en werkt deze niet in toekomstige releases. Gebruik in plaats daarvan de volgende verklaring;
SET PASSWORD FOR 'foss'@'localhost' = 'foss12345';
Het wachtwoord van de gebruikersaccount wijzigen met de instructie ALTER USER
MySQL gebruikt de instructie ALTER USER met de clausule IDENTIFICEERD BY. Om dat te doen, gebruikt u de volgende syntaxis:
ALTER USER 'foss'@'localhost' IDENTIFIED BY 'foss12345';
Mogelijk moet u het wachtwoord van het MySQL-rootaccount opnieuw instellen. Om dit te doen, kunt u geforceerd stoppen en vervolgens de MySQL-databaseserver opnieuw opstarten zonder de validatietabel te gebruiken.
Conclusie
Dit artikel heeft alle aspecten met betrekking tot MySQL-gebruikersbeheer uitgebreid behandeld. Wij zijn van mening dat het gedetailleerd genoeg is om u oplossingen voor uw problemen te bieden. Als je fouten of problemen tegenkomt bij het tonen van gebruikers die MySQL gebruiken, neem dan contact op via het opmerkingengedeelte voor hulp. Bedankt voor het lezen.