ServerTutorial

Gestione di un Server Linux: guida al comando mysqladmin

mysqladmin1

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

mysqladmin2Da 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)

  1. flush-hosts: Svuota tutte le infomazioni degli host dalla cache.
  2. flush-tables: Svuota tutte le tabelle.
  3. flush-threads: Svuota tutti i thread dalla cache.
  4. flush-logs: Svuota i logs.
  5. flush-privileges: Ricarica i privilegi
  6. 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!

Lascia un commento

Back to top button