mysqladmin è un comando di utilità che viene installato automaticamente con il server MySQL ed è utilizzato dagli amministratori di Database per eseguire alcune operazioni di base su MySQL in modo semplice ed intuitivo come settare o cambiare la password di root, monitorare i processi mysql, settare i privilegi, verificare lo stato del server, ecc..
In questo articolo vedremo alcuni utili comandi di ‘mysqladmin‘ utilizzati giornalmente dai sistemisti per le verifiche di routine. E’ necessario che il server MySQL sia già installato nel sistema per poter eseguire queste operazioni.
Cambiare la password di root di MySQL
Se si ha la necessità di cambiare la password root di MySQL basterà digitare il seguente comando (123456 è la vecchia password)
# mysqladmin -u root -p123456 password 'NewRootPassword'
Per poter velocizzare le operazioni di controllo e verifica e fare in modo che il comando mysqladmin non richieda la password ogni volta che lo eseguiamo possiamo utilizzare un file di configurazione nella root directory dell’utente amministratore nel seguente modo.
Creiamo un file denominato .my.cnf nella directory /root:
# vim ~/.my.cnf
Una volta aperto l’editor incolliamo all’interno le seguenti direttive:
[.my.cnf] [client] user=root password=NewRootPassword
dove al posto di NewRootPassword va inserita la nuova password MySQL appena impostata, quindi salviamo il file e usciamo dall’editor digitando da terminale:
:x
A questo punto saremo in grado di collegarci al server mysql con utente amministratore senza che ci sia richiesta la password
Da ora in poi non specificheremo nessun utente o password nei comandi in quanto verranno utilizzati quelli del file di configurazione appena creato.
Verificare se il server MySQL è attivo
È possibile verificare se il servizio MySQL è attivo nel server con il seguente comando:
# mysqladmin ping mysqld is alive
Verificare l’attuale versione di MySQL installata nel server
Il seguente comando mostrerà la versione installata di MySQL e lo stato corrente dei processi:
# mysqladmin version mysqladmin Ver 8.42 Distrib 5.6.23, for Linux on x86_64 Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Server version 5.6.23 Protocol version 10 Connection Localhost via UNIX socket UNIX socket /var/lib/mysql/mysql.sock Uptime: 3 days 7 hours 55 min 12 sec Threads: 1 Questions: 1703425 Slow queries: 0 Opens: 3749 Flush tables: 1 Open tables: 3652 Queries per second avg: 5.920
Verificare lo stato attuale del server MySQL
Il comando ci mostrerà lo stato attuale del server, l’uptime, i thread e le query in corso
# mysqladmin status Uptime: 287960 Threads: 1 Questions: 1706800 Slow queries: 0 Opens: 3750 Flush tables: 1 Open tables: 3653 Queries per second avg: 5.927
Verificare lo stato attuale di tutte le Variabili MySQL e il loro valore
Per verificare il valore e lo stato di tutte le variabili impostate nel server MySQL digitare il seguente comando (per questioni di spazio non incolleremo tutto l’output:
# mysqladmin extended-status +-----------------------------------------------+-------------+ | Variable_name | Value | +-----------------------------------------------+-------------+ | Aborted_clients | 163 | | Aborted_connects | 347 | | Binlog_cache_disk_use | 0 | | Binlog_cache_use | 0 | | Binlog_stmt_cache_disk_use | 0 | | Binlog_stmt_cache_use | 0 | | Bytes_received | 276376492 | | Bytes_sent | 6075862325 | | Com_admin_commands | 501 | | Com_assign_to_keycache | 0 | | Com_alter_db | 4 | | Com_alter_db_upgrade | 0 | | Com_alter_event | 0 | | Com_alter_function | 0 | | Com_alter_procedure | 0 | | Com_alter_server | 0 | | Com_alter_table | 11 | | Com_alter_tablespace | 0 | | Com_alter_user | 0 | | Com_analyze | 0 | | Com_begin | 16058 | | Com_binlog | 0 | | Com_call_procedure | 0 | | Com_change_db | 19900 | | Com_change_master | 0 | | Com_check | 14 | | Com_checksum | 0 | | Com_commit | 16060 | | Com_create_db | 23 | | Com_create_event | 0 | | Com_create_function | 0 | | Com_create_index | 0 | | Com_create_procedure | 0 | | Com_create_server | 0 | | Com_create_table | 589 | | Com_create_trigger | 0 | | Com_create_udf | 0 | | Com_create_user | 0 | .......
Visualizzare il valore delle variabili di MySQL
Questo comando è molto utile e ci permetterà di visualizzare il valore impostato per le variabili MySQL:
# mysqladmin variables +-----------------------------------------+--------------------------------+ | Variable_name | Value | +-----------------------------------------+--------------------------------+ | auto_increment_increment | 1 | | auto_increment_offset | 1 | | autocommit | ON | | automatic_sp_privileges | ON | | back_log | 50 | | basedir | /usr | | big_tables | OFF | | binlog_cache_size | 32768 | | binlog_direct_non_transactional_updates | OFF | | binlog_format | STATEMENT | | binlog_stmt_cache_size | 32768 | | bulk_insert_buffer_size | 8388608 | | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | | collation_connection | latin1_swedish_ci | +-----------------------------------------+--------------------------------+
Visualizzare i processi attuali del server MySQL
Questo è uno dei comandi più utili per verificare i processi correnti nel server, spesso utilizzato per individuare problematiche relative a overload a causa di query sql. L’opzione -i 1 permetterà di eseguire il controllo ogni secondo.
# mysqladmin processlist -i 1 +-------+------+-----------+----+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +-------+------+-----------+----+---------+------+-------+------------------+ | 48147 | root | localhost | | Query | 0 | init | show processlist | +-------+------+-----------+----+---------+------+-------+------------------+ +-------+------+-----------+----+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +-------+------+-----------+----+---------+------+-------+------------------+ | 48147 | root | localhost | | Query | 0 | init | show processlist | +-------+------+-----------+----+---------+------+-------+------------------+ +-------+------+-----------+----+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +-------+------+-----------+----+---------+------+-------+------------------+ | 48147 | root | localhost | | Query | 0 | init | show processlist | +-------+------+-----------+----+---------+------+-------+------------------+
Creazione di un database
La sintassi è molto semplice ed intuitiva:
# mysqladmin -u root -p create NomeDatabase
Eliminare un database
Stessa sintassi ma con il comando drop, in questo caso ci verrà richiesta una conferma:
# mysqladmin drop NomeDatabase Dropping the database is potentially a very bad thing to do. Any data stored in the database will be destroyed. Do you really want to drop the 'NomeDatabase' database [y/N] y Database "NomeDatabase" dropped
Ricaricare i privilegi di MySQL (reload/refresh)
Questi comandi eseguiranno rispettivamente un refresh dei privilegi e un flush delle tabelle e log attualmente aperti
# mysqladmin reload # mysqladmin refresh
Spegnere un server MySQL in modo sicuro
Eseguirà la terminazione del server MySQL
# mysqladmin shutdown
Alcune opzioni utili (flush)
- flush-hosts: Svuota tutte le infomazioni degli host dalla cache.
- flush-tables: Svuota tutte le tabelle.
- flush-threads: Svuota tutti i thread dalla cache.
- flush-logs: Svuota i logs.
- flush-privileges: Ricarica i privilegi
- flush-status: Svuota lo stato delle variabili.
# mysqladmin flush-hosts # mysqladmin flush-tables # mysqladmin flush-threads # mysqladmin flush-logs # mysqladmin flush-privileges # mysqladmin flush-status
Terminare un processo MySQL
Questo comando molto utile serve a terminare un processo che potrebbe essere nello stato Pending per troppo tempo occupando parecchie risorse. In questo caso dopo averlo individuato attraverso il comando processlist che abbiamo visto prima, basterà terminarlo utilizzando l’Id (sarà un valore numerico) corrispondente:
# mysqladmin kill Id
È anche possibile terminare più processi inserendo i vari Id separati da virgola, come ad esempio:
# mysqladmin kill 21,467,57
Eseguire più comandi di mysqladmin insieme
# mysqladmin processlist status version +--------+-----------------+-----------+------------------+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +--------+-----------------+-----------+------------------+---------+------+-------+------------------+ | 1 | eximstats | localhost | eximstats | Sleep | 7 | | | | 680844 | ufqlvlxp_dbuser | localhost | ufqlvlxp_mancini | Sleep | 0 | | | | 680845 | eamwskol_user | localhost | eamwskol_db1 | Sleep | 0 | | | | 680846 | root | localhost | | Query | 0 | init | show processlist | +--------+-----------------+-----------+------------------+---------+------+-------+------------------+ Uptime: 206471 Threads: 4 Questions: 72260175 Slow queries: 764 Opens: 788623 Flush tables: 1 Open tables: 15000 Queries per second avg: 349.977 mysqladmin Ver 8.42 Distrib 5.6.23, for Linux on x86_64 Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Server version 5.6.23 Protocol version 10 Connection Localhost via UNIX socket UNIX socket /var/lib/mysql/mysql.sock Uptime: 2 days 9 hours 21 min 11 sec Threads: 4 Questions: 72260176 Slow queries: 764 Opens: 788623 Flush tables: 1 Open tables: 15000 Queries per second avg: 349.977
Connettersi ad un server MySql remoto
Con il seguente comando potremo connetterci ad un server MySQL in un altro server
# mysqladmin -h 192.168.10.240 -u root -p
Eseguire un comando in un server remoto
Avremo anche la possibilità di eseguire comandi nel server remoto
# mysqladmin -h 192.168.10.240 -u root -p processlist
Avviare/Terminare uno Slave Replication
Se configurato uno Slave Replication è possibile avviarlo o terminarlo con i seguenti comandi:
# mysqladmin start-slave # mysqladmin stop-slave
Tutte le opzioni del comando mysqladmin
Per mostrare tutte le funzionalità di mysqladmin basterà eseguire l’pzione –help:
# mysqladmin --help
Nel nostro articolo abbiamo mostrato con vari esempi gli utilizzi più importanti di questo comando, se avete altri suggerimenti non esitate a lasciare un commento!