Mysql5
Indice
MySQL 5.x - Appunti di gestione
Grant privilegi di accesso al DB
Grant fornendo l'indirizzo IP
mysql -u userLogin --password=passLogin --database=mysql -e "GRANT SELECT ON db.* TO 'user'@'172.16.0.%' IDENTIFIED BY '*****';"
Grant fornendo il FQDN
mysql -u userLogin --password=passLogin --database=mysql -e "GRANT SELECT ON db.* TO 'user'@'%.netsitech.com' IDENTIFIED BY '*****';"
Attivazione del log delle query
mysqld --log=<percorso-del-file-di-log> --user=<utente-che-esegue-il-servizio> Esempio: mysqld --log=/var/log/mysql-queries.log --user=mysql
Comando di backup
di un database specifico
mysqldump [--comments] [--disable-keys] [--hex-blob] -u <utente> -p <database> [table [...]] > <percorso-e-nome-del-file-di-backup>
Esempio mysqldump -u root -p bacula > D:\Backup\MySQL\FullBackupMySQL.sql
esegue il backup del database bacula.
di un gruppo di database
mysqldump --databases --comments --disable-keys --hex-blob -r <percorso-e-nome-del-file-di-backup> -u <utente> -p<password> <database1> <database2> [...]
Esempio mysqldump" --databases --comments --disable-keys --hex-blob -r D:\Backup\MySQL\FullBackupMySQL.sql -u root -p****** mysql bacula dotproject
esegue il backup dei database mysql, bacula e dotproject
di tutti i database
mysqldump --all-databases --comments --disable-keys --hex-blob -r <percorso-e-nome-del-file-di-backup> -u <utente> -p<password>
Esempio mysqldump --all-databases --comments --disable-keys --hex-blob -r D:\Backup\MySQL\FullBackupMySQL.sql -u root -p******
di un elenco di tabelle (note per prefisso)
mysqldump -u [user] -p databasename `echo "show tables like 'prefix_%';" | mysql -u [user] -p databasename | sed '/Tables_in/d'` > [destination-file].sql
Comando di restore
di un database specifico
mysql -u <utente> -p -D<database> [table [...]] < percorso-e-nome-del-file-di-backup>
Esempio mysql -u root -p -Dbacula < D:\Backup\MySQL\FullBackupMySQL.sql
esegue il restore del contenuto del file FullBackupMySQL.sql sul database bacula.
Analisi delle performance / Script di tuning
Alla pagina web qui indicata è disponibile uno script perl che effettua alcune verifiche sulla istanza in esecuzione di MySQL.
Lo script è archiviato alla versione corrente anche sul repo GITLab Sitech.
Spostamento dei file del database
Per spostare i file del database in una unità diversa è possibile procedere come segue:
- Arrestare l'istanza di MySQL
- Modificare tutti i riferimenti contenuti nel file di configurazione utilizzato nel lancio dell'istanza (default my.ini)
- Spostare i file nella nuova locazione
- Avviare l'istanza del database
Problemi di accesso SSL a MySQL
mysql daemon
Per verificare se il supporto a SSL è attivo, è necessario collegarsi al db:
mysql -u <username> -p
ed eseguire il comando:
SHOW VARIABLES LIKE '%ssl%';
Nel caso in cui compaiano le righe:
+---------------+-----------------+ | Variable_name | Value | +---------------+-----------------+ | have_openssl | YES | | have_ssl | YES | +---------------+-----------------+
è necessario disattivare il supporto a SSL agendo sulla configurazione del server:
/etc/mysql/mysql.conf.d/mysqld.cnf
aggiungendo la riga:
skip_ssl
e rilanciando il server:
systemctl restart mysql.service
mysql container (docker)
Per disattivare l'utilizzo di SSL, nel docker-compose (definizione dello stack) di avvio, aggiungere il parametro:
--skip_ssl
come nell'esempio seguente:
version: '3.1'
services:
mysql-test:
image: mysql:8.0
restart: always
command: --skip_ssl --default-authentication-plugin=mysql_native_password
volumes:
- mysql-test:/var/lib/mysql
environment:
- TZ=Europe/Rome
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=database-name
- MYSQL_USER=yyyyyy
- MYSQL_PASSWORD=xxxxxx
ports:
- "3306:3306"
JAVA
- javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
Il problema è causato, a partire dalla versione 5.7 del software su server (Community Edition) quando ci si collega con un client che non implementa correttamente le specifiche SSL attese durante l'handshake.
Per risolvere il problema è necessario aggiungere il seguente parametro alla stringa di connessione:
&useSSL=false
Hibernate
Aggiungere le seguenti righe al file di configurazione di Hibernate:
hibernate.connection.useSSL=false hibernate.connection.requireSSL=false