Nesta segunda parte do artigo irei demonstrar outros comandos SQL, além de mostrar como manter a integridade em suas tabelas e como tornar o seu banco de dados mais seguro.
Esta tabela é responsável por definir os acessos do usuário ao
servidor como um todo, ou seja, o que ele poderá executar no MySQL.
Vejamos a estrutura desta tabela:
OBS: como seu conteúdo é bem grande (31 linhas) vamos analisar
apenas alguns campos importantes:
Campo
Descrição
Host
Host de origem para conexão.
User
Usuário a obter o acesso.
password
senha.
Select_priv
Permissão para executar SELECTs.
Insert_priv
Permissão para executar insert.
Update_priv
Permissão para executar update.
Delete_priv
Permissão para executar delete.
Create_priv
Permissão para executar create.
Drop_priv
Permissão para executar drop table.
Reload_priv
Permissão para recarregar informações via mysqladmin reload.
Shutdown_priv
Permissão para executar shutdown no servidor.
Process_priv
Permissão para gerenciar processo no servidor.
File_priv
Permissão para ver ou gravar arquivos.
Grant_priv
Permissão para ceder seus privilégios a outros.
Index_priv
Permissão para criar índices.
Alter_priv
Permissão para executar alter table.
Show_db_priv
Permissão para executar show table.
Vamos ao trabalho!
Exemplo 1: iremos inserir um registro de usuário "jeffestanislau"
na tabela user, informando que ele pode se conectar somente do
servidor local "localhost", podendo inserir, consultar, alterar e
deletar dados.
mysql> INSERT INTO user (Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv) VALUES ('localhost', 'jeffestanislau', password('vivaolinux'), 'Y', 'Y', 'Y', 'Y');
Exemplo 2: iremos inserir um registro de usuário "jefferson" na tabela
user, informando que ele pode se conectar de qualquer host, podendo somente consultar e inserir dados.
mysql> INSERT INTO user (Host, User, Password, Select_priv, VALUES ('%', 'jefferson', password('estanislau'), 'Y', 'Y');
Como vimos, a tabela user não menciona banco de dados ou
tabelas específicas, dando assim, acesso a todo o servidor.
Veja q troquei o retorno da query
removi o $ do campo order
fiz com q o retorno da função sum, seja armazenado um um alias chamado soma
com o fetch_array, peguei as colunas q vem da query
o comando fetch cria um array e mandei o valor da coluna para
a variavel $soma
[4] Comentário enviado por ft_xavier em 17/02/2005 - 11:43h
Pessoal,
Segui os passos desse excelente artigo sobre manipulacao do mysql para criar uma databse, usuario e definir o acesso dele a somente essa database criada. Só que porem, ele ainda continua a ver as demais e ter acesso a elas. Como posso fazer pra resolver isso ???
[5] Comentário enviado por jeffestanislau em 17/02/2005 - 15:14h
ft_xavier,
Você me enviou este comentário estando na página 7, tabela user, aqui você cria o usuário para acessar o mysql como um todo...
Se quer prender o usuário em uma única tabela, você também deve criar o usuário na tbela DB, descrevendo seu nome de acesso e a tabela ao qual ele pode acessar...
[7] Comentário enviado por kl31n em 09/03/2005 - 00:15h
Ok......legal o artigo....
mas gostaria de saber tipo.....
se existem StoredProcedures no MySql
ou como o MySql trata as operações
para fazer com que realmente aconteça
o Client-Server
tipo...o sistema manda as informações e
o BG eh que grava elas e se vira com tudo.......
[8] Comentário enviado por Hernando em 03/05/2005 - 11:01h
Mais uma vez gostaria de agradece-lo pela presteza nos artigos... e acredito que assim esteje concluido o mini manual ajudando a todos que queiram ingressar no mundo do MySQL... Queria dar a dica que abra um novo artigo dizendo sobre injeção de sql para que todos que sigam esse artigo possam se previnir antes de serem prejudicados pois a má estruturação pode causar grandes danos...
[14] Comentário enviado por adilsom em 19/05/2009 - 18:59h
ola, estou com um problema, tenho um sisetma que foi feito pra mysql4, e agora preciso fazer funcionar com mysql5.
So que em uma pagina da este erro
"
Database error: Invalid SQL: SELECT SUBSTR(t1.starttime,1,10) AS day, sum(t1.sessiontime) AS calltime, sum(t1.sessionbill) AS cost, count(*) as nbcall,sum(t1.buyratecost) FROM call t1 WHERE UNIX_TIMESTAMP(t1.starttime) >= UNIX_TIMESTAMP('2009-05-19') GROUP BY SUBSTR(t1.starttime,1,10) ORDER BY day
MySQL Error: 1064 (You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'call t1 WHERE UNIX_TIMESTAMP(t1.starttime) >= UNIX_TIMESTAMP('2009-05-19') GROU' at line 1)
Database error: Invalid SQL: SELECT count(*) FROM call t1 WHERE UNIX_TIMESTAMP(t1.starttime) >= UNIX_TIMESTAMP('2009-05-19')
MySQL Error: 1064 (You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'call t1 WHERE UNIX_TIMESTAMP(t1.starttime) >= UNIX_TIMESTAMP('2009-05-19')' at line 1)
Database error: next_record called with no query pending.
MySQL Error: 1064 (You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'call t1 WHERE UNIX_TIMESTAMP(t1.starttime) >= UNIX_TIMESTAMP('2009-05-19')' at line 1)
"
Detalhe, no phpmyadmin com mysql4 faço esta busca:
SELECT substr(t1.starttime,1,10) AS day, sum(t1.sessiontime) AS calltime, sum(t1.sessionbill) AS cost, count(*) as nbcall,sum(t1.buyratecost)FROM call t1 WHERE UNIX_TIMESTAMP(t1.starttime) >= UNIX_TIMESTAMP('2009-05-19') GROUP BY SUBSTR(t1.starttime,1,10) ORDER BY day
[16] Comentário enviado por henbran em 14/12/2009 - 14:48h
Boa tarde ...!!!!
GOSTARIA DE SABER SE ALGUÉM PODERIA ME ORIENTAR SOBRE O USO DO JOIN EM 1 CONSULTA SQL.
Tenho uma tabela de maquinas e outras de uso_maquinas. Preciso de uma consulta sql que busque na tabela maquina, todas as maquinas que não estão em uso. É 1 projeto de telecentro comunitário. Trabalho com PHP, MySql/postgre (uso recursos PDO).
Olhem por favor a string de consulta:
SELECT maquina.id_maquina, maquina.num_maq
FROM maquina
RIGHT JOIN
(usotelecentro RIGHT JOIN maquina ON maquina.id_maquina = usotelecentro.id_maquina)
ON usotelecentro.dt_utc >='2009-12-14'
WHERE maquina.id_tele_centro = 2
1º) campos a retornar os dados
2º) tabela de maquinas
3º) inicio da instrução JOIN
4º) primeira condição JOIN {se houver alguma máquina do telecentro em questão, em uso, ....}
5º) segunda condição JOIN {..., verificar se é da data atual}
6º) condição WHERE
Temos 2 tabelas, uma é a tabela fato (dados fixos) e a outra é a tabela tempo (dados inseridos conforme o uso). Usa-se o computador por 1 hora ou + e quando abre a tela para verificar quais computadores estão livres, referentes a esse telecentro, identificar se já/ou não está preenchido o campo hora_fim_de_uso.
É um projeto da prefeitura de Guarulhos - SP da qual sou programador PHP a 6 meses.
Obrigado