Differenze tra le versioni di "Mysql5"
(7 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 1: | Riga 1: | ||
− | + | = 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 '*****';" | 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 '*****';" | 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> | mysqld --log=<percorso-del-file-di-log> --user=<utente-che-esegue-il-servizio> | ||
Riga 13: | Riga 13: | ||
mysqld --log=/var/log/mysql-queries.log --user=mysql | mysqld --log=/var/log/mysql-queries.log --user=mysql | ||
− | + | == Comando di backup == | |
− | + | === di un database specifico === | |
− | mysqldump | + | mysqldump [--comments] [--disable-keys] [--hex-blob] -u <utente> -p <database> [table [...]] > <percorso-e-nome-del-file-di-backup> |
Esempio | Esempio | ||
Riga 22: | Riga 22: | ||
esegue il backup del database bacula. | 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> [...] | mysqldump --databases --comments --disable-keys --hex-blob -r <percorso-e-nome-del-file-di-backup> -u <utente> -p<password> <database1> <database2> [...] | ||
Riga 30: | Riga 30: | ||
esegue il backup dei database mysql, bacula e dotproject | esegue il backup dei database mysql, bacula e dotproject | ||
− | + | === di tutti i database === | |
− | mysqldump | + | mysqldump --all-databases --comments --disable-keys --hex-blob -r <percorso-e-nome-del-file-di-backup> -u <utente> -p<password> |
Esempio | Esempio | ||
− | mysqldump | + | 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 | 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> | mysql -u <utente> -p -D<database> [table [...]] < percorso-e-nome-del-file-di-backup> | ||
Riga 48: | Riga 49: | ||
[[Category:MySQL]] | [[Category:MySQL]] | ||
+ | == Analisi delle performance / Script di tuning == | ||
+ | Alla [https://devdev.it/ottimizzare-le-prestazioni-di-mysql-e-mariadb-mysqltuner-306/ pagina web qui indicata] è disponibile uno script perl che effettua alcune verifiche sulla istanza in esecuzione di MySQL.<br> | ||
+ | <br> | ||
+ | Lo script è archiviato alla versione corrente [https://gitlab.netsitech.com/sitech/sitech_sysadmin/-/raw/master/mysql/mysqltuner.pl anche sul repo GITLab] Sitech.<br> | ||
− | + | = Spostamento dei file del database = | |
Per spostare i file del database in una unità diversa è possibile procedere come segue: | Per spostare i file del database in una unità diversa è possibile procedere come segue: | ||
# Arrestare l'istanza di MySQL | # Arrestare l'istanza di MySQL | ||
Riga 55: | Riga 60: | ||
# Spostare i file nella nuova locazione | # Spostare i file nella nuova locazione | ||
# Avviare l'istanza del database | # 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 | ||
+ | <br> | ||
+ | == 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: | ||
+ | <syntaxhighlight lang="YAML"> | ||
+ | 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" | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | == 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.<br> | ||
+ | Per risolvere il problema è necessario aggiungere il seguente parametro alla stringa di connessione: | ||
+ | &useSSL=false | ||
+ | <br> | ||
+ | == Hibernate == | ||
+ | Aggiungere le seguenti righe al file di configurazione di Hibernate: | ||
+ | hibernate.connection.useSSL=false | ||
+ | hibernate.connection.requireSSL=false |
Versione attuale delle 10:34, 6 mar 2024
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