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
- Exemples de privilegis poden ser:
- ALL PRIVILEGES: tots els privilegis sobre l'objecte especificat.
- SELECT: [(columnes)]: consultes. Es pot concretar a quines columnes.
- INSERT: insercions.
- UPDATE [(columnes)]: modificacions. Es pot concretar a quines columnes.
- DELETE: esborrats.
- Exemples d'objecte poden ser a una taula o una vista.
- Usuaris pot ser tothom: PUBLIC, o bé una llista dels usuaris que volem autoritzar.
- 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];
- Privilegis, objecte i usuaris són els mateixos que per a la sentència GRANT.
- L'opció GRANT OPTION FOR s'usaria en el cas que volguéssim desautoritzar el dret a autoritzar (WITH GRANT OPTION).
- 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'}
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
- Crea un usuari de nom ALUMNE i amb contrasenya ALUMNE
CREATE USER 'ALUMNE'@'localhost' identified by 'ALUMNE'; - 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. - Permet que ALUMNE seleccioni les dades de la BD empresa.
GRANT SELECT ON empresa.* TO ALUMNE@'localhost'; - 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) - 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'); - L'usuari ALUMNE intenta crear un nou usuari anomenat "PROFE", pot fer-ho?
No, perque no te permís de CREATE USER. - 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) - 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.) - L'usuari ALUMNE crea un nou usuari (CAP/CAP)CREATE USER 'CAP'@'localhost' identified by 'CAP';
- 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'; - 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.) - 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'; - 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) - 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'; - 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'; - 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. - 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) - Mostrar els permisos que tenen els diferents usuaris.
GRANT GRANT OPTION ON empresa.* TO 'ALUMNE'@'localhost';
EXERCICIS DE VISTES I PRIVILEGIS
Script empresa.
- 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; - 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; - L’usuari ROOT permet control total a l’usuari ALUMNE sobre la primera vista.
GRANT ALL ON depcamps TO 'ALUMNE1'@'localhost'; - 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. - L’usuari ROOT permet seleccionar i inserir a l’usuari ALUMNE sobre la segona vista.
GRANT INSERT,SELECT ON cli TO 'ALUMNE1'@'localhost'; - 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. - 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"; - 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"; - 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'; - 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). - 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
- Connecteu-vos com a root. Mostreu tots els usuaris que hi ha en el SGBD actualment.
SELECT User FROM mysql.user GROUP BY user; - 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'; - 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; - 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; - 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'; - 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'; - 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'); - 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); - Com a usuari1 creeu una taula anomenada ASI2 a la base de dades ETPC.
create table ASI2(
Nom char(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
-
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. - Quina
comanda crea i dona permisos a la vegada?GRANT
- Defineix
tres formes de crear un usuari. Com s’esborra un usuari? I com li
trèiem els privilegis?
Amb la sentencia GRANTGRANT SELECT, INSERT ON test.* TO 'adolfo'@'localhost' IDENTIFIED BY 'pass_adolfo';
Amb la sentencia create userCREATE USER ‘usuari_prova'@'localhost' identified by 'pwd';
Insertant en la taula userINSERT 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 usuariDROP USER nom_user [, nom_user] …
Para eliminar privilegisREVOKE ALL ON BD.* from USER@localhost
-
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.
-
Esborrar un usuari és el
mateix que treure-li els privilegis?
- Comprova si tens usuaris
“anònims” dins del teu mysql.
Select user from mysql.user; - En quina BD mysql emmagatzema la informació dels usuaris?
mysql.user
- Com veiem els permisos que té un usuari?Posant show grants;
- Mira els teus permisos
SHOW GRANTS;
- Com pot un usuari atorgar els privilegis que té?Posant GRANT OPTION;
- 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.
- On es guarden els privilegis de columna?mysql.columns_priv;
- 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 -pSET PASSWORD FOR 'USUARI'@'localhost' = PASSWORD('USUARIO');
- 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
- 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. - Com està format un compte
d’usuari?
Per un usuari, un host i posiblement una contraseña. També podem trobar permisos o privilegis. - Per defecte, quan creem un
usuari només amb el nom del user, amb quin Host es crea?
Será % = 'usuari'@'%' - 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