GOW

GOW

quarta-feira, 16 de fevereiro de 2022

Instalando MySQL pelo terminal Linux(Base de conhecimento)

 

Instalando MySQL pelo terminal Linux.

Para instalar o MySQL, utiliza-se o seguinte comando no seu terminal Linux para baixar o pacote do repositório "apt":

sudo apt install mysql-server

Após isto, digite o comando:

sudo mysql 

Este comando é o comando que inicialmente precisamos usar para acessar o MySQL, acessamos como "Super User" pois não temos nenhum usuário criado capaz de acessar o nosso banco ainda.

Com o comando inserido acima, aparece:

douglas@douglas:~$ sudo mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 8.0.25-0ubuntu0.20.04.1 (Ubuntu)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

agora estamos no shell do mysql, neste shell apenas comando SQL são reconhecidos.

Listar e criar um banco de dados

Dentro do shell do mysql, para listar os banco de dados presentes, use o comando:

mysql> show databases;

pressionando enter, é mostrado:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)

mysql>

estes bancos mostrados, são criados automaticamente na instalação do MySQL, o banco mais importante daqui é o 'mysql', que onde fica os usuários do bando e é o que vamos usar para listar todos os usuários do MySQL. Vamos criar um bando de dados para uma loja de livros, vamos chamar este banco de 'livraria, crie através do comando:

mysql> CREATE DATABASE livraria;

e pressione enter, use o comando 'show databases;' para ver que o novo db está presente.

Criando tabelas para o banco:

Antes de criar a tabela, precisamos 'usar' o banco que acabamos de criar, para isso use o comando:

mysql> use livraria;

e pressione enter.

Agora, criaremos uma tabela para gravar todos os livros de nossa loja, neste caso, vou criar uma tabela chamada 'livros' da seguinte forma:

mysql> create table livros(
    -> id int not null,
    -> titulo varchar(30) not null,
    -> autor VARCHAR(33) not null,
    -> preco int not null,
    -> primary key(id)
    -> );
Query OK, 0 rows affected (0.02 sec)

Perceba que não digitei todos os comandos em uma linha, a cada enter que eu pressiono, o shell do MySQL quebra a linha, tornando melhor a leitura do que você está digitando, o shell faz isso até que digite ';' no final e pressiona enter, assim ele entende que é o final do comando.

Com esta tabela, inseri os seguintes dados nela:

mysql> select * from livros;
+-----+----------------------+------------+-------+
| id  | titulo               | autor      | preco |
+-----+----------------------+------------+-------+
| 100 | Kotlin Pro Tips      | Tiago O.   |   120 |
| 101 | Java Design Patterns | Marcelo D. |   130 |
| 103 | CUDA GPGPU Computing | Tiago O.   |   143 |
+-----+----------------------+------------+-------+
3 rows in set (0.00 sec)
mysql>

Veja que mesmo sendo um programa de terminal, os comandos SQL são os mesmo usados em um front-end com GUI e é muito prático e rápido de se obter os dados do banco MySQL :).

Listar e Gerenciar Usuários

Para listar os usuários presentes use o seguinte comando dentro do shell MySQL:

SELECT user, host FROM mysql.user;

'mysql' é nome do banco padrão onde fica a tabela dos usuários, e 'user' é a tabela,

ao pressionar enter, é mostrado:

mysql> SELECT user, host FROM mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| debian-sys-maint | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
5 rows in set (0.00 sec)

Todos estes usuários são usuários padrões criados automaticamente quando instalamos o MySQL em nossa máquina Linux, nós conseguimos acessar o banco porque o MySQL cria o usuário 'root' para nós, que é o método de acesso 'Super User' ao banco, mas não devemos deixar qualquer pessoa acessar o banco ou utilizar o sistema como 'root', pois um usuário 'root/super user' tem o poder de alterar qualquer arquivo ou dado em um sistema Linux. A coluna host indica da onde o usuário acessa o bando, que no caso localhost indica que o acesso é feito da própria máquina que está instalado o MySQL.

Criando um Usuário para o Banco

Para criar um novo usuário, use este comando:

mysql> CREATE USER 'nome_usuario'@'localhost' IDENTIFIED BY 'usuario_password';

No lugar de 'nome_usuario' coloque um nome que você quiser, e em 'usuario_password' a senha do mesmo, no meu caso, vou usar 'ad_admin' como usuário e 'admin' como senha. Ao digitar o comando e pressionar Enter aparece a mensagem:

mysql> CREATE USER 'db_admin'@'localhost' IDENTIFIED BY 'admin';
Query OK, 0 rows affected (0.02 sec)
mysql>

Ao executar o comando para listar usuários, o nosso 'db_admin' agora aparece na lista:

mysql> SELECT user, host FROM mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| db_admin         | localhost |
| debian-sys-maint | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
6 rows in set (0.00 sec)

Dando permissão ao usuário criado

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

Lembre-se que ainda estamos acessando o MySQL como 'Super User', por isso conseguimos dar, remover e criar usuários pelo shell do MySQL, agora que o nosso administrador contratado tem total poder total sobre o banco mas NÃO sobre o SO, não precisamos mais logar como 'super user' para gerenciar o banco de nossa loja.

Por isso, você já pode sair do shell do MySQL pelo comando 'quit' e inserir este novo comando para logar no banco como 'db_admin':

mysql -u db_admin -p

O '-u' indica que o próximo argumento será o nome do 'user', que no caso é 'db_admin', e '-p' indica que após pressionar enter iremos iserir a senha deste 'user'.

Criando um novo usuário pelo 'db_admin'.

Como nosso 'db_admin' tem permissão para criar usuários, vamos criar um usuário para o funcionário da loja de nome 'joao_tux' de senha 'user':

CREATE USER 'douglas'@'localhost' IDENTIFIED BY 'user';
GRANT SELECT, INSERT, UPDATE ON livraria.livros TO 'douglas'@'localhost';

Neste exemplo estamos logados como 'douglas', veja que ele pode selecionar e inserir items na tabela, mas quando ele tenta deletar, dá o erro de 'command denied', pois root não deu permissão à ele para deletar dados da tabela.

mysql> select * from livraria.livros;
+----+-------------------------------+-------------+-------+
| id | titulo                        | autor       | preco |
+----+-------------------------------+-------------+-------+
|  1 | Java Programming              | GOSTLING J. |   231 |
|  2 | Data Structures               | Tiago O.    |   210 |
|  3 | OpenGL Programming With C++19 | Tiago O.    |   180 |
|  4 | CUDA Palallel Programming     | ORLANDO T.  |   130 |
|  5 | Network Programming With Java | LOPES J.    |   156 |
+----+-------------------------------+-------------+-------+
5 rows in set (0.00 sec)

mysql> use livraria;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> delete from livros where id = 1;
ERROR 1142 (42000): DELETE command denied to user 'douglas'@'localhost' for table 'livros'
mysql> insert into livros(titulo,autor, preco)
    -> values('Future Crimes', 'Marc Goodman.', 100);
Query OK, 1 row affected (0.01 sec)

Nenhum comentário:

Postar um comentário