dissabte, 1 de gener del 2000

Gestió d'usuaris


MySQL emmagatzema en les taules de la base de dades (BD) mysql la informació corresponents als usuaris.
La comanda CREATE USER crea nous usuaris MySQL.
Per utilitzar-la, cal tenir el permís global CREATE USER o el permís INSERT a la base de dades mysql. Per a cada compte nou, CREATE USER crea una nova fila a la taula mysql.user sense privilegis específics. Es produeix un error si el compte ja existeix.
El compte pot tenir opcionalment una contrasenya amb la clàusula IDENTIFIED BY.

ESTRUCTURA

CREATE USER nom_user [IDENTIFIED BY [PASSWORD] 'password'] [, nom_user [IDENTIFIED BY [PASSWORD] 'password']] ...
 Exemple: CREATE USER ‘usuari_prova'@'localhost' identified by 'pwd';

Per eliminar: DROP USER nom_user [, nom_user] ...


Un compte està format per un 'nom d'usuari' i un 'nom de host', units per '@'. El nom d'usuari és imprescindible però el nom del host pot ser: una direcció IP, nom de servidor,.. local 'localhost‘, qualsevol màquina '%'.
Si només s'especifica la part del 'nom d'usuari' al compte, s'assigna com a nom de host '%' . Què és el mateix que 'usuari'@'%’

La sentència GRANT permet als administradors de sistemes crear comptes d'usuari de MySQL i concedir drets a aquests, en una sola sentència.

ESTRUCTURA

GRANT <privilegis> ON <objecte> TO <usuaris> 
[WITH GRANT OPTION];

Per veure els permisos que té un compte, utilitzeu SHOW GRANTS
  1. Exemples de privilegis poden ser:
    1. ALL PRIVILEGES: tots els privilegis sobre l'objecte especificat.
    2. SELECT: [(columnes)]: consultes. Es pot concretar a quines columnes.
    3. INSERT: insercions.
    4. UPDATE [(columnes)]: modificacions. Es pot concretar a quines columnes.
    5. DELETE: esborrats.
  2. Exemples d'objecte poden ser a una taula o una vista.
  3. Usuaris pot ser tothom: PUBLIC, o bé una llista dels usuaris que volem autoritzar.
  4. L'opció WITH GRANT OPTION permet que l'usuari que autoritzem pugui, al seu torn, autoritzar d'altres usuaris a autoritzar aquell privilegi.
Per utilitzar GRANT, cal tenir el permís GRANT OPTION, i els privilegis que s’estiguin atorgant.

Amb REVOKE podem eliminar els privilegis del compte.

REVOKE [GRANT OPTION FOR] <privilegis> ON <objecte> FROM <usuaris> [RESTRICT|CASCADE];
  1. Privilegis, objecte i usuaris són els mateixos que per a la sentència GRANT.
  2. L'opció GRANT OPTION FOR s'usaria en el cas que volguéssim desautoritzar el dret a autoritzar (WITH GRANT OPTION).
  3. RESTRICT / CASCADE
    • L'opció CASCADE fa que, si un usuari que hem autoritzat, n'ha autoritzat al seu torn d'altres, que alhora poden haver fet més autoritzacions, quedin desautoritzats tots de cop.
    • L'opció RESTRICT no ens permet desautoritzar un usuari sí aquest n'ha autoritzat d'altres.
  • MySQL no elimina automàticament cap permís si s'esborra una base de dades o taula.
  • REVOKE no treu les entrades de la taula mysql.user, és a dir, no s'esborra l'usuari!!! Cal fer ús de DROP USER o DELETE per esborrar-lo.

PRIVILEGIS GLOBALS

Els permisos globals s'apliquen a totes les bases de dades (i en totes les taules de les bases de dades) en un servidor determinat. Per assignar privilegis global, utilitzeu la sintaxi ON *.
Altres permisos poden donar-se globalment o nivells més específics. Els permisos globals s'emmagatzemen a la taula mysql.user.

GRANT ALL ON *.* TO 'usuari'@'host';

REVOKE ALL ON *.* TO 'usuari'@'host';

GRANT SELECT, INSERT ON *.* TO 'usuari'@'host';

Privilegis de base de dades


Els privilegis de base de dades s'apliquen a tots els objectes en una base de dades donada. Per assignar privilegis a nivell de base de dades, utilitza ON db_name .*


Els privilegis de base de dades s'emmagatzemen en les taules mysql.db i mysql.host. GRANT i REVOKE afecten la taula db, però no la taula de hosts, que s'utilitza molt poc. 


GRANT ALL ON mydb.* TO 'usuari'@'host';
GRANT SELECT, INSERT ON mydb.* TO 'usuari'@'host';

Privilegis de taula


Els permisos de taula s'apliquen a totes les columnes d'una taula donada.
Per assignar privilegis a nivell de taula, utilitzeu la sintaxi db_name.tbl_name
Si especifiqueu tbl_name en lloc de db_name.tbl_name, la declaració s'aplica a tbl_name a la base de dades per defecte.

Els permisos de taula s'emmagatzemen a la taula mysql.tables_priv.

GRANT ALL ON mydb.mytbl TO 'usuari'@'host';

GRANT SELECT, INSERT ON mydb.mytbl TO 'usuari'@'host';

Privilegis de columna i de rutina

Els permisos de columna s'apliquen a columnes en una taula donada. Cada privilegi atorgat a nivell de columna ha de ser seguit de la columna o columnes, tancada entre parèntesis.
Els valors permissibles per priv_type una columna (és a dir, quan s'utilitza una clàusula column_list) són inserir, seleccionar i actualitzar.

Els permisos de columna s'emmagatzemen a la taula mysql.columns_priv.

GRANT SELECT (col1), INSERT (col1,col2) ON mydb.mytbl TO 'usuari'@'host';
També hi ha privilegis referents als procediments emmagatzemats i es desen a mysql.procs_priv

CONTRASENYES

En la clàusula IDENTIFIED BY, la contrasenya s'ha de donar com un literal.
No cal utilitzar la funció PASSWORD ()
GRANT ... IDENTIFIED BY 'mypass';
Si no desitja enviar la contrasenya en text clar i sap el valor hash que PASSWORD () retornaria per al pas a la paraula, podeu especificar el valor hash precedit per la paraula clau PASSWORD.
GRANT ... IDENTIFIED BY PASSWORD

'*6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4';

Clausula WITH

La clàusula WITH s'utilitza per a diversos propòsits:
  • Per a permetre a un usuari atorgar privilegis a altres usuaris
  • Per especificar les limitacions d'ús de recursos d'un usuari
  • Per quan i com l'usuari ha d'utilitzar connexions segures amb el servidor
La clàusula WITH GRANT OPTION li dóna a l'usuari la capacitat de donar a altres usuaris els privilegis que l'usuari té en el nivell especificat. Cal anar amb compte a qui li donen aquest privilegi, pel fet que dos usuaris amb diferents privilegis poden ser capaços de combinar-se els privilegis!
No es pot donar a un altre usuari un privilegi no es té.
Suposem que atorgueu a un usuari el privilegi INSERT a una base de dades. Si a continuació, li donem el permís SELECT a la base de dades i s'especifica WITH GRANT OPTION, l'usuari pot donar a altres usuaris no només el permís SELECT, sinó també INSERT.


MAX_QUERIES_PER_HOUR, MAX_UPDATES_PER_HOUR, i MAX_CONNECTIONS_PER_HOUR limiten el nombre de consultes, actualitzacions, i inicis de sessió d'un usuari pot realitzar durant qualsevol període d'una hora. Si count és 0 (el per defecte), això significa que no hi ha cap limitació per a aquest usuari.
MAX_USER_CONNECTIONS limita el nombre màxim de connexions simultànies que el compte pot fer. Si count és 0 (per defecte), la variable sistema max_user_connections determina el nombre de connexions simultànies per al compte.
REQUIRE NONE indica que el compte no té requeriments de SSL o X509.
Aquesta és l'opció per defecte. Les connexions sense xifrar es permeten si el nom d'usuari i contrasenya són vàlids. Es poden xifrar les connexions, a elecció del client, si el client té el certificat correcte i els arxius clau. És a dir, el client no necessita especificar les opcions de comandes SSL, i en aquest cas serà la connexió sense xifrar. Per utilitzar una connexió encriptada, s'ha d'especificar l'opció - ssl-ca, o les tres de la - SSL-ca, - ssl-key, i - ssl-cert.

Renombrar usuari

RENAME USER old_user TO new_user [, old_user TO new_user] ...
Tanmateix no migra els objectes ni els privilegis

Per canviar la contrasenya:

SET PASSWORD [FOR user] = { PASSWORD('some password') | OLD_PASSWORD('some password') | 'encrypted password'}

SET PASSWORD FOR 'bob'@'%.loc.gov' = PASSWORD('newpass');
UPDATE mysql.user SET PASSWORD = PASSWORD (‘nova_pwd’);
Canvi del password pels comptes anònims:
shell> mysql -u root
mysql> SET PASSWORD FOR ''@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR ''@'%' = PASSWORD('newpwd');

EXEMPLES
$> mysql – u root – p
GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost' IDENTIFIED BY 'some_pass' WITH GRANT OPTION;


GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%' IDENTIFIED BY 'some_pass' WITH GRANT OPTION;


GRANT RELOAD, PROCESS ON *.* TO 'admin'@'localhost'


GRANT USAGE ON *.* TO 'dummy'@'localhost'; 

Dos dels comptes tenen un nom d'usuari de monty i una contrasenya de some_pass. Ambdós comptes són comptes de root amb plens permisos per fer qualsevol cosa. Un compte ('monty' @ 'localhost') pot utilitzar-se només quan es connecti des de l'equip local. L'altra ('monty'@'%') es pot utilitzar per connectar-se des de qualsevol altre equip.
Un compte té un nom d'usuari de admin i no té contrasenya. Aquest compte es pot utilitzar només des de l'equip local. Té els privilegis administratius RELOAD i PROCESS. Aquests permeten a l'usuari admin executar les ordres mysq-ladmin reload, mysqladmin refresh, i mysqladmin flush-xxx, així com mysqladmin processlist. No es donen autorització per accedir a cap base de dades.
Un compte té un nom d'usuari sense contrasenya. Aquest compte es pot utilitzar només des de l'equip local. No té cap privilegi. El permís USAGE a la comanda GRANT permet crear un compte sense donar-li cap privilegi. S'assumeix que s'atorgaran privilegis específics posteriorment.

Canvis en els privilegis

Quan Mysqld s’inicia, tots els continguts de les taules grant es llegeixen i es fan efectius en el control d'accés.
Quan el servidor càrrega les taules grant, els privilegis per les connexions dels clients existents, es veuen afectades de la següent manera:
  • Els canvis en els privilegis de taula i columna, són efectius en la següent petició del client.
  • Els canvis en els privilegis de la base de dades, son efectius en la següent sentencia USE db_name.
  • Els canvis de privilegis globals i les claus d'accés tenen efecte la propera vegada que el client es connecta.

Si es modifiquen les taules grant utilitzant GRANT, REVOKE, o SET PASSWORD, el servidor se’n adona dels canvis i recarrega les taules grant en la memòria immediatament.
Si es modifiquen les taules grant directament utilitzant INSERT, UPDATE, o DELETE, els canvis no tindran efecte fins que es reinicií el servidor, o se li comuniqui que ha de recarregar les taules.
Per recarregar les taules manualment, cal executar la comanda FLUSH PRIVILEGES o les comandes mysqladmin flushprivileges o mysqladmin reload.
Sinó es recarreguen les taules manualment, els canvis no seran efectius fins a la propera connexió.

ACTIVITATS
  1. Crea un usuari de nom ALUMNE i amb contrasenya ALUMNE
    CREATE USER 'ALUMNE'@'localhost' identified by 'ALUMNE';

  2. L'usuari ALUMNE intenta accedir a alguna taula de la BD EMPRESA, pot fer-ho?
    No, sortirá error perque no tenim permis del creador de la BD, el root.
  3. Permet que ALUMNE seleccioni les dades de la BD empresa.
    GRANT SELECT ON empresa.* TO ALUMNE@'localhost';
  4. L'usuari ALUMNES intenta esborrar, modificar, i inserir dades a PRODUCTE, pot fer-ho? Permet-li
    INSERT INTO empresa.PRODUCTE (PROD_NUM, DESCRIPCIO)
    VALUES (100866, 'ACE TENNIS RACKET II');

    UPDATE empresa.PRODUCTE
    SET DESCRIPCIO='ACE TENNIS RACKET III'
    WHERE PROD_NUM=100866;

    DELETE FROM empresa.PRODUCTE
    WHERE PROD_NUM=100866;

    No ho pot fer perque no te els permisos necesaris, per donar-los:

    GRANT INSERT, UPDATE, DELETE ON empresa.* TO 'ALUMNE'@'localhost';  (amb l'usuari root user)
  5. L'usuari ALUMNE intenta crear la taula VENTES amb 2 camps (escull 2 columnes), pot fer-ho? Permet que l'usuari creï la taula anterior i insereixi 3 tuples (pot inserir? Si no, permet-li)
    No ho pot fer, per fer-ho necesitem donarli a l'usuari (amb root):
    GRANT CREATE ON empresa.* TO 'ALUMNE'@'localhost';
    CREATE TABLE VENTES(
        DNI VARCHAR(10),
        Nom VARCHAR(20),
        Cognom VARCHAR(20),
        CONSTRAINT PRIMARY KEY (DNI)
    );

    INSERT INTO VENTES VALUES('53666748-N','Francisco','Mece');
    INSERT INTO VENTES VALUES('53666738-N','Francisca','Mici');
    INSERT INTO VENTES VALUES('53666338-N','Franciscu','Moci');
  6. L'usuari ALUMNE intenta crear un nou usuari anomenat "PROFE", pot fer-ho?
    No, perque no te permís de CREATE USER.
  7. Fes que l'usuari ALUMNE pugui crear l'usuari "PROFE" amb contrasenya "PROFE" i comprova-hoGRANT CREATE USER ON *.* TO 'ALUMNE'@'localhost'; (amb root)

    CREATE USER 'PROFE'@'localhost' identified by 'PROFE'; (amb alumne)
  8. L'usuari ALUMNE dóna privilegis totals sobre la taula 'VENTES' a l'usuari PROFE. Comprova-ho. Pot esborrar-la?
    No deixa donar privilegis perque el grant option no esta activat, per activar-lo tindrem que posar:
    GRANT GRANT OPTION ON empresa.VENTES TO 'ALUMNE'@'localhost'; (amb l'usuari root)

    No podrá borrarla perque PROFE no te privilegis.

    Tot i això, no podrem permetre privilegis totals degut a que no tenim aquesta.

    GRANT SELECT, INSERT, UPDATE, DELETE ON empresa.* TO 'PROFE'@'localhost';  (això si podrem perque tenim aquests permisos.)
  9. L'usuari ALUMNE crea un nou usuari (CAP/CAP)CREATE USER 'CAP'@'localhost' identified by 'CAP';
  10. L'usuari ROOT li dóna a l'usuari ALUMNE el privilegi de donar privilegis a nivell de la BD de EMPRESA
    GRANT GRANT OPTION ON EMPRESA.* TO 'ALUMNE'@'localhost';
  11. L'usuari ROOT li dóna a l’usuari CAP tots els privilegis sobre la taula VENTES.
    GRANT ALL PRIVILEGES ON empresa.VENTES TO 'CAP'@'localhost'; (with root user)  (Si ponemos --all tambien vale.)
  12. L'usuari PROFE intenta passar el privilegi de seleccionar i modificar dades de la taula VENTES a l'usuari CAP, pot fer-ho?
    No, perque no te el grant option, en tot cas, seria:
    GRANT SELECT,UPDATE,INSERT,DELETE ON empresa.VENTES TO 'CAP'@'localhost';
  13. L'usuari ALUMNE fa el necessari per què l'usuari PROFE pugui passar el privilegi anterior a l'usuari CAP
    GRANT GRANT OPTION ON empresa.VENTES TO 'PROFE'@'localhost'; (with the user ALUMNE)
    GRANT SELECT,UPDATE,INSERT,DELETE ON empresa.VENTES TO 'CAP'@'localhost'; (with the user PROFE)
  14. L'usuari ALUMNE vol retirar el privilegi d'esborrar dades d’una taula de la BD empresa (pex CLIENTS) a l'usuari CAP, pot fer-ho?
    No pot fer-ho perque l'usuari cap no te cap privilegi sobre la taula de la BD empresa CLIENTS, en tot cas, seria:
    REVOKE DELETE ON empresa.CLIENT FROM 'CAP'@'localhost';
  15. L'usuari ALUMNE vol retirar el privilegi de seleccionar dades de ventes a l'usuari CAP, pot fer-ho?
    Si pot.
    REVOKE SELECT ON empresa.VENTES FROM 'CAP'@'localhost';
  16. L'usuari ALUMNE retira el privilegi de passar el privilegi de la taula VENTES a l'usuari PROFE. Pot fer-ho? L'usuari CAP pot continuar seleccionant les dades?
    REVOKE GRANT OPTION ON empresa.VENTES FROM 'PROFE'@'localhost'; (amb l'usuari ALUMNE)
    No, no pot, perque en exercicis anteriors ja l'hem tret.
  17. No permetre modificar la columna codi_client (per exemple) de la taula clients (per exemple) a l'usuari CAP. Comprovar-ho
    REVOKE UPDATE(CLIENT_COD),INSERT(CLIENT_COD) empresa.CLIENT FROM 'CAP'@'localhost'; (amb l'usuari PROFE)
  18. Mostrar els permisos que tenen els diferents usuaris.
    GRANT GRANT OPTION ON empresa.* TO 'ALUMNE'@'localhost';
EXERCICIS DE VISTES I PRIVILEGIS

Script empresa.

  1. L’usuari ROOT crea una primera vista que permeti veure a la taula departaments tots els camps menys la Localitat.CREATE USER 'ALUMNE1'@'localhost' identified by 'ALUMNE1';

    use empresa; -- departaments es dept.

    CREATE VIEW depcamps AS
    SELECT d.DEPT_NO, d.DNOM
    FROM DEPT d;
  2. L’usuari ROOT crea una segona vista que permeti veure el nom dels clients, el seu codi I el numero de comanda.
    CREATE VIEW cli AS
    SELECT c.NOM,c.CLIENT_COD,co.COM_NUM
    FROM CLIENT c NATURAL JOIN COMANDA co;
  3. L’usuari ROOT permet control total a l’usuari ALUMNE sobre la primera vista.
    GRANT ALL ON depcamps TO 'ALUMNE1'@'localhost';
  4. Comprova si l’usuari ALUMNE pot modificar el nom del clients amb la primera vista.
    UPDATE depcamps
    SET DNOM="I+D"
    WHERE DNOM="INVESTIGACIÓ";

    Si pot.
  5. L’usuari ROOT permet seleccionar i inserir a l’usuari ALUMNE sobre la segona vista.
    GRANT INSERT,SELECT ON cli TO 'ALUMNE1'@'localhost';
  6. Comprova si l’usuari ALUMNE pot modificar el nom dels clients en la segona vista i/o el seu codi.
    UPDATE cli
    SET NOM="EVERY_MOUNTAIN"
    WHERE NOM="EVERY MOUNTAIN";

    UPDATE cli
    SET CLIENT_COD="99"
    WHERE CLIENT_COD="102";

    No podrá, no te permisos UPDATE.
  7. L’usuari ROOT crea una tercera vista que permeti veure tots els camps de la taula CLIENT, però, només els que no són de Santa Clara.
    CREATE VIEW clisanta AS
    SELECT *
    FROM CLIENT 
    WHERE CIUTAT!="SANTA CLARA";
  8. L’usuari ROOT crea una quarta vista basada en la tercera que permeti veure tots els camps, però, només els de la ciutat Cupertino.
    CREATE VIEW cuper AS
    SELECT *
    FROM clisanta 
    WHERE CIUTAT="CUPERTINO";
  9. L’usuari ROOT permet seleccionar i inserir a l’usuari ALUMNE sobre la tercera i quarta vista.
    GRANT INSERT,SELECT ON clisanta TO 'ALUMNE1'@'localhost'; 
    GRANT INSERT,SELECT ON cuper TO 'ALUMNE1'@'localhost';
  10. Comprova si l’usuari ALUMNE pot modificar el nom dels clients amb la tercera vista.
    UPDATE clisanta
    SET NOM="TKB_SPORT_SHOP"
    WHERE NOM="TKB SPORT SHOP";
    NO podrá, no s'han donat permisos d'UPDATE (modificar).
  11. Dona-li permisos per a què sigui possible.
    GRANT UPDATE (NOM) ON clisanta TO 'ALUMNE1'@'localhost';
    UPDATE clisanta
    SET NOM="TKB_SPORT_SHOP"
    WHERE NOM="TKB SPORT SHOP";
    Ara será posible

EL SISTEMA DE PRIVILEGIS D'ACCÉS


  1. Connecteu-vos com a root. Mostreu tots els usuaris que hi ha en el SGBD actualment.
    SELECT User FROM mysql.user GROUP BY user;
  2. Creació d'un DBA, anomenat dba1. Amb permisos per a fer qualsevol cosa. dba1 ha de poder connectar-se desde qualsevol màquina, apart de la pròpia màquina. Tingueu en compte que el compte anònim per defecte per a localhost té preferència en el sistema d'autenticació.CREATE USER 'dba1'@'localhost' identified by 'dba1';
    CREATE USER 'dba1'@'%' identified by 'dba1';
    GRANT ALL PRIVILEGES ON *.* TO 'dba1'@'%';
    GRANT ALL PRIVILEGES ON *.* TO 'dba1'@'localhost';
    GRANT GRANT OPTION ON *.* TO 'dba1'@'%';
    GRANT GRANT OPTION ON *.* TO 'dba1'@'localhost';
  3. Connecteu-vos com dba1 i verifiqueu que podeu accedir al catàleg de MySQL. Mostreu els privilegis que té assignats dba1@localhost i l'usuari.mysql -u dba1 -p
    show databases;
    (per als privilegis:) show grants;
    (per veure l'usuari actual: ) select current_user;
  4. Connectats com dba1 creeu una base de dades anomenada etpc. Podeu sempre saber quin es l'usuari amb el que esteu treballant des del client amb la sentència “select current_user”;
    CREATE SCHEMA etpc;
    select current_user;
  5. Creació de l'usuari1. Aquest usuari només es pot connectar des de la mateixa adreça de xarxa on està el servidor. La contrasenya serà usuari1. Li assignem el privilegi global de creació. Tingueu en compte que el compte anònim per defecte per a localhost té preferència en el sistema d'autenticació, per la qual cosa caldrà crear un usuari usuari1 per a localhost. NOTA: utilitzeu la adreça de xarxa '192.168.1.0/255.255.255.0'.
    use etpc;
    CREATE USER 'usuari1'@'localhost' identified by 'usuari1';
    CREATE USER 'usuari1'@'192.168.1.0/255.255.255.0' identified by 'usuari1';
    GRANT CREATE ON etpc.* TO 'usuari1'@'localhost';
    GRANT CREATE ON etpc.* TO 'usuari1'@'192.168.1.0/255.255.255.0';
  6. Creació de l'usuari2. Aquest usuari només es pot connectar des de la IP de classe C 192.168.1.10. Inicialment no assignarem cap contrasenya d'accés. No li assignem cap permís, només el de connexió. Tingueu en compte que el compte anònim per defecte per a localhost té preferència en el sistema d'autenticació, per la qual cosa caldrà crear un usuari usuari2 per a localhost.
    use etpc;
    CREATE USER 'usuari2'@'localhost';
    CREATE USER 'usuari2'@'192.168.1.10';
    GRANT USAGE ON etpc.* TO 'usuari2'@'localhost';
    GRANT USAGE ON etpc.* TO 'usuari2'@'192.168.1.10';
  7. Assignació/canvi de la contrasenya de l'usuari2.
    SET PASSWORD FOR 'usuari2'@'localhost' = PASSWORD('usuari2');
    SET PASSWORD FOR 'usuari2'@'192.168.1.10' = PASSWORD('usuari2');
  8. Verifiqueu els usuaris creats (host i user), els passwords assignats, i la base de dades on estan els usuaris.
    select user,host,db from mysql.db;
    select user,Password from mysql.user;
    select m.user,m.host,m.db,my.password from mysql.db m RIGHT OUTER JOIN mysql.user my using(User);
  9. Com a usuari1 creeu una taula anomenada ASI2 a la base de dades ETPC.
    create table ASI2(
        Nom char(10)
    );
  10. Com a usuari2 creeu una taula anomenada ASI1 a la base de dades ETPC. Que és el que no funciona?
    Que només tenim accés per poder veure la bd, no per fer modificacions ni crear taules.
PREGUNTES TEORIA
  1. Diferencia entre Restrict / CascadeL'opció CASCADE fa que, si un usuari que hem autoritzat, n'ha autoritzat al seu torn d'altres, que alhora poden haver fet més autoritzacions, quedin desautoritzats tots de cop.
    L'opció RESTRICT no ens permet desautoritzar un usuari sí aquest n'ha autoritzat d'altres.
  2. Quina comanda crea i dona permisos a la vegada?GRANT
  3. Defineix tres formes de crear un usuari. Com s’esborra un usuari? I com li trèiem els privilegis?
    Amb la sentencia GRANT
    GRANT SELECT, INSERT ON test.* TO 'adolfo'@'localhost' IDENTIFIED BY 'pass_adolfo';

    Amb la sentencia create user
    CREATE USER ‘usuari_prova'@'localhost' identified by 'pwd';
    Insertant en la taula user
    INSERT INTO user VALUES ('localhost','mariano',PASSWORD('pass_mariano'),'Y','Y','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','','','','',0,0,0,0);
    Per eiliminar a un usuari
    DROP USER nom_user [, nom_user] …
    Para eliminar privilegis
    REVOKE ALL ON BD.* from USER@localhost 
    1. Esborrar un usuari és el mateix que treure-li els privilegis?
      No es el mateix perque REVOKE no treu les entrades de la taula mysql.user, és a dir, no s'esborra l'usuari!!! Cal fer ús de DROP USER o DELETE per esborrar-lo.
  4. Comprova si tens usuaris “anònims” dins del teu mysql.
    Select user from mysql.user;
  5. En quina BD mysql emmagatzema la informació dels usuaris?
    mysql.user
  6. Com veiem els permisos que té un usuari?Posant show grants;
    1. Mira els teus permisos
        SHOW GRANTS;
    2. Com pot un usuari atorgar els privilegis que té?Posant GRANT OPTION;
    3. Quina diferencia hi ha entre els privilegis de taula i els privilegis de Base de dades?Que en la taula només tens accés a una taula I si tens de la base de dades pots accedir a totes les taules d'aquesta.
    4. On es guarden els privilegis de columna?mysql.columns_priv;
    5. Crea un usuari amb accés localhost amb contrasenya, comprova que pots entrar, canvia-li la contrasenya per una altra i comprova que pots entrar de nou.CREATE USER 'USUARI'@'localhost' identified by 'USUARI';
      mysql -u USUARI -p
      SET PASSWORD FOR 'USUARI'@'localhost' = PASSWORD('USUARIO');
    6. Quin permís permet crear un usuari nou sense cap privilegi?El permís USAGE a la comanda GRANT permet crear un compte sense donar-li cap privilegi
    7. Quan es recarreguen automàticament les taules de privilegis? Amb quina comanda ho podem forçar?
      Es recarreguen en la petició del client, per forçar-ho cal executar FLUSH PRIVILEGES.
    8. Com està format un compte d’usuari?
      Per un usuari, un host i posiblement una contraseña. També podem trobar permisos o privilegis.
    9. Per defecte, quan creem un usuari només amb el nom del user, amb quin Host es crea?
      Será % = 'usuari'@'%'
    10. Per defecte, al entrar al mysql només amb el nom del user, amb quin Host entrem?
      Entrem com a localhost, tot i que després de realitzar unes proves, si la creació d'un usuari extern es fa amb el mateix nom que la d'un usuari intern i es crea abans, accedirem amb l'usuari extern.


    Cap comentari :

    Publica un comentari a l'entrada