INDEX
- Descobrindo onde os dados são gravados
- Como alterar a base de dados padrão do MySQL
- Como ajustar a segurança do Banco de dados
- Como configurar mariadb para que permita acesso remoto
- Como criar DataBase no mariadb
- Usuários
- Variáveis de sistema do servidor mariadb
- Como o mariadb lida com letras maiúsculas e minúsculas
- Como instalar maridb
- REFERÊNCIAS
CONTEÚDO
1. Descobrindo onde os dados são gravados
-
Para saber onde os dados são gravados no mariadb usar a sequencia abaixo:
-
Entrar no cliente mysql do mariadb.
sudo mysql -u root -p
-
-
Para descobrir a pasta onde os dados são gravados executar o seguinte comando:
SELECT @@datadir;
-
Para visualizar todas as variáveis do mariadb:
show variables like "%DATA%";
-
Para sair do cliente mysql do mariadb:
quit;
2. Como alterar a base de dados padrão do MySQL
-
A pasta de dados padrão do MySQL é: /var/lib/mysql.
-
Como mudar a pasta de dados de /var/lib/mysql para : /mariadbdatadir:
-
O mariadb instalado é a ultima versão estável no momento da publicação desta dica: ubuntu_server-mate 5.4.0-60-generic.
-
A etapa abaixo só funciona se a pasta estiver na raiz /. Tentei muito fazer funcionar na pasta /home/mariadbdatadir, mais não funciona.
-
Etapas do processo:
-
Parar a execução do mariadb:
sudo systemctl stop mariadb
-
Criar pasta customizada /mariadbdatadir.
sudo mkdir /mariadbdatadir
-
Informa ao linux que o dono da pasta /mariadbdatadir é o usuário mysql:mysql.
sudo chown -R mysql:mysql /mariadbdatadir ```
-
Editar o arquivo /etc/mysql/my.cnf e aponte para o novo diretório de dados:
sudo vi /etc/mysql/my.cnf
-
Adicione no final do arquivo /etc/mysql/my.snf as linhas abaixo:
[mysqld] <br> datadir=/mariadbdatadir <br>
-
Copia todos as pastas e arquivos da pasta anterior (exceto links simbólicos) para a nova pasta:
sudo cp -vRp /var/lib/mysql/* /mariadbdatadir ```
-
Habilita mariadb:
sudo systemctl enable mariadb
-
Inicializa mariadb:
sudo systemctl start mariadb ```
-
Checa se foi inicializado:
systemctl status mariadb ```
-
Inicializa o Linux para que mariadb se ajusta as mudanças.
reboot
-
-
-
Caso ocorra mensagem de muitos arquivos aberto, entrar no arquivo abaixo e alterar o padrão:
- Arquivo /etc/systemd/system/mysql.service contém a variável LimitNOFILE=16384 que determina o número máximo de arquivos abertos.
3. Como ajustar a segurança do Banco de dados
-
mysql_secure_installation é um script de shell disponível em sistemas Unix e permite que você melhore a segurança da instalação do MariaDB das seguintes maneiras:
-
Você pode definir uma senha para contas root.
-
Você pode remover contas root que estão acessíveis de fora do host local.
-
Você pode remover contas de usuários anônimos.
-
Você pode remover o banco de dados de teste, que por padrão pode ser acessado por usuários anônimos.
-
O mysql_secure_installation pode ser invocado sem argumentos:
sudo mysql_secure_installation
-
As mensagens abaixo foi traduzida das mensagens geradas pelo script mysql_secure_installation.
-
NOTA: EXECUTAR TODAS AS PARTES DESTE SCRIPT É RECOMENDADO PARA TODO O MariaDB. SERVIDORES EM USO DE PRODUÇÃO! POR FAVOR, LEIA ATENTAMENTE CADA PASSO.
-
ETAPA PARA ALTERAR A SENHA DO ROOT
-
Para entrar no MariaDB para protegê-lo, precisaremos da senha atual do usuário root. Se você acabou de instalar o MariaDB e ainda não definiu a senha do root, a senha estará em branco, então você deve apenas pressionar Enter aqui.
Enter current password for root (enter for none):
-
Definir a senha de root garante que ninguém possa logar no usuário root do MariaDB sem a devida autorização. Se você já tem uma senha de root definida, pode responder com segurança 'n'.
# Change the root password? [Y/n] y # New password: # Re-enter new password:
-
-
ETAPA PARA EXCLUIR OU NÃO O USUÁRIO ANÔNIMO
-
Por padrão, uma instalação do MariaDB tem um usuário anônimo, permitindo que qualquer pessoa se logue no MariaDB sem ter que ter uma conta de usuário criada para eles. Destina-se apenas a teste e para tornar a instalação um pouco mais suave. Você deve removê-los antes de mudar para um ambiente de produção.
Remove anonymous users? [Y/n] y
-
ETAPA PARA EXCLUIR OU NÃO O BANCO DE DADOS TESTE
- Por padrão, MariaDB vem com um banco de dados chamado 'teste' que qualquer pessoa pode acessar. Isso também se destina apenas a teste e deve ser removido antes de mudar para um ambiente de produção.
Remove test database and access to it? [Y/n] y
-
ETAPA PARA RECARREGAR OU NÃO A TABELA DE PRIVILÉGIOS DO BANCO DE DADOS
- Recarregar as tabelas de privilégios garantirá que todas as alterações feitas até agora terão efeito imediato.
Reload privilege tables now? [Y/n] y
-
-
-
4. Como configurar mariadb para que permita acesso remoto
-
Para que todos os computadores acessem o banco de dados, edite o arquivo /etc/mysql/my.cnf e adicione no final do arquivo as linhas:
sudo vi /etc/mysql/my.cnf # em seguida adicione no final do arquivo /etc/mysql/my.cnf [mysqld] bind-address=*
-
Execute o comando abaixo no prompt do sistema para reiniciar o banco de dados mariadb:
sudo systemctl restar mariadb
-
Habilite o usuário root para acessar de qualquer computador.
-
Entrar no cliente mysql do mariadb do mariadb.
mysql -h localhost -u root -p
-
Dê permissão para que o usuário root acesse fora do localhost.
GRANT ALL ON *.* TO ‘root’@’%’ IDENTIFIED BY ‘password‘;
- Notas
- O sinal % significa “qualquer IP”, ou seja, indica que o usuário pode acessar o banco de dados em qualquer máquina da rede.
- Para habilitar o acesso apenas para um único IP, substitua o sinal % pelo IP desejado, assim somente a máquina com o IP indicado poderá conectar o servidor.
- Notas
-
Para sair do cliente mysql:
quit;
-
5. Como criar DataBase no mariadb
-
Entrar no cliente mysql do mariadb do mariadb.
sudo mysql -u root -p
-
Cria o banco de dados nomeDataBase:
CREATE DATABASE nomeDataBase;
-
Para visualizar todos os DATABASES:
SHOW DATABASES;
-
Para selecionar o banco de dados criado (nomeDataBase) executar comando:
USE nomeDataBase;
-
Para visualizar as tabela do database selecionado:
show tables
-
-
Sintaxe:
SHOW CHARACTER SET [LIKE 'pattern' | WHERE expr]
-
Exemplo:
-
Para checar a lista de opções de tipo de caractere e default collation em latin:
show character set like 'latin%'
-
-
-
Definir conjuntos de caracteres e agrupamentos:
-
Exemplo:
- Para não distingue letras minúsculas e maiúsculas e nem caracteres acentuados e com cedilha, ou seja, o registro que contém a palavra “Intuição” será retornado quando houver uma procura pela palavra “intúicao
ALTER DATABASE nomeDataBase CHARACTER SET = 'latin1' COLLATE = 'latin1_swedish_ci';
-
-
Tabela Esquema de Informação SCHEMATA:
-
Exemplo:
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA\G
-
Para sair do cliente mysql:
quit;
-
-
Obs: O nome do banco de dados usa o mesmo estilo de nomes da linguagem c++, ou seja maiúsculas e minusculas são diferentes, porém é possível mudar o padrão mudando a variável lower_case_table_names=1 em /etc/mysql/my.cnf .
6. Usuários
6.1 Adicionando usuários
6.1.1 Como adicionar usuários ao banco de dados
-
Entrar no cliente mysql do mariadb do mariadb:
sudo mysql -h localhost -u root -p
-
Para GRANT ALL conceder privilégios a um user, permitindo que o usuário controle total sobre um determinado database se tiver no localhost, use a seguinte sintaxe:
-
Sintaxe:
GRANT ALL PRIVILEGES ON database_name.* TO 'user_name'@'localhost';
-
Exemplo:
GRANT ALL PRIVILEGES ON Db_BlogPsspAppBr.* TO 'Use_BlogPsspAppBr'@'localhost';
-
Para criar o usuário "User_BlogPsspAppBr" com permissão de acesso a qualquer computador:
CREATE USER 'User_BlogPsspAppBr'@'%' IDENTIFIED BY 'senha';
-
-
Para criar o usuário "User_BlogPsspAppBr" com privilégio de administrador, porém só pode acessar o banco de dados pelo IP:"192.168.15.5":
GRANT ALL PRIVILEGES ON *.* TO 'BlogPsspAppBr''@''192.168.15.5' IDENTIFIED BY 'password' WITH GRANT OPTION; FLUSH PRIVILEGES;
-
Para visualizar todos os usuários cadastrados:
SELECT User FROM mysql.user;
-
Para sair do cliente mysql:
quit;
6.1.2 Como saber os privilégios dos usuários
-
Entrar no cliente mysql do mariadb:
sudo mysql -h localhost -u root -p SELECT User, Host FROM mysql.user WHERE Host <> 'localhost';
-
Para sair do cliente mysql:
quit;
6.2 - Excluindo usuários
- O DROP USER extrato remove uma ou mais contas MariaDB. Ele remove linhas de privilégios para a conta de todas as tabelas de permissões. Para usar esta instrução, você deve ter o privilégio global CREATE USER ou o privilégio DELETE para o banco de dados mysql. Cada conta é nomeada usando o mesmo formato do CREATE USER extrato; por exemplo 'jeffrey'@'localhost',. Se você especificar apenas a parte do nome de usuário do nome da conta, uma parte do nome do host de '%'será usada. Para obter informações adicionais sobre como especificar nomes de contas, consulte CREATE USER.Observe que, se você especificar uma conta que está conectada no momento, ela não será excluída até que a conexão seja fechada. A conexão não será fechada automaticamente.
-
Exemplo:
-
Entrar no cliente mysql do mariadb:
sudo mysql -h localhost -u root -p
-
Apaga o usuário:
DROP USER Nome_do_usuário;
-
Para sair do cliente mysql:
quit;
-
-
7. Variáveis de sistema do servidor mariadb
-
Como visualizar todas as variáveis de servidor mariadb:
sudo mysqld --verbose --help
-
Para ver os valores que um servidor usa com base apenas em seus padrões compilados, ignorando as configurações em qualquer arquivo de opção, use este comando:
sudo mysqld --no-defaults --verbose --help
-
Opções de inicialização para o mysqld.
- Todas as opções de mysqld.
- Os parâmetros do mariadb-server está no arquivo /etc/mysql/my.cnf.
- Exemplos de configurações customizadas:
- [mysqld]
- lower_case_table_names=1 //[Os nomes de variáveis e tabelas usam o padrão windows]
- datadir =/mysql //A pasta com os dados
- [mysqld]
- Exemplos de configurações customizadas:
8. Como o mariadb lida com letras maiúsculas e minúsculas
-
Sensibilidade do Identificador de Caso:
- No MySQL, os bancos de dados correspondem a diretórios dentro do diretório de dados. Cada tabela em um banco de dados corresponde a pelo menos um arquivo no diretório do banco de dados (e possivelmente mais, dependendo do mecanismo de armazenamento). Os gatilhos também correspondem a arquivos. Consequentemente, a distinção entre maiúsculas e minúsculas do sistema operacional subjacente desempenha um papel na distinção entre maiúsculas e minúsculas do banco de dados, tabela e nomes de gatilhos. Isso significa que esses nomes não diferenciam maiúsculas de minúsculas no Windows, mas na maioria das variedades do Unix. Uma exceção notável é o macOS, que é baseado em Unix, mas usa um tipo de sistema de arquivos padrão (HFS +) que não faz distinção entre maiúsculas e minúsculas. No entanto, o macOS também oferece suporte a volumes UFS, que diferenciam maiúsculas de minúsculas, assim como em qualquer Unix. Vejo Seção 1.7.1, “Extensões MySQL para SQL padrão” . A lower_case_table_names variável do sistema também afeta como o servidor lida com a diferenciação de maiúsculas e minúsculas do identificador, conforme descrito posteriormente nesta seção.
-
O modo como os nomes das tabelas e bancos de dados são armazenados no disco e usados no MySQL é afetado pela lower_case_table_names variável do sistema. lower_case_table_names pode assumir os valores mostrados na tabela a seguir. Esta variável não afeta a diferenciação de maiúsculas e minúsculas dos identificadores de gatilho. No Unix, o valor padrão lower_case_table_names é 0. No Windows, o valor padrão é 1.No macOS, o valor padrão é 2.lower_case_table_names só pode ser configurado ao inicializar o servidor. lower_case_table_names é proibido alterar a configuração após a inicialização do servidor.
- Valores da variável lower_case_table_names.
-
0 (zero)
- Os nomes de tabelas e bancos de dados são armazenados no disco usando as letras maiúsculas especificadas na instrução CREATE TABLE ou CREATE DATABASE. As comparações de nomes diferenciam maiúsculas de minúsculas. Você não deve definir esta variável como 0 se estiver executando o MySQL em um sistema que tenha nomes de arquivo que não diferenciam maiúsculas de minúsculas (como Windows ou macOS). Se você forçar essa variável para 0 --lower-case-table-names = 0 em um sistema de arquivos que não faz MyISAM distinção entre maiúsculas e minúsculas e acessar nomes de tabelas usando diferentes maiúsculas e minúsculas , o índice poderá ser corrompido.
-
1 (um) Obs: Penso que o ideal é não diferenciar maiúsculas de minúsculas.
- Os nomes das tabelas são armazenados em letras minúsculas no disco e as comparações de nomes não diferenciam maiúsculas de minúsculas. O MySQL converte todos os nomes de tabelas em letras minúsculas no armazenamento e na pesquisa. Esse comportamento também se aplica a nomes de banco de dados e aliases de tabela.
-
2 (dois)
- Os nomes de tabelas e bancos de dados são armazenados em disco usando letras maiúsculas especificadas na instrução CREATE TABLE ou CREATE DATABASE, mas o MySQL os converte em minúsculas na pesquisa. As comparações de nomes não diferenciam maiúsculas de minúsculas. Isso funciona apenas em sistemas de arquivos que não fazem distinção entre maiúsculas e minúsculas! InnoDB nomes de tabelas e nomes de visualizações são armazenados em letras minúsculas, assim como para lower_case_table_names=1.
-
- Valores da variável lower_case_table_names.