Come controllare se una tabella di MySQL è codificata in UTF8

Molto semplicemente eseguendo (cambiando ovviamente dbname e tablename) questa query potete capire la codifica:

select c.character_set_name
from information_schema.tables as t,
     information_schema.collation_character_set_applicability as c
where c.collation_name = t.table_collation
  and t.table_schema = "dbname"
  and t.table_name = "tablename";

Tabella in utf8

Se vi rendete conto che non è in utf8, vi basta eseguire (prima fate un backup):

ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Altrimenti se la volete in utf8mb4:

ALTER TABLE tablename CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER DATABASE databasename CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Altri suggerimenti su come fare conversioni potete trovarne qui, oppure qui.

Come importare un intero database con MySQL

Dopo aver visto come esportare un intero db con mysqldump, mi sembra logico spiegarvi come importarlo. Loggatevi prima con l’utente root:

sudo mysql -u root -p

Create un nuovo db chiamato new con:

create database new;

Poi uscite eseguendo un exit (poi premete invio). Presupponendo che ora siete nel path giusto (e che il file esportato sia dbs.sql come nell’altra guida), eseguite:

sudo mysql -u root -p new < dbs.sql

Mi raccomando aspettate che finisca tutto prima di chiudere o cambiare operazione… è un’operazione alquanto rischiosa!

Come accettare connessioni remote con MySQL e MariaDB

Dal titolo si capisce già tutto (se siete ovviamente interessati ad accettare connessioni remote) quindi non sto a dare troppi dettagli, andiamo subito alla pratica. Modificate questo file:

sudo nano /etc/mysql/my.cnf

E aggiungete al fondo (cambiando username e password ovviamente):

[client]
user=root
password=password
port=3306
socket=/var/run/mysql/mysql.sock
[mysqld]
bind-address=0.0.0.0

Notare che la porta 3306 è quella di default utilizzata da MySQL e il bind address è tutta la vostra rete locale.

Una volta salvato, riavviate il servizio con:

sudo service mysql restart

Ora provate a connettervi. Se non dovesse ancora connettersi, forzate l’apertura della porta (nel caso non abbiate riavviato) con:

sudo iptables -A INPUT -i eth0 -p tcp --destination-port 3306 -j ACCEPT

Tutto questo può esservi molto utile se utilizzate PhpStorm o altri software di gestione remota di SQL e db vari. Ed è ovviamente compatibile con Raspberry Pi e anche su tutti gli altri sistemi operativi Debian o Ubuntu.

Come fare il backup a un database MySQL con uno script Bash

Ok anche in questo caso, se volete fare il backup intero a un vostro database in MySQL, vi basterà usare questo semplice script (che in automatico vi zippa anche il file .sql creato):

sudo nano database.sh

Incollate dentro (cambiando ovviamente i vostri parametri):

#!/bin/bash

user="root"
password="pass123"
host="localhost"
db_name="mydb"
backup_path="/home"
date=`date '+%Y%m%d%H%M%S'`

mysqldump --user=$user --password=$password --host=$host $db_name > $backup_path/$db_name-$date.sql
tar -zcvf $db_name-$date.tar.gz $db_name-$date.sql

Dategli i permessi con:

sudo chmod 777 database.sh

E fatevi un bel cron job ogni mattina alle 8.00 con:

sudo crontab -e

Incollando dentro:

0 8 * * * /path/database.sh