Manual ràpid MySQL / MariaDB: comandes i gestió d’usuaris

Iniciar el servei MySQL o MariaDB

sudo service mysqld start
sudo systemctl start mariadb

Configurar la contrasenya de root (primer cop)

/usr/libexec/mysql55/mysqladmin -u root password 'nova-contrasenya'
/usr/libexec/mysql55/mysqladmin -u root -h nom-del-servidor password 'nova-contrasenya'

Connexió a la base de dades

Connexió local com a root:

mysql -h localhost -u root -p

O si utilitzes MariaDB i vols accedir com a superusuari directament:

sudo mariadb

Connexió a una base de dades remota (exemple amb RDS d’AWS):

mysql -h myinstance.123456789012.us-east-1.rds.amazonaws.com -P 3306 -u mymasteruser -p

Ordres bàsiques de MySQL

  • Llistar bases de dades:
    mysql> SHOW DATABASES;
  • Crear una base de dades:
    mysql> CREATE DATABASE nom_de_la_base_de_dades;
  • Seleccionar una base de dades per treballar-hi:
    mysql> USE nom_de_la_base_de_dades;
  • Llistar taules d’una base de dades:
    mysql> SHOW TABLES;
  • Descripció de l’estructura d’una taula:
    mysql> DESCRIBE nom_de_la_taula;
  • Mostrar la creació d’una taula (inclou claus foranes):
    SHOW CREATE TABLE `nom_de_la_taula`;

Comandes d’exemple per crear i consultar dades

mysql> CREATE TABLE proves (id INT);  
mysql> INSERT INTO proves (id) VALUES (1), (2), (3);  
mysql> SELECT * FROM proves;
[/shell>

<h3>Eliminar una base de dades</h3>
[shell]DROP DATABASE nom_de_la_base_de_dades;

Sortir de la consola MySQL

quit

Importar i exportar bases de dades

  • Importar un fitxer `.sql` a una base de dades:
    sudo mysql -u root -p nom_de_la_base < /ruta/al/fitxer.sql
  • Exportar una base de dades a un fitxer `.sql`:
    sudo mysqldump -u root -p nom_de_la_base -r export.sql[/shell>
        <p>*Nota: es recomana `-r` en lloc de `>` per evitar problemes amb codificacions (accents, caràcters especials...)</p>
      </li>
    </ul>
    
    <h3>Gestió d’usuaris i permisos</h3>
    
    <ul>
      <li>Crear un usuari amb només accés de lectura:
        [shell]
    CREATE USER 'nou_usuari'@'localhost' IDENTIFIED BY 'contrasenya';
    GRANT SELECT ON *.* TO 'nou_usuari'@'localhost';
    FLUSH PRIVILEGES;
    
  • Concedir accés a una base de dades i taula des d’una IP concreta:
    GRANT SELECT ON bd2025.pellicules TO 'extern'@'79.159.6.21' IDENTIFIED BY 'contrasenya' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    
  • Consultar tots els privilegis actius:
    SELECT * FROM mysql.tables_priv;
  • Canviar l’IP associada a un usuari:
    RENAME USER 'extern'@'79.159.6.21' TO 'extern'@'nova.ip.33.45';
  • Revocar permisos:
    REVOKE SELECT ON bd2025.pellicules FROM 'extern'@'79.159.6.21';
  • Eliminar un usuari:
    DROP USER 'extern'@'79.159.6.21';

Permetre l’accés remot a MariaDB (Debian 10/11)

  1. Edita el fitxer de configuració:
    sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
  2. Canvia la línia següent:
    bind-address = 127.0.0.1

    per aquesta altra:

    bind-address = 0.0.0.0
  3. Reinicia el servei:
    sudo systemctl restart mysql.service  
    sudo systemctl restart mariadb.service  
    

Recursos útils