Página 1 de 2

MySQL: conexão com MariaDB em rede

Enviado: 12 Fev 2023 01:04
por cjp
Pessoal, gostaria de saber se teria como acessar um banco de dados MySQL em um provedor na internet, conectando pelo MariaDB instalado em um computador da rede, não no próprio computador que está acessando.
Explico: num mesmo ambiente tenho 5 computadores, 3 deles têm o MariaDB instalado; os outros dois não têm, e não consigo instalar (não sou o administrador do Windows e o administrador não me autoriza instalar nada neles). Mas preciso do meu sistema funcionando nos 5 computadores. Então, gostaria de saber se tem como fazer meu sistema funcionar nesses dois computadores que não têm o MariaDB instalado, usando o MariaDB dos demais computadores. Os 5 computadores estão numa mesma rede, e têm acesso um ao outro.
Alguém saberia me dizer como fazer isso?

MySQL: conexão com MariaDB em rede

Enviado: 12 Fev 2023 11:07
por JoséQuintas
cjp escreveu: não consigo instalar (não sou o administrador do Windows e o administrador não me autoriza instalar nada neles).
O administrador que instale uai.
Se ele não conhece MariaDB, que instale o ODBC do MySQL.
Instalar ODBC é algo relativamente normal, se não pode, ele que forneça outra alternativa.

Vai saber que outras limitações ele colocou nesses computadores...

Senão... pode sair quebrando a cabeça à toa.

Alguém pode sugerir:
LetToDB, hbMySQL, SQLMIX, o raio que o parta....
Mas se ele impedir ODBC MySQL, que é comum, vai impedir todo resto que não são comuns.

Ou sei lá....
Faça um programa de instalação do seu programa, que instala o ODBC MySQL.
Será que assim ele permite?
Ou vai impedir rodar a instalação do seu aplicativo?
Aí basta avisar o chefe dele, que ele não autoriza instalar o seu aplicativo, e o problema deixa de ser seu.

MySQL: conexão com MariaDB em rede

Enviado: 16 Fev 2023 22:28
por cjp
A questão não é especificamente com MariaDB ou qualquer outro. É só uma política geral de proibir qualquer programa, sem uma razão específica. Serviço público é complicado.
Enfim, é possível usar a conexão já instalada na rede?

MySQL: conexão com MariaDB em rede

Enviado: 17 Fev 2023 07:04
por JoséQuintas
Ele deixa instalar seu programa, certo?
Então crie o instalador do seu programa que já instala odbc mysql.

MySQL: conexão com MariaDB em rede

Enviado: 17 Fev 2023 07:50
por cjp
Não, ele não deixa instalar absolutamente nada.
Mas o meu programa não precisa ser instalado. Eu apenas copio a pasta inteira do programa e executo onde quiser. E não tem problema algum rodar meu programa lá.
O único problema é o que precisa ser instalado, como é o caso do ODBC (MariaDB ou qualquer outro). Daí ele não deixa instalar.
Por isso eu tive a ideia de usar o que já está instalado na rede, se isso for possível. Seria algo como usar \\outramaquina\c\arquivos de programa\ODBC_MariaDB na linha de conexão. É possível? Como exatamente?

MySQL: conexão com MariaDB em rede

Enviado: 17 Fev 2023 08:27
por JoséQuintas
Não é possível.

Mas e se o seu programa fosse desenvolvido em uma linguagem que obriga instalação?
Eles permitiriam?
Crie uma instalação, é só não dizer pra eles que não precisa instalar.

Seu programa obriga direitos de administrador?
Se sim, instale pelo programa.

Crie alternativas, fazer o que...

MySQL: conexão com MariaDB em rede

Enviado: 17 Fev 2023 10:11
por Fernando queiroz
no meu caso eu tento fazer a coneccao com o banco de dados , ai apresento uma mensagem de falha na coneccao e falo sobre as possiveis causa e pergundo se o cliente quer instalar o ODBC do maria db , simples assim.
TELA01.jpg
quando copiar a pasta do seu aplicativo coloque uma pasta dentro com o ODBC do maria db

dentro do aplicativo eu executo assim pois tem versao compativel para windows abaixo do 10
eu mando tudo dentro do instalador, mas no seu caso mande dentro da pasta do seu aplicativo

if ConeccoesClass():new():win_OsIs10()
wapi_ShellExecute( NIL, 'OPEN', hb_Dirbase()+'mariadb-connector-odbc-3.1.11-win32.msi',,, WIN_SW_SHOWNORMAL )
else
wapi_ShellExecute( NIL, 'OPEN', hb_Dirbase()+'mariadb-connector-odbc-3.0.1-win32.msi',,, WIN_SW_SHOWNORMAL )
endif

MySQL: conexão com MariaDB em rede

Enviado: 18 Fev 2023 18:30
por ivanil
Provavelmente você deve estar usando o ADO para conexão?
Eu já passei por problema parecido, então hoje já nem conto com necessidade de mexer na máquina do cliente;

No seu caso você pode usar a lib para mysql que vem na contribuição do harbour, ligando ela ao seu projeto você fica independente de drivers, seu aplicativo conversa diretamente com o servidor; então dependendo da forma que você programa isso pode dar pouco ou muito trabalho, pois existem diferenças na sintaxe de ADO x tmysql;

grande abraço.

MySQL: conexão com MariaDB em rede

Enviado: 19 Fev 2023 06:02
por rochinha
Amiguinhos,

cjp
Talvez os instaladores que você está usando são EXE procure um instalador ODBC com extensão MSI pois por padrão estes conseguem ultrapassar esta barreira. Apesar que qualquer instalação de EXE se usar a opção Executar como Administrador costuma passar por estas barreiras.

De uma olhada nesta dica também.

MySQL: conexão com MariaDB em rede

Enviado: 19 Fev 2023 23:02
por cjp
Talvez os instaladores que você está usando são EXE procure um instalador ODBC com extensão MSI pois por padrão estes conseguem ultrapassar esta barreira. Apesar que qualquer instalação de EXE se usar a opção Executar como Administrador costuma passar por estas barreiras.
De uma olhada nesta dica também.
Acho que esta pode ser realmente a solução que eu precisava. Detalhe: eu já uso o MSI, e ele pede a senha do administrador. Com esse .bat, não pediria? Vou testar (não estou no local agora).


Provavelmente você deve estar usando o ADO para conexão?
Eu já passei por problema parecido, então hoje já nem conto com necessidade de mexer na máquina do cliente;
No seu caso você pode usar a lib para mysql que vem na contribuição do harbour, ligando ela ao seu projeto você fica independente de drivers, seu aplicativo conversa diretamente com o servidor; então dependendo da forma que você programa isso pode dar pouco ou muito trabalho, pois existem diferenças na sintaxe de ADO x tmysql;
grande abraço.
Sim, uso ADO. Esta também seria uma ótima solução, mas deixar o ADO não estava nos meus planos (acabei de terminar de mudar todo o meu sistema pra ADO, e gostei bastante). E, antes de mudar pro ADO, já precisava do conector. Este que vc mencionou não precisa? Não sei se peguei o exemplo certo, veja se é este:

Código: Selecionar todos

/*
 * MySQL DBMS test program
 *
 * Copyright 2000 Maurilio Longo <maurilio.longo@libero.it>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2, or (at your option)
 * any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; see the file LICENSE.txt.  If not, write to
 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 * Boston, MA 02110-1301 USA (or visit https://www.gnu.org/licenses/).
 *
 * As a special exception, the Harbour Project gives permission for
 * additional uses of the text contained in its release of Harbour.
 *
 * The exception is that, if you link the Harbour libraries with other
 * files to produce an executable, this does not by itself cause the
 * resulting executable to be covered by the GNU General Public License.
 * Your use of that executable is in no way restricted on account of
 * linking the Harbour library code into it.
 *
 * This exception does not however invalidate any other reasons why
 * the executable file might be covered by the GNU General Public License.
 *
 * This exception applies only to the code released by the Harbour
 * Project under the name Harbour.  If you copy code from other
 * Harbour Project or Free Software Foundation releases into a copy of
 * Harbour, as the General Public License permits, the exception does
 * not apply to the code that you add in this way.  To avoid misleading
 * anyone as to the status of such modified files, you must delete
 * this exception notice from them.
 *
 * If you write modifications of your own for Harbour, it is your choice
 * whether to permit this exception to apply to your modifications.
 * If you do not wish that, delete this exception notice.
 *
 */

#require "hbmysql"

#include "dbstruct.ch"

PROCEDURE Main( cArg )

   LOCAL oServer, oQuery2, oRow, aStru
   LOCAL oQuery

   Set( _SET_DATEFORMAT, "yyyy-mm-dd" )

   oServer := TMySQLServer():New( "localhost", "root", "" )
   IF oServer:NetErr()
      Alert( oServer:Error() )
   ENDIF

   oServer:SelectDB( "ims" )
#if 0
   oQuery := oServer:Query( "SELECT * from maga limit 10" )
   oRow := oQuery:GetRow()
#endif

   dbUseArea( .T.,, cArg, "wn", .F. )

   IF ! oServer:DeleteTable( "test" )
      Alert( oServer:Error() )
   ENDIF

   aStru := dbStruct()
   IF oServer:CreateTable( "test", aStru )
      Alert( "test created successfully" )
   ELSE
      Alert( oServer:Error() )
   ENDIF

   oQuery := oServer:Query( "SELECT C111, C116, C134 from maga limit 10" )
#if 0
   oRow := oQuery:GetRow()
#endif

   oServer:Destroy()

   DO WHILE ! wn->( Eof() )

      oQuery2 := oServer:Query( "SELECT * from test where CODF='" + wn->CODF + "' and CODP='" + wn->CODP + "'" )

      IF oQuery2:LastRec() > 0

         ? "found "

         oRow := oQuery2:GetRow()

         oRow:FieldPut( oRow:FieldPos( "GIACENZA" ), oRow:FieldGet( oRow:FieldPos( "GIACENZA" ) ) + wn->GIACENZA )
         oRow:FieldPut( oRow:FieldPos( "ACQGR" ), oRow:FieldGet( oRow:FieldPos( "ACQGR" ) ) + wn->ACQGR )
         oRow:FieldPut( oRow:FieldPos( "ACQDI" ), oRow:FieldGet( oRow:FieldPos( "ACQDI" ) ) + wn->ACQDI )

         IF ! oQuery2:Update( oRow )
            Alert( oQuery2:Error() )
         ENDIF
      ELSE
         ? wn->CODF + " " + wn->CODP

         oRow := oQuery:GetBlankRow()

         oRow:FieldPut( oRow:FieldPos( "CODF" ), wn->CODF )
         oRow:FieldPut( oRow:FieldPos( "CODP" ), wn->CODP )
         oRow:FieldPut( oRow:FieldPos( "GIACENZA" ), wn->GIACENZA )
         oRow:FieldPut( oRow:FieldPos( "DATA" ), wn->DATA + 365 * 100 )
         oRow:FieldPut( oRow:FieldPos( "ACQGR" ), wn->ACQGR )
         oRow:FieldPut( oRow:FieldPos( "ACQDI" ), wn->ACQDI )

         IF ! oQuery:Append( oRow )
            Alert( oQuery:Error() )
         ENDIF
      ENDIF

      wn->( dbSkip() )

   ENDDO

   wn->( dbCloseArea() )

   RETURN

no meu caso eu tento fazer a coneccao com o banco de dados , ai apresento uma mensagem de falha na coneccao e falo sobre as possiveis causa e pergundo se o cliente quer instalar o ODBC do maria db , simples assim.
quando copiar a pasta do seu aplicativo coloque uma pasta dentro com o ODBC do maria db
dentro do aplicativo eu executo assim pois tem versao compativel para windows abaixo do 10
eu mando tudo dentro do instalador, mas no seu caso mande dentro da pasta do seu aplicativo
if ConeccoesClass():new():win_OsIs10()
wapi_ShellExecute( NIL, 'OPEN', hb_Dirbase()+'mariadb-connector-odbc-3.1.11-win32.msi',,, WIN_SW_SHOWNORMAL )
else
wapi_ShellExecute( NIL, 'OPEN', hb_Dirbase()+'mariadb-connector-odbc-3.0.1-win32.msi',,, WIN_SW_SHOWNORMAL )
endif
Mas daí vai precisar instalar, né? O administrador do TI não permite instalar nada. Assim não vai resolver.

Não é possível.
Mas e se o seu programa fosse desenvolvido em uma linguagem que obriga instalação?
Eles permitiriam?
Crie uma instalação, é só não dizer pra eles que não precisa instalar.
Seu programa obriga direitos de administrador?
Se sim, instale pelo programa.
Crie alternativas, fazer o que...
Não, eles não permitiriam. Como eu disse, eles não permitem instalar absolutamente nada.
Criar alternativas é o que estou tentando aqui.

MySQL: conexão com MariaDB em rede

Enviado: 20 Fev 2023 12:35
por rochinha
Amiguinhos,

Para acionar o modo administrador de meu sistema para instalar OCX/DLL em máquina com segurança avançada eu uso esta função modificada:

Código: Selecionar todos

ShellExecuteAsAdmin( "cmd.exe", "RUNAS", "", "C:\", 1 )}

Código: Selecionar todos

#pragma BEGINDUMP
        #include <windows.h>
        #include <hbapi.h>
        // ShellExecute( cFile, cOperation, cParams, cDir, nFlag )
        HB_FUNC( SHELLEXECUTEASADMIN )
        {
        hb_retnl( (LONG) ShellExecute( GetActiveWindow(),
                  ISNIL(2) ? NULL : (LPCSTR) hb_parc(2),
                  (LPCSTR) hb_parc(1),
                  ISNIL(3) ? NULL : (LPCSTR) hb_parc(3),
                  ISNIL(4) ? "C:\\" : (LPCSTR) hb_parc(4),
                  ISNIL(5) ? 1 : hb_parni(5) ) ) ;
        }
#pragma ENDDUMP
No lugar de "cmd.exe" coloque o hb_Dirbase()+'mariadb-connector-odbc-3.1.11-win32.msi'

Não uso a wapi_ShellExecute. Se sua função wapi_ShellExecute() aceitar wapi_ShellExecute( NIL, 'RUNAS'... talvez ele eleve o acionamento do comando.

MySQL: conexão com MariaDB em rede

Enviado: 23 Fev 2023 16:31
por cjp
De uma olhada nesta dica também.
Testei agora esta dica, mas ele continua pedindo a senha de administrador.

Para acionar o modo administrador de meu sistema para instalar OCX/DLL em máquina com segurança avançada eu uso esta função modificada:
Testei esta opção, não sei se fiz errado, mas ele não acha shellexecuteasadmin.

Tentei de duas formas: 1) salvei este teu código num .bat para executar, e daí ele não acha shellexecuteasadmin; 2) tentei salvar este teu código num .prg, mas daí não compila.

Pode me ajudar?

MySQL: conexão com MariaDB em rede

Enviado: 23 Fev 2023 18:05
por rochinha
Amiguinhos,

cjp
Compilei o pequeno comando:

Código: Selecionar todos

#include "fivewin.ch"

FUNCTION main( cFile, cOperation, cParams, cDir, nFlag )
   ShellExecuteAsAdmin( cFile, cOperation, cParams, cDir, 1 )
   RETURN nil

#pragma BEGINDUMP
        #include <windows.h>
        #include <hbapi.h>

        HB_FUNC( SHELLEXECUTEASADMIN )
        {
        hb_retnl( (LONG) ShellExecute( GetActiveWindow(),
                  ISNIL(2) ? NULL : (LPCSTR) hb_parc(2),
                  (LPCSTR) hb_parc(1),
                  ISNIL(3) ? NULL : (LPCSTR) hb_parc(3),
                  ISNIL(4) ? "C:\\" : (LPCSTR) hb_parc(4),
                  ISNIL(5) ? 1 : hb_parni(5) ) ) ;
        }
#pragma ENDDUMP
Baixe deste link

Madei o aplicativo Quick User Manager se executado como administrador tem uma opção que desabilita momentaneamente o pedido de senha do usuario. Só não sei se ao reabilitar o pedido de senha a mesma volta ao padrão. Teste em sua maquina antes.

MySQL: conexão com MariaDB em rede

Enviado: 23 Fev 2023 18:24
por cjp
Precisa da fivewin.ch? Não uso, e não estou achando aqui. Como faço?

MySQL: conexão com MariaDB em rede

Enviado: 23 Fev 2023 18:33
por JoséQuintas
Esquece.
Só estão passando coisas que vão pedir senha do administrador do mesmo jeito.

Executar como administrador: vai pedir senha de administrador
Instalador MSI: vai pedir senha de administrador pra fazer coisa de administrador
usar MSI pra instalar de forma silenciosa: vai pedir senha de administrador
Instalar um programa que vai permitir configurar pra não pedir senha de administrador: vai pedir senha de administrador pra instalar
Executar como administrador usando linguagem C: vai pedir senha de administrador

Sei lá o que passa na cabeça desses caras.
Parece que estão fazendo piada.