SQL usuaris

De Cacauet Wiki
Salta a la navegació Salta a la cerca

Per poder crear i administrar els usuaris i permisos al mysql s'ha d'entrar com a usuari root, és a dir, un superusuari amb privilegis sobre tota la base de dades. També és possible crear usuaris amb un usuari que tingui permisos administratius.


Creació d'usuaris

Abans de crear un nou usuari s'ha de tenir en compte:

  • nom de l'usuari
  • contrassenya
  • màquina des de la que es connectarà
  • permisos

Si es fa des de la línia de comandes, caldrà que entrem com a root amb:

$> mysql -u root -p -h <host_ip>

el -h <host_ip> només cal posar-ho si ens connectem al mysql des de una màquina externa, com pot ser el cas si ens connectem a un servidor.

Dintre de mysql, per crear l'usuari, farem:

mysql> CREATE USER '<usuari>'@'<màquina>' IDENTIFIED BY '<contrassenya>';
mysql> FLUSH PRIVILEGES;

OJU:

  • Els noms d'usuari, màquina i contrassenya han d'anar entre cometes simples.
  • La màquina remota des de la que ens connectem pot ser una adreça IP, localhost o '%' per qualsevol màquina.
  • La darrera instrucció "flush privileges" de vegades no és imprescindible però sol fer falta per consolidar els canvis a la base de dades interna 'mysql'.

Per exemple, per crear l'usuari "manolo" amb contrassenya "secret" i que només es connectarà des de la màquina local, executarem:

mysql> CREATE USER 'manolo'@'localhost' IDENTIFIED BY 'secret';

Si, en canvi, volem crear l'usuari "manolo" que es connecti des de qualsevol màquina, farem:

mysql> CREATE USER 'manolo'@'%' IDENTIFIED BT 'secret';

Canvi de contrassenya

Les dades dels permisos i contrassenyes estan emmagatzemades en una base de dades anomenada "mysql" a la qual només tenen accés els usuaris administradors.

Canviar la contrassenya només ho pot fer un superusuari amb l'instrucció UPDATE sobre la taula 'user' de la base de dades 'mysql'. Per exemple, si volem canviar la password de l'usuari 'manolo' quan es connecta en local, farem:

mysql> use mysql;
mysql> UPDATE user
       SET password=PASSWORD('secret')
       WHERE user='manolo' AND host='localhost';
mysql> FLUSH PRIVILEGES;

IMPORTANT:

  • Aquí sí és molt imporant fer el darrer pas "FLUSH PRIVILEGES" per fer actius els canvis a la base de dades interna 'mysql'.

Concessió de permisos

Per saber els permisos amb els que compta un usuari, executem:

mysql> SHOW GRANTS FOR '<usuari>'@'<màquina>';


Exercicis

Crea els següents usuaris amb contrassenya i persmisos indicats:

  • Usuari admin amb contrassenya admin
    • doneu-li tots els permisos sobre totes les bases de dades (*.*)
  • Usuari convidat amb contrassenya buida.
    • doneu-li permisos de lectura (SELECT) sobre una base de dades que tingueu, per exemple, la del videoclub.
  • Usuari manolo amb contrassenya manolo
    • doneu-li tots els permisos sobre totes les bases de dades que comencin per "manolo_"
  • Canvieu la contrassenya de l'usuari root per "root" (en principi ve buida)
    • Al realitzar aquest canvi el phpmyadmin deixarà de funcionar perquè la contrassenya de root ha canviat. El forçarem a que demana la contrassenya modificant l'arxiu c:\xampp\phpmyadmin\config.inc.php. Canvieu la línia on apareix la següent instrucció i poseu-la a false:
$cfg['Servers'][$i]['AllowNoPassword']      = false;


Comprovació

Un cop creats els usuaris i modicats, comproveu que podeu tornar a entrar en el phpmyadmin. Si no podeu, reviseu l'arxiu de configuració c:\xampp\phpmyadmin\config.inc.php tal i com s'ha explicat. Ara hauria de demanar-nos la contrassenya per poder entrar.

Per comprovar l'usuari convidat hem de provar des d'una altra màquina la instrucció:

mysql> mysql -u convidat -h <ip_màquina>

...i si ens deixa entrar, vol dir que l'usuari ha estat creat correctament. Per veure si heu posat correctament els permisos feu

mysql> SHOW DATABASES;

...i us hauria d'aparèixer la base de dades sobre la que heu donat permisos de lectura (SELECT). Proveu de fer una consulta aviam si funciona.