Mysql, my history (que viad....).

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

Mysql, my history (que viad....).

Mensagem por MARCELOG »

Pessoal, comecei a estudar o mysql e achei interessante.
Sempre pensei que fosse algo de outro mundo (nas livrarias era cada livro grosso de dar nó na cabeça).
Mas não é.
É até bem simples, pelo menos em relação ao meu "singelo" projeto.
Mas dizem que quem pode um tostão pode um milhão, vamos lá.
Nesse tópico, vou colocar as minhas experiências com o mysql que, de quebra, tem ajudado no aprimoramente quanto ao sistema e mesmo o conhecimento mais detalhado do hardware.
Ip fixo, Ip Dinâmico, endereço Mac, cache de arp, arquivo de hosts????
É.......... Eu tive que dar uma olhada caprichada nisso para entender o funcionamento e porque dava x ao invés de y!
Prá quem quiser acompanhar, eu fiz o seguinte.

Baixei o BCC55 e instalei;
Criei os arquivos .cfg e coloquei os mesmos no diretório \bin;
Baixei o bison e instalei;
Baixei o Mysql e instalei completo (última versão estável). Criei uma senha para o usuário root;
- Exceto quanto ao tipo de instação, que deve ser completa para criação da pasta include, e só confirmar as opções e responder "perguntas" (ingleis basicão dá e sobra);
Baixei o tortoise, instalei e configurei;
Com o tortoise, baixei o xharbour;
Copiei os arquivos .h da pasta include do mysql para o diretório contrib\mysql (do xharbour);
Executei o arquivo makallbc.bat e (tudo compilado);
Fui no firewall do WindowsXp e criei um acesso externo autorizado para a porta padrão 3036 do mysql;
- É que esta porta não tem o acesso autorizado de forma padrão pelo WindowsXp e, se você não dar acesso, não é possivel estabelecer a conexão de outro computador ou internet;
Baixei a "contribuição" do Stanis e de outros colegas no fórum (brigadão em gente!) e tô estudando;
Baixe um manual em português do mysql (1.147 fls.) e também tô estudando.

Conhecimentos adquiridos (síntese)

Uma função especial faz a conexão com o banco de dados em qualquer lugar do planeta se informados o servidor, usuário e senha correta.
É lógico que o mysql deve estar instalado nesse servidor né (dooooooooooorrrrr).
Outra função "detona" essa conexão.
O resto, pelo que eu ví, todo o resto, é possível fazer através do método query.
Basta passar ao método query o comando sql a ser executado.

Outras coisas em que esbarrei (e tive que estudar) para fazer o serviço.

Comandos

Net (config e view)
Ipconfig (\all)
Arp (*.*)

Conclusão (parcial)

A internet e bem dinâmica mesmo.

Até breve.

MarceloG
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Marcelo, vc jah viu a respeito do Mediator ? se sim o que vc acha ?

Parabens pelo seu desempenho...

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

Mensagem por MARCELOG »

No processo de instalação do aplicativo, que trás junto a do Mysql, o usuário foi advertido de que o servidor a ser utilizado é “localhost”, o usuário é “root” e senha, aquela utilizada no campo próprio da instalação do Mysql.

Ah! Também, no caso de dúvida, a instalação pede para o usuário ler o arquivo leiame.txt.

Pequeno algorítimo para o primeiro acesso.

Caso do “freguês” instalar o Mysql e usar o seu aplicativo pela primeira vez.

1) Ao ser acessado, o sistema deve obter do usuário informações relativas ao servidor, usuário e senha para conectar-se ao Mysql.
2) Com base nessas informações, tenta-se estabelecer a conexão com o Mysql.
3) Se a conexão for bem sucedida, far-se-á a verificação de existência do banco de dados a ser utilizado pelo sistema.
4) Inexistindo o banco de dados, o primeiro acesso é presumido, sendo solicitado do usuário a confirmação dessa condição.
5) Uma vez confirmado o primeiro acesso, o banco de dados e tabelas são criados.
6) Após a criação do banco de dados e tabelas, se o acesso tiver sido efetuado através do usuário padrão “root”, é solicitado do usuário a confirmação para troca do seu nome, senha e acesso, que será somente local.
É que o usuário “root” tem acesso a todos os bancos de dados e tabelas.

Interessante:

O Mysql, localmente, não acessa pelo nº de IP designado para máquina na rede (xxx.xxx.xxx.xxx), mas pelo nome “localhost” que indica (conforme especificado no arquivo hosts) o IP local padrão que é 127.0.0.1

Se você usar o utilitário ping como “ping localhost”, o número acima será usado indicando o nome da máquina corretamente mas o IP padrão.
Contudo se você usar “ping nomedamaquina” o IP designado será o informado na configuração da rede.

Legal ou estranho???

Tem mais, aguardem!

Ps: se alguém quiser se manifestar a respeito da usuário root eu gostaria.
Acho muita ganância ter o Mysql só para o meu aplicativo, mas não vejo outra forma de evitar que outros usuários, fora do sistema, possam "detonar" a base de dados.

Quer dizer.

O Mysql, para verificar o acesso, usa o db/tabela Mysql.User .
Não vi nada a respeito de acessar diretamente algo como MeuDB.MeuUser para definir acesso.
And
Usuário Nível 3
Usuário Nível 3
Mensagens: 163
Registrado em: 25 Set 2005 18:31
Localização: São Paulo/SP

Mensagem por And »

Marcelo,

Se possivel poste o link de onde baixou o manual em protuguês de mysql.

Abraços,
Anderson
Clipper 52e/Clipper 53b/Blinker 7/Vlib/Fglib/DBFNTX
_______________________________________________
Migrando para [x]Harbour 0.99.60 (SimpLex) + MiniGUI 1.2 Exp. (Build 22)
_______________________________________________
Assine o manifesto dos artistas pela preservação da amazônia.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

And:
Se quiser posso te mandar alguns em portugues....

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
And
Usuário Nível 3
Usuário Nível 3
Mensagens: 163
Registrado em: 25 Set 2005 18:31
Localização: São Paulo/SP

Mensagem por And »

Leonardo, se puder envie p/ o e-mail: and@inteligweb.com.br

Grato,
Anderson
Clipper 52e/Clipper 53b/Blinker 7/Vlib/Fglib/DBFNTX
_______________________________________________
Migrando para [x]Harbour 0.99.60 (SimpLex) + MiniGUI 1.2 Exp. (Build 22)
_______________________________________________
Assine o manifesto dos artistas pela preservação da amazônia.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Mandei....qualquer duvida prende o grito.

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
And
Usuário Nível 3
Usuário Nível 3
Mensagens: 163
Registrado em: 25 Set 2005 18:31
Localização: São Paulo/SP

Mensagem por And »

Leonardo,

Obrigado pelos arquivos, quanto ao mediator ainda não usei mas se tiver material a respeito gostaria de receber.

Grato,
Anderson
Clipper 52e/Clipper 53b/Blinker 7/Vlib/Fglib/DBFNTX
_______________________________________________
Migrando para [x]Harbour 0.99.60 (SimpLex) + MiniGUI 1.2 Exp. (Build 22)
_______________________________________________
Assine o manifesto dos artistas pela preservação da amazônia.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Tche, o Mediator é ao mesmo tempo não é uma otima solução....fiz todos os passos que o colega Janio me passou(Valeu Janio) e ainda...dei uma olhada no link abaixo...que me ajudou a tirar vairas duvidas......

https://pctoledo.org/forum/viewtopic.php?t=3566

Ponto forte.....vc não muda quase nd para usar o MYSQL....no meu caso acresentei 6 linas no incio do meu sistema...e mudei todos os DECEND, que era um total de 10 DESCEND. E é de graça....

Ponto Fraco....vc fica presso nessa LIB do mediator....e acaba deixando de lado o real aprendizado ao MYSQL, e eu não sei até quando vai ser de graça e até quando eles vão atualizar..

Obs: Me chama no MSN segunda que mando os arquivos que vc prescissa para usar o Mediator.

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
And
Usuário Nível 3
Usuário Nível 3
Mensagens: 163
Registrado em: 25 Set 2005 18:31
Localização: São Paulo/SP

Mensagem por And »

Ok.

Valeu,
Anderson
Clipper 52e/Clipper 53b/Blinker 7/Vlib/Fglib/DBFNTX
_______________________________________________
Migrando para [x]Harbour 0.99.60 (SimpLex) + MiniGUI 1.2 Exp. (Build 22)
_______________________________________________
Assine o manifesto dos artistas pela preservação da amazônia.
MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

Mensagem por MARCELOG »

Nada como um final de semana prá gente pensar né?!
Bem, a abordagem pretendida anteriormente em relação ao Mysql acho que não vai dar certo.
Assim, presumindo que o usuário instalou o Mysql corretamente, pretendo fazer o seguinte:
1) Abrir o aplicativo normalmente (com aquelas frescuras de sempre, querendo fazer o sistema parecer melhor do que é!), deixando ativas no menu apenas as opções conexão e sair.
2) O usuário clica em conexão, abre a tela para ele informar o servidor, usuário e senha.
3) Sempre usando a senha dele, tento conectar como "root" local ou remotamente (se for o caso).
4) Se conseguir há falha na segurança, então informo a situação para o usuário e peço para ele ler o manual (do meu sistema) relativamente a segurança de acesso.
Se jão não existir, crio meu db e tabelas.

-) Dúvida: Seria interessante, já que estou conectado como "root", através do sistema, possibilitar ao usuário trocar o nome desse usuário pdrão?
O que vocês acham?

MarceloG
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Nada como um final de semana prá gente pensar né?!
No meu caso se fosse só pensar tudo bem.....o prblema é que toh trabalhando todos os final de semana direto....
Assim, presumindo que o usuário instalou o Mysql corretamente, pretendo fazer o seguinte:
Tem versão que vc pode mandar junto com seu sistema....sem prescissar instalar....4.0.20a...o Nosso Colega Janio me passou e eu toh usando...quero fazer isso na ultima versão do MYSQL...jah que o MYSQL é GPL podemos distribuir ele a vontade...desde que se preserve os créditos...maiores informações em:
http://www.magnux.org/doc/GPL-pt_BR.txt
1) Abrir o aplicativo normalmente (com aquelas frescuras de sempre, querendo fazer o sistema parecer melhor do que é!), deixando ativas no menu apenas as opções conexão e sair.
2) O usuário clica em conexão, abre a tela para ele informar o servidor, usuário e senha.
3) Sempre usando a senha dele, tento conectar como "root" local ou remotamente (se for o caso).
4) Se conseguir há falha na segurança, então informo a situação para o usuário e peço para ele ler o manual (do meu sistema) relativamente a segurança de acesso.
Se jão não existir, crio meu db e tabelas.
Tche,Muito bom .........e mais uma vez parabens em dividir aqui no forum sua experiencia...
) Dúvida: Seria interessante, já que estou conectado como "root", através do sistema, possibilitar ao usuário trocar o nome desse usuário pdrão?
O que vocês acham?
Tche..seria otimo essa possibilidade ...vc jah esta fazendo isso ? se sim como vc faz ?

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

Mensagem por MARCELOG »

Já tô fazendo alguma coisa e tá ficando legal, mesmo porque estou usando a hwgui.

Se você tem o mysql 5.0 instalado (não sei se em outro vai funcionar),
compile e teste este acesso simples com uma pesquisa de usuários cadastrados.
Coloquei a pesquisa numa array para poder manipular.
Também fiz em xharbour puro.


// Não esqueça de linkar a lib mysqllib

function main()

private oConexao // para ser enxergada pelas fun‡äes inferiores

// Aqui o que vocˆ quiser chamando a fun‡Æo conexao()

cls

? "teste o Mysql - aperte uma tecla "

inkey(0)

if conexao()
pesquisa()
endif

if !empty(oConexao)
oConexao:destroy()
endif

return

function conexao()

local cServer, cUser, cPassword, lOk

// Curto circuito - para o caso de chamar mais de uma vez a fun‡Æo
if !empty(oConexao)
alert("J  existe uma conexao ativa!")
oConexao:destroy()
endif

// Define valor inicial de vari veis
cServidor := "localhost"+space(51) // tamanho m ximo 60
cUsuario := "root"+space(12) // tamanho m ximo 16
cSenha := space(16) // tamanho m ximo 16
lOk := .F.

// Pega informa‡Æo
cls

do while .t.

@ 10,03 say "Servidor: " get cServidor
@ 12,03 say "Usuario : " get cUsuario
@ 14,03 say "Senha : " get cSenha // isso deve ser mudado Password
read

if lastkey() == 27
exit
endif

oConexao := tmysqlserver():new(alltrim(cServidor),"root",alltrim(cSenha))

if !oConexao:neterr()
alert({"Acesso root","Falha na seguran‡a. Leia o manual!"})
// pode desviar para a rotina que altera o nome do usuario root
lOk := .T.
exit
else // Conexao normal
oConexao := tmysqlserver():new(alltrim(cServidor),alltrim(cUsuario),alltrim(cSenha))
if oConexao:NETERR()
Alert("Desculpe. As informa‡äes prestadas estÆo incorretas")
cServidor := "localhost"+space(51) // tamanho m ximo 60
cUsuario := "root"+space(12) // tamanho m ximo 16
cSenha := space(16) // tamanho m ximo 16
oConexao := ""
loop
endif
alert("Conexao estabelecida")
lOk := .T.
exit
endif

enddo

return lOk

function pesquisa()
// presumindo o acesso root - acesso com outro usu rio pode falhar
local oQuery, aItens, i, oRow

oQuery := oConexao:query("SELECT user,host FROM mysql.user")
// eu disse: seleciona usuario e host na tabela user do banco Mysql

// Curto circuito
if oQuery:neterr()
alert("Pesquisa falhou!")
return .F.
endif

// Define valor inicial de vari veis
aItens := {}

for i:=1 to oQuery:lastrec()
oRow := oQuery:getrow(i)
aadd(aItens,{oRow:fieldget(1),oRow:fieldget(2)})
next i

cls
// bem que poderia ser um browse com array n‚?

? "Listando usu rios do Mysql"
?
? "Inicio"
?
for i:=1 to len(aItens)
? aItens[i,1]+" "+aItens[i,2]
next i
?
? "Fim"

inkey(0)

return

continua nos próximos capítulos...

MarceloG
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Tche, Marcelo..fiz o teste e funcionou BLZ....soh que tinha uma coisa a mais...

Código: Selecionar todos

oConexao := tmysqlserver():new(alltrim(cServidor),"root",alltrim(cSenha))

if !oConexao:neterr()
alert({"Acesso root","Falha na seguran‡a. Leia o manual!"})
// pode desviar para a rotina que altera o nome do usuario root
lOk := .T.
exit
else // Conexao normal 
Foi so tirar o ! antes de oConexao:neterr() para ele dar o resultado correto...se vc tiver mais uns exemplo e quizer compartilhar com nos...tudo é bem vindo....

Grande Abraço
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Responder