Comandos úteis do MySQL/MariaDB

Posted on: July 24, 2020 07:43 PM

Posted by: Renato

Categories: mysql linux

Views: 26

Comandos úteis do MySQL/MariaDB  

Alguns comandos úteis de MySQLMariaDB, eu sou SysAdmin e quase não tenho a demanda de administrar banco de dados MySQL/MariaDB, porém sempre surge alguma tarefa que demande algo como: dump do banco, criar/excluir usuário, alterar permissão de usuário, migrar, acessar remoto e entre outras… Enfim é sempre um inferno lembrar dos comandos né? segue abaixo os comandos que eu mais utilizo. 🙂

Acessando o MySQL/MariaDB

Acessando localhost
mysql -u [nomedousuario] -p [senha];

# mysql -u nomedousuario -p 

Acessando remoto
mysql -u [nomedousuario] -p [senha] -h [dns ou ip 192.168.1.20];

# mysql -u nomedousuario -p -h 192.168.1.20

Gerenciamento de usuários

“Lembrando que sempre que for rodar um comando no mysql, precisa colocar ponto e virgula [;] no final de cada comando.”

Listando usuários (precisa estar logado).

mysql>  SELECT User FROM mysql.user;
+------------------+
| User             |
+------------------+
| debian-sys-maint |
| mysql.session    |
| mysql.sys        |
| gerson.carneiro  |
| root             |
+------------------+
Query OK, 0 rows affected (0.00 sec)

Listando os usuário e permissão de acesso (local/ip/todos).

 
mysql> SELECT User, Host FROM mysql.user;
+------------------+-----------+
| User             | Host      |
+------------------+-----------+
| gerson           | %         |
| linuxnaweb       | 10.8.0.5  |
| debian-sys-maint | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
Query OK, 0 rows affected (0.00 sec)

Gerenciamento de usuários

Algumas informações relevantes!
No comando DROP USER ou CREATE USER ‘gerson’@’%’; após o @ pode ser definido alguns parâmetros, como:
% => acessa de qualquer host;
localhost => para acessar somente localhost;
192.168.1.2 => para acessar de um endereço IP específico;

Criando usuário para acessar local:

mysql> CREATE USER 'nomedousuario'@'localhost' IDENTIFIED BY 'senhadousuario';
Query OK, 0 rows affected (0.00 sec)

Criando usuário para ser acessado por qualquer host:

 
mysql> CREATE USER 'nomedousuario'@'%' IDENTIFIED BY 'senhadousuario';
Query OK, 0 rows affected (0.00 sec)

Criando usuário acessar de um ip específico:

mysql> CREATE USER 'nomedousuario'@'10.8.0.5' IDENTIFIED BY 'senhadousuario';
Query OK, 0 rows affected (0.00 sec)

Alterando senha de usuário:

mysql> SET PASSWORD FOR 'teste'@'localhost' = '123456';
Query OK, 0 rows affected (0.00 sec)

Excluindo usuário:

mysql> DROP USER 'gerson'@'%';
Query OK, 0 rows affected (0.00 sec)

Ou

mysql> DELETE FROM user WHERE user = 'gerson';

Renomeando/Alterando usuário:

mysql> RENAME USER 'gerson'@'%' TO 'teste'@'127.0.0.1';

Lembrando que sempre que executar os comandos para aplicar as modificações, certifique-se que executou o comando: FLUSH PRIVILEGES;

 
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

Permissão de usuários

O MySQL/MariaDB trabalha com as seguintes permissões:

Manipulação de Dados
SELECT Somente Leitura
INSERT Inserção de Dados
UPDATE Atualização de Dados
DELETE Remoção de Dados
Manipulação de Tabelas
CREATE Criação de novas Tabelas/Bases
ALTER Modificação de Tabelas/Colunas
DROP Remocação de Tabelas/Bases

Para dar uma permissão a um usuário específico, você pode utilizar esta estrutura:

GRANT [tipo de permissão] ON [nome da base de dados].[nome da tabela] TO ‘[nome do usuário]’@'localhost’;

Permissão total em todos os bancos:

GRANT ALL PRIVILEGES ON * . * TO 'linuxnaweb'@'localhost';

Gerenciando databases

Criando database:

mysql> CREATE DATABASE nomedatadabase;
Query OK, 1 row affected (0.00 sec)

Acessando uma database:

mysql> USE nomedadatabase;
Database changed

Listando database:

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| nomedadatabase     |
+--------------------+
Query OK, 0 rows affected (0.00 sec)

Deletando database:

mysql> DROP DATABASE teste;
Query OK, 0 rows affected (0.00 sec)

Listando tabelas de uma database:

mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| engine_cost               |
| event                     |
... >> dei uma resumida, porque fica muito grande.
| user                      |
+---------------------------+
31 rows in set (0.00 sec)

Gerenciando processos no MySQL

Listando processos:

mysql> SHOW FULL PROCESSLIST\G;
*************************** 1. row ***************************
Id: 1
User: system user
Host:
db: NULL
Command: Connect
Time: 1030455
State: Waiting for master to send event
Info: NULL
*************************** 2. row ***************************
Id: 2
User: system user
Host:
db: NULL
Command: Connect
Time: 1004
State: Has read all relay log; waiting for the slave
       I/O thread to update it
Info: NULL

Listando os processos em lista:

mysql> SHOW FULL PROCESSLIST;
+----+------+-----------+-------+---------+------+----------+-----------------------+
| Id | User | Host      | db    | Command | Time | State    | Info                  |
+----+------+-----------+-------+---------+------+----------+-----------------------+
| 10 | root | localhost | mysql | Query   |    0 | starting | show full processlist |
+----+------+-----------+-------+---------+------+----------+-----------------------+
1 row in set (0.00 sec)

Listando processos em uma database específica:

mysql> SELECT * from INFORMATION_SCHEMA.PROCESSLIST where db = 'nomedadatabase';

Listando processos e ordenando com o status não “dormindo” sleep:

 
mysql> SELECT * from information_schema.processlist where COMMAND != 'Sleep'  order by time;

Matando processos:

mysql> kill 12;
Query OK, 0 rows affected (0.00 sec)

Matando todos os processos que estão ativos no momento

SELECT concat(‘KILL ‘,id,‘;’) from INFORMATION_SCHEMA.PROCESSLIST
where time > 1 and command != “sleep”

Fazendo Backup e Restore

Fazendo backup da database:
Parâmetros utilizados:
mysqldump -u [usuário] -p <senha> [nomedadatabase] > [nomedoarquivo]-$(date +%F).sql

# mysqldump -u root -p mysql > dump-$(date +%F).sql
Enter password: 
[email protected]:~# ls -lh
total 1.2M
-rw-r--r-- 1 root root 1.2M Nov 24 07:48 dump-2019-11-24.sql

Restaurando dump/backup:
Foram utilizados os mesmos parâmetros do comando acima.

# mysql -u root -p nomedadatabase < dump-2019-11-24.sql

Comando interessante! 🙂

Executar comandos no host que o mysql está instalado:
O comando system, permite que execute os comandos no host em que está instalado.

mysql> system ifconfig;
enp0s3    Link encap:Ethernet  HWaddr 08:00:27:7e:0f:dc  
          inet addr:192.168.68.108  Bcast:192.168.68.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe7e:fdc/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:21068 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6188 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:27070338 (27.0 MB)  TX bytes:566874 (566.8 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:176 errors:0 dropped:0 overruns:0 frame:0
          TX packets:176 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:13296 (13.2 KB)  TX bytes:13296 (13.2 KB)
 

É isso galera, espero que ajude, tentei reunir em um só artigo todos os comandos que são mais utilizados, mas caso falte algum que utiliza bastante no dia-dia, coloque nos comentários que eu irei incluir no artigo! 😉

Share
About Author

Renato

Developer

Add a Comment
Comments 0 Comments

No comments yet! Be the first to comment