Users and Access Control

Start Omhoog Stored Routines Triggers Scheduled Events Performance Import and Export Data Storage Engines Transactions Server Administration Users and Access Control Oefeningen Database Schema's

MySQL wordt geleverd met een geavanceerde toegangscontrole en privilege systeem om
te voorkomen dat onbevoegde cliŽnten toegang krijgen tot het systeem. Dit systeem,
geÔmplementeerd als een hiŽrarchie, maakt het mogelijk om veelomvattende en uitgebreide toegangsregels te creŽren die MySQL gebruikt om te beslissen hoe het met een bepaalde gebruikershandeling moet omgaan.

In dit hoofdstuk wordt ingegaan op het MySQL toegangscontrole systeem en geeft een zicht op de MySQL toekenningstabellen (grant tables). Deze tabellen, die integraal deel uitmaken van het beveiligingssysteem van de server, bieden database administrators een groot deel van de kracht en flexibiliteit bij het bepalen van de regels die de toegang tot het systeem regelt. Daarnaast wordt in de dit hoofdstuk ingegaan op het beheer van gebruikersaccounts en wachtwoorden in het MySQL toegangscontrole systeem, waarin wordt uitgelegd hoe wachtwoorden (In het bijzonder het zeer belangrijke 'root' password) kan worden gewijzigd en hoe een verloren superuser wachtwoord opnieuw ingesteld kan worden.

De gebruikelijke MySQL server installatie bestaat uit twee niveaus van beveiliging:

  • Verbinding met de server is slechts toegestaan indien deze overeenkomt met de toegangsregels bepaald aan de hand van een account, bijvoorbeeld: gebruiker, host (specifiek subnetwerk, IP range), wachtwoord.
  • Zodra een verbinding tot stand is gebracht, controleert MySQL elke actie die door een gebruiker wordt uitgevoerd om te controleren of de gebruiker voldoende rechten heeft om het te mogen uitvoeren. Een gebruiker kan worden beperkt tot het uitvoeren van specifieke bewerkingen: SELECT, INSERT, DELETE, UPDATE, ... of bepaalde databanken, tabellen, velden of opgeslagen procedures/functies.
  • De beveiliging van het systeem is verder verbeterd door gebruik te maken van een eenrichtings encryptieschema voor gebruikerswachtwoorden. Nieuwere versies van MySQL ondersteunen ook SSL die gebruikt kan worden om, voor een betere beveiliging, de gegevens te gecodeerd te verzenden over de MySQL client-server verbinding (zoals resultaten van queries).

    Als MySQL voor het eerst wordt geÔnstalleerd, zorgt MySQL-installer automatisch voor de aanmaak van een databank, de MySQL database, die zes MySQL toekennings tabellen bevat, zoals:

  • user: Gebruikersaccounts, globale privileges, niet-priviligeerde kolommen.
  • db: Database-niveau privileges.
  • tables_priv: Tabel-niveau privileges.
  • columns_priv: Kolom-niveau privileges.
  • procs_priv: Privilegen met betrekking tot opgeslagen procedures en functies.
  • proxies_priv: Proxy-gebruiker privileges.
  • Elk van deze tabellen heeft een andere rol bij de beslissing of een gebruiker toegang heeft tot een bepaalde database, tabelveld of opgeslagen procedure. Toegangsregels kunnen worden ingesteld op basis van de gebruikersnaam, verbindende gastheer, of opgevraagde database. In de volgende paragrafen wordt elk van deze tabellen in meer detail besproken.

    MySQL
    SELECT * FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_SCHEMA='mysql' and TABLE_NAME = 'user';
    (67 row(s) returned)
     TABLE_NAME  COLUMN_NAME  COLUMN_TYPE  PRIVILEGES  COLUMN_COMMENT
     db  Host  char(60)  select insert
     db  Db  char(64)  select insert
     db  User  char(32)  select insert
     db  Select_priv  enum('N'    select
     db  Insert_priv  enum('N'    select
     db  Update_priv  enum('N'    select
     db  Delete_priv  enum('N'    select
     db  Create_priv  enum('N'    select
     db  Drop_priv  enum('N'    select
     db  Grant_priv  enum('N'    select
     db  References_priv  enum('N'    select
     db  Index_priv  enum('N'    select
     db  Alter_priv  enum('N'    select
     db  Create_tmp_table_priv  enum('N'    select
     db  Lock_tables_priv  enum('N'    select
     db  Create_view_priv  enum('N'    select
     db  Show_view_priv  enum('N'    select
     db  Create_routine_priv  enum('N'    select
     db  Alter_routine_priv  enum('N'    select
     db  Execute_priv  enum('N'    select
     db  Event_priv  enum('N'    select
     db  Trigger_priv  enum('N'    select
     user  Host  char(60)  select insert
     user  User  char(32)  select insert
     user  Select_priv  enum('N'    select
     user  Insert_priv  enum('N'    select
     user  Update_priv  enum('N'    select
     user  Delete_priv  enum('N'    select
     user  Create_priv  enum('N'    select
     user  Drop_priv  enum('N'    select
     user  Reload_priv  enum('N'    select
     user  Shutdown_priv  enum('N'    select
     user  Process_priv  enum('N'    select
     user  File_priv  enum('N'    select
     user  Grant_priv  enum('N'    select
     user  References_priv  enum('N'    select
     user  Index_priv  enum('N'    select
     user  Alter_priv  enum('N'    select
     user  Show_db_priv  enum('N'    select
     user  Super_priv  enum('N'    select
     user  Create_tmp_table_priv  enum('N'    select
     user  Lock_tables_priv  enum('N'    select
     user  Execute_priv  enum('N'    select
     user  Repl_slave_priv  enum('N'    select
     user  Repl_client_priv  enum('N'    select
     user  Create_view_priv  enum('N'    select
     user  Show_view_priv  enum('N'    select
     user  Create_routine_priv  enum('N'    select
     user  Alter_routine_priv  enum('N'    select
     user  Create_user_priv  enum('N'    select
     user  Event_priv  enum('N'    select
     user  Trigger_priv  enum('N'    select
     user  Create_tablespace_priv  enum('N'    select
     user  ssl_type  enum('' 'SPECIFIED')  
     user  ssl_cipher  blob  select insert
     user  x509_issuer  blob  select insert
     user  x509_subject  blob  select insert
     user  max_questions  int(11) unsigned  select insert
     user  max_updates  int(11) unsigned  select insert
     user  max_connections  int(11) unsigned  select insert
     user  max_user_connections  int(11) unsigned  select insert
     user  plugin  char(64)  select insert
     user  authentication_string  text  select insert
    def  user  password_expired  enum('N'  
    def  user  password_last_changed  timestamp  select
    def  user  password_lifetime    smallint(5) unsigned
    def  user  account_locked  enum  

    Het gebruikerstabel kolommen vast te stellen of te weigeren of toestaan inkomende verbindingen. Voor
    toegestane aansluitingen, geen privileges in de tabel user verleende geven wereldwijde rechten van de gebruiker.
    Voorrechten in deze tabel toegekend voor alle databases op de server.