MySQL: operazioni base

Il seguente documento é tratto da appunti personali generati durante le mie esperienze con questo database. Le indicazioni riportate riguardano le operazioni di base necessarie per implementare mySQL (versione 5.7.30) su un SO Ubuntu 18.04 e sono valide sia nel caso si debba costruire un sistema in una macchina di sviluppo in locale, sia in un server di produzione.

Le operazioni di seguito riportate sono quelle base, ma sufficienti per usare in modo completo un database MySQL in un progetto con un’applicazione web.

Installazione

sudo apt update
sudo apt install mysql-server

Solo siamo nel server di produzione é importante installare il modulo di sicurezza:

sudo mysql_secure_installation

adesso é necessario entrare come utente root e definire la password switchando dal metodo di autenticazione di default (auth_socket) a quello: mysql_native_password:

# accesso alla shell
sudo mysql
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
mysql> FLUSH PRIVILEGES;

Per verificare la lista degli utenti con lo specifico plugin di autenticazione:

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             |                                           | auth_socket           | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

Accesso alla shell

Opzioni che abbiamo usato per il comando mysql:

  • -u (utente)
  • -p (password)
  • -h (host)
# accesso alla shell MySQL con password e come utente root
mysql -u root -p

Resettare la password utente di root

# ferma il server MySQL
sudo service mysql stop
# modalitá mysqld_safe
sudo mysqld_safe --skip-grant-tables &
# accesso senza password alla shell MySQL
mysql -u root

# setta la password per l'utente root a cui assegna tutti i privilegi per tutti i database
mysql> SET PASSWORD FOR root@'localhost' = PASSWORD('my_new_password');
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> exit;

Altri comandi utili MySQL da Shell

# mostra db esistenti
mysql> SHOW DATABASES;

# crea nuovo db
mysql> CREATE DATABASE nuovo_db;

# crea nuovo utente
mysql> CREATE USER 'nuovo_utente'@'localhost' IDENTIFIED BY 'password';

# assegna al nuovo utente tutti i privilegi per il nuovo database
mysql> GRANT ALL PRIVILEGES ON nuovo_db.* TO 'nuovo_utente'@'localhost'
mysql> FLUSH PRIVILEGES;

Import/Export

Istruioni per importare/esportare un database da/in un file dump.

# importa file.sql in un db locale:
mysql -u username -p dbname < file.sql

# importa file.sql in un server remoto (hostname):
mysql -u username -h hostname -p dbname < file.sql

# esporta db su un file locale
mysqldump -u username -p dbname > file.sql

0 commenti

Lascia un Commento

Vuoi partecipare alla discussione?
Fornisci il tuo contributo!

Leave a Reply

Your email address will not be published. Required fields are marked *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.