Você está aqui: MySQL ::: Dicas & Truques ::: Gerenciamento de Contas de Usuários |
Entenda como o MySQL gerencia contas de usuários e senhasQuantidade de visualizações: 6052 vezes |
O MySQL armazena dados das contas de usuários na tabela user na base de dados mysql. Assim, a qualquer momento podemos ver quais contas estão disponíveis disparando um comando SELECT nesta tabela:---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- SELECT * FROM user; Uma conta de usuário é definida em termos do nome de usuário e a máquina ou máquinas clientes a partir da qual o usuário poderá se conectar ao servidor. Contas de usuários podem e devem ter uma senha. Há várias diferenças entre a forma que nomes de usuários e senhas são usadas pelo MySQL e aquela usada pelos sistemas operacionais. Vamos à algumas delas: a) Nomes de usuários, com o propósito de autenticação no MySQL, não possuem nenhuma relação com os nomes de usuários (logins) dos sistemas operacionais, tais como Windows, Linux, Unix, etc. No Linux, a maioria dos clientes MySQL tentam, por padrão, se conectar ao banco de dados usando o nome do usuário atualmente logado no S.O. Mas esta é apenas uma facilidade. Este comportamento padrão pode ser facilmente sobrescrito, uma vez que os programas clientes (que se conectam ao banco de dados) permitem que o nome de usuário seja especificado usando-se as opções -u ou --user. Veja um exemplo do uso da ferramenta mysql para abrir uma conexão com o banco de dados. Note o uso das opções -u e -p para informar o usuário e senha: C:\Documents and Settings\Osmar>mysql -u root -p Enter password: ********* Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 26 Server version: 5.0.67-community-nt MySQL Community Edition (GPL) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> b) Os nomes de usuários do MySQL podem ter no máximo 16 caracteres. Os nomes de usuários dos sistemas operacionais, por outro lado, podem possuir tamanhos máximos diferentes, até porque estes não estão relacionados aos nomes de usuários do MySQL. Como exemplo, os nomes de usuários do Unix são restritos a oito caracteres. Importante: O limite de tamanho nos nomes de usuários do MySQL está definido no servidor e cliente MySQL. Não há forma segura de alterar este limite modificando as definições das tabelas na base de dados mysql. Este procedimento não funcionará. c) É recomendável usarmos somente caracteres ASCII para os nomes de usuários e senhas. d) O servidor usa as senhas do MySQL armazenadas na tabela user para autenticar as conexões dos clientes usando a autenticação embutida. Essas senhas não possuem nenhuma ligação com as senhas usadas para logar no sistema operacional. Não há ligação necessária entre a senha "externa" que você usa para se logar no Windows ou Linux e a senha que você usar para acessar o servidor MySQL na mesma máquina. e) O MySQL criptografa as senhas armazenadas na tabela user usando um algorítmo próprio. Esta criptografia é a mesma que aquela implementada pela função SQL PASSWORD() mas difere daquela usada durante o processo de login no Unix. A criptografia de senhas do Unix é a mesma que aquela implementada pela função SQL PASSWORD(). Desde a versão 4.1 o MySQL emprega um método de autenticação mais forte e que tem uma melhor proteção de senhas durante o processo de conexão do que nas versões anteriores. É seguro até mesmo se os pacotes TCP/IP forem interceptados (sniffed) ou a base de dados MySQL for capturada. Em versões anteriores, mesmo se as senhas forem guardadas de forma criptografada na tabela user, conhecimento do valor da senha criptografada poderia ser usado para se conectar ao servidor MySQL. Quando instalamos o MySQL, as tabelas de permissões (grant tables) são preenchidas com um conjunto inicial de contas. A partir daí podemos adicionar, modificar ou remover contas MySQL usando instruções tais como CREATE USER, GRANT e REVOKE. |
Link para compartilhar na Internet ou com seus amigos: |
MySQL ::: Dicas & Truques ::: Joins (Junções) |
Como usar joins no MySQLQuantidade de visualizações: 11068 vezes |
As junções (joins) são ferramentas presentes na maioria dos bancos de dados que suportam SQL e são usadas quando precisamos recuperar dados de uma ou mais tabelas com base em suas relações lógicas. Desta forma, é possível combinar os registros de tais tabelas de forma a construir um "super-registro", que nos permitirá exibir relatórios mais elaborados. Para o bom entendimento de junções, vamos considerar duas tabelas: filmes e generos. Aqui nós temos uma cardinalidade de 1 x N. Um filme possui um gênero, enquanto um gênero pode abranger vários filmes. Vamos começar criando estas duas tabelas (comece com a tabela generos, já que esta não depende da tabela de filmes): Comando DLL CREATE TABLE para a tabela generos: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- CREATE TABLE generos( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, nome VARCHAR(45) NOT NULL, PRIMARY KEY(id) ) ENGINE = InnoDB; Veja agora o comando SQL para a criação da tabela de filmes: Comando DLL CREATE TABLE para a tabela filmes: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- CREATE TABLE filmes( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, titulo VARCHAR(45) NOT NULL, genero INTEGER UNSIGNED NOT NULL, PRIMARY KEY(id), CONSTRAINT fk_filmes_generos FOREIGN KEY fk_filmes_generos(id) REFERENCES generos(id) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB; Veja que a tabela filmes contém uma chave estrangeira referenciando a chave primária da tabela generos. Isso nos permite "atrelar" um filme ao seu gênero. Vá em frente e insira alguns dados em ambas as tabelas. Primeiro cadastre alguns gêneros e em seguida alguns filmes. Vejamos agora a importância dos joins. Observe o resultado de um comando DML SELECT na tabela filmes: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- SELECT * FROM filmes; id titulo genero 1 EFEITO BORBOLETA 6 2 O PENTELHO 1 3 VIAGEM MALDITA 3 Nesta query o gênero é retornado como um valor inteiro, ou seja, o valor do campo id da tabela generos. Em muitos casos este não é o comportamento que queremos. Em vez do id do gênero nós gostaríamos de exibir seu nome. Isso pode ser conseguido da seguinte forma: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- SELECT filmes.id, filmes.titulo, generos.nome FROM filmes, generos WHERE filmes.genero = generos.id; id titulo genero 1 EFEITO BORBOLETA FICÇÃO 2 O PENTELHO COMÉDIA 3 VIAGEM MALDITA TERROR Nesta query eu usei o nome completo da tabela antes do nome dos campos a serem retornados. Na prática, é comum darmos apelidos às tabelas. Veja: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- SELECT f.id, f.titulo, g.nome FROM filmes f, generos g WHERE f.genero = g.id; Neste exemplo, não usamos as palavras-chaves INNER JOIN, LEFT JOIN, RIGHT JOIN, etc. A junção está "escondida" na cláusula SELECT. Esta técnica é conhecida como "junção implícita" ou "implicit join". Veja como o mesmo resultado pode ser obtido usando a junção INNER JOIN: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- SELECT f.id, f.titulo, g.nome FROM filmes f INNER JOIN generos g ON f.genero = g.id; Veja minhas outras dicas sobre junções para aprender mais sobre INNER JOIN, LEFT JOIN, RIGHT JOIN, OUTER JOIN, FULL JOIN, etc. |
MySQL ::: Dicas & Truques ::: Data e Hora |
Como adicionar horas, dias, semanas, meses, anos, etc, ao valor de um campo DATE ou DATETIME usando a função DATE_ADD() do MySQLQuantidade de visualizações: 11215 vezes |
A função DATE_ADD() é muito útil quando precisamos adicionar horas, dias, semanas, meses, etc, ao valor de um campo do tipo DATE ou DATETIME. Esta função é composta de três partes:---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- DATE_ADD(date, INTERVAL expr unit) O argumento date deve ser do tipo DATE ou DATETIME. O argumento expr indica um número inteiro que indica a quantidade de horas, dias, meses, etc, que será usada como intervalo. O argumento unit indica a unidade a ser usada. Valores possíveis são: HOUR, DAY, WEEK, MONTH, QUARTER, YEAR, etc. Veja um exemplo no qual adicionamos 15 dias à data atual: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- SELECT DATE_ADD(NOW(), INTERVAL 15 DAY) Suponha que você tenha um campo chamado data_hora_compra do tipo DATETIME e que este campo tenha o valor 2008-03-30 02:30:15. A query: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- SELECT DATE_ADD(data_hora_compra, INTERVAL 2 MONTH) FROM tabela_estudos retornará 2008-05-30 02:30:15. |
MySQL ::: Dicas & Truques ::: Joins (Junções) |
Como agrupar dados de duas ou mais tabelas no MySQL usando LEFT JOIN (ou LEFT OUTER JOIN)Quantidade de visualizações: 14546 vezes |
A junção LEFT JOIN (ou LEFT OUTER JOIN) do MySQL é usada quando queremos agrupar dados de duas ou mais tabelas e exibir todos os registros da tabela à esquerda, mesmo que não haja correspondências (match) de registros na tabela à direita. Vamos ver um exemplo? Considere duas tabelas: jogadores e times. Um jogador pode jogar em nenhum (zero) ou um time e um time pode conter zero ou mais jogadores. Aqui a cardinalidade é de 1 x N. Comece criando a tabela de times: Comando DDL CREATE TABLE para a tabela times: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- CREATE TABLE times( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, nome VARCHAR(45) NOT NULL, PRIMARY KEY(id) ) ENGINE = InnoDB; Vá em frente e insira alguns times nesta tabela. Vamos agora criar a tabela de jogadores: Comando DDL CREATE TABLE para a tabela jogadores: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- CREATE TABLE jogadores( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, nome VARCHAR(45) NOT NULL, id_time INTEGER UNSIGNED, PRIMARY KEY(id), CONSTRAINT fk_jogadores_times FOREIGN KEY fk_jogadores_times(id_time) REFERENCES times(id) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB; Note que o campo id_time da tabela jogador aceita NULL, ou seja, como é possível haver jogadores sem times, devemos ser capazes de cadastrar os jogadores e só mais adiante definir o time a qual ele pertencerá. Veja: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- INSERT INTO jogadores VALUES(NULL, 'JORGINHO', NULL); Vá em frente e cadastre alguns jogadores (sem relacioná-los com algum time). Finalizado alguns cadastros de jogadores e times, use a instrução UPDATE para relacionar alguns jogadores com seus respectivos times (deixe alguns jogadores sem time). Veja um exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- UPDATE jogadores SET id_time = 3 WHERE id = 2; E aqui já podemos ver um exemplo da junção LEFT JOIN. Nossa tarefa é listar o id, nome do jogador e nome do time a qual ele pertence. Mas, queremos também incluir na listagem os jogadores que ainda não possuem times (o valor do campo id_time ainda é NULL). Veja: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- SELECT j.id, j.nome, t.nome FROM jogadores j LEFT JOIN times t ON j.id_time = t.id; id jogador time 1 ROBERTO CARLOS ? 2 JORGINHO CRUZEIRO 3 GUSTAVO BORGES ? 4 MARCOS ? Note que o conjunto de dados retornados inclui todos os jogadores, incluindo aqueles para os quais nenhum time foi definido ainda. |
Veja mais Dicas e truques de MySQL |
Dicas e truques de outras linguagens |
Códigos Fonte |
Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |