Phpmyadmin: Conectando-se ao banco de dados phpMyAdmin remotamente usando R.

Criado em 11 mar. 2019  ·  5Comentários  ·  Fonte: phpmyadmin/phpmyadmin

Meu problema

Basicamente, quero ser capaz de usar a linguagem de programação R para interagir
com um banco de dados MySQL disponível via phpMyAdmin. Agora estou tentando
determinar se os erros que estou recebendo ao tentar me conectar a este banco de dados são
porque estou transmitindo os argumentos errados ou se há apenas algo
fundamentalmente errado com a maneira como estou fazendo tudo.

Informação preliminar

Recebi as seguintes informações para trabalhar:

  • host: tempdb.companyname.com/phpMyAdmin
  • nome de usuário: dbs_guest
  • senha: guestpassword
  • nome do banco de dados: nome da empresa

O que eu tentei e o que funcionou

Algumas coisas dignas de nota:

  1. Consegui entrar no phpMyAdmin através do Chrome e executar com sucesso
    consultas para que eu saiba que o servidor MySQL está funcionando e as informações de login são
    corrigir.
  2. Também consegui exportar o banco de dados como um arquivo .sql; configurou
    localmente; acessaram diretamente usando MariaDB ; e acessou usando
    R e os pacotes R relevantes.

Em outras palavras, não parece ser um problema com o banco de dados remoto
em si, minha instalação do MariaDB,
ou com R e seus pacotes. [Nota: o banco de dados que atualmente tenho acesso
representa apenas uma pequena amostra do banco de dados completo, portanto, baixar tudo
localmente não é uma opção viável].

A solução que procuro

No momento, estou tentando descobrir se as variáveis ​​que estou usando no R
função para estabelecer uma conexão estão erradas (e, se for esse o caso, qual
devo usar em vez disso) ou se estou apenas fazendo tudo errado - talvez
porque há algo fundamentalmente diferente no phpMyAdmin que estou
ausência de. Se este for realmente o caso, gostaria de saber o que preciso
para estabelecer uma conexão (por exemplo, eu precisaria do endereço IP do
O próprio servidor MySQL pode se conectar remotamente?).

Para lhe dar uma ideia dos valores que tentei usar, aqui está um exemplo do
Código R que tentei:

con <- dbConnect(RMariaDB::MariaDB(),
                 host = 'tempdb.companyname.com/phpMyAdmin',
                 dbname = 'companyname',
                 user = 'dbs_guest',
                 password = 'guestpassword')
temptable <- tbl(con, "temptable")

Em particular, não tenho certeza se o valor de " host " está correto, especialmente
já que quando logado estou logado no servidor é dado como "Servidor: Localhost via socket UNIX".
Além disso, o " usuário " precisa ser listado como " dbs_guest @ localhost " (como é quando
logado no phpMyAdmin) ou isso estaria implícito no valor de "host". Por último,
Eu também poderia passar um argumento " port ", mas não tenho ideia do que seria
de qualquer forma. Ah, e não tenho certeza se isso dependeria de estar ou não
conectado ao phpMyAdmin (usando o Chrome, digamos) enquanto executa esses comandos.

Para reiterar, estou apenas tentando descobrir se há algo sobre phpMyAdmin
isso torna impossível o que estou tentando fazer (e o que eu precisaria fazer em vez disso)
ou se acabei de errar os valores das variáveis.

Obrigado pela sua paciência.

Atenciosamente,
Steve

Contexto adicional

phpMyAdmin
  • versão phpMyAdmin: 4.0.10deb1
Servidor de banco de dados
  • Servidor: Localhost via socket UNIX
  • Tipo de servidor: MySQL
  • Versão do servidor: 5.5.41-0ubuntu0.14.04.1 - (Ubuntu)
  • Versão do protocolo: 10
  • Usuário: dbs_guest @ localhost
  • Conjunto de caracteres do servidor: UTF-8 Unicode (utf8)
servidor web
  • Apache / 2.4.7 (Ubuntu)
  • Versão do cliente de banco de dados: libmysql - 5.5.41
  • Extensão PHP: mysqli
question wontfix

Comentários muito úteis

A maioria das instalações do MySQL evita conexões de rede de entrada por padrão. Para se conectar diretamente de um endereço externo, como um aplicativo em execução no seu computador local, você teria que expor a porta MySQL para a Internet. Geralmente é uma prática de segurança ruim. Muitas vezes, o phpMyAdmin é executado no mesmo servidor que a instância do MySQL, então ele se conecta ao endereço localhost (127.0.0.1) ou por meio de um arquivo de soquete UNIX (que é o que o seu phpMyAdmin está fazendo).

No próprio phpMyAdmin, deliberadamente não incluímos nenhum método de refletir ou redirecionar as conexões de entrada diretamente para o MySQL porque isso seria expor o MySQL da mesma forma que abrir a porta do MySQL diretamente para a internet, novamente uma ideia muito ruim. É por isso que usar a própria URL phpMyAdmin como string de conexão não está funcionando. Você está correto ao dizer que precisa do endereço IP do servidor (ou nome do host) aqui.

Geralmente, você tem três opções para se conectar a uma instância remota do MySQL / MariaDB:

  1. expor a porta diretamente (o que eu não recomendo),
  2. hospedar seu aplicativo diretamente no servidor e acessá-lo remotamente (como é o caso do phpMyAdmin, WordPress ou muitas outras ferramentas, embora eu não saiba se R pode ser usado dessa forma), ou
  3. expor uma API no servidor por meio de algum aplicativo personalizado, que é hospedado no servidor MySQL e ao qual seu aplicativo local pode se conectar diretamente.

Infelizmente, o phpMyAdmin não pode ajudá-lo com nada disso.

Todos 5 comentários

@SplashDance Estou confuso, você sabe que o phpMyAdmin é apenas uma interface web e não um servidor de banco de dados, certo?

Eu não entendo porque R teria algo a ver com phpMyAdmin?

cc @ibennetch
cc @mauriciofauth

Eu entendi mal o seu problema?

Certo. Eu recebo esse phpMyAdmin uma interface para interagir com um servidor de banco de dados e não o próprio servidor. Ou, pelo menos, tenho um vago entendimento de que para interagir com o servidor tenho que passar pelo phpMyAdmin.

Mas agora eu tenho o endereço do phpMyAdmin para trabalhar e estava pensando (e eu percebi que isso pode estar muito errado) que eu teria que, de fato, me conectar ao referido banco de dados através do phpMyAdmin de alguma forma.

Tenho que passar pelo phpMyAdmin.

Acho que não, e pelo que sei não oferecemos nenhuma API ou forma de interagir com bancos de dados.
A única maneira é a interação humana com a interface

Você tentou se conectar com R ao mysql como http://stla.github.io/stlapblog/posts/RMySQL.html sugere?

Mas agora eu só tenho o endereço phpMyAdmin para trabalhar

Talvez o servidor de banco de dados esteja na mesma máquina que o banco de dados, seria por isso que você só tem o nome de host do banco de dados "phpmyadmin" /? servidor

Isso responde à sua pergunta @SplashDance ?

A maioria das instalações do MySQL evita conexões de rede de entrada por padrão. Para se conectar diretamente de um endereço externo, como um aplicativo em execução no seu computador local, você teria que expor a porta MySQL para a Internet. Geralmente é uma prática de segurança ruim. Muitas vezes, o phpMyAdmin é executado no mesmo servidor que a instância do MySQL, então ele se conecta ao endereço localhost (127.0.0.1) ou por meio de um arquivo de soquete UNIX (que é o que o seu phpMyAdmin está fazendo).

No próprio phpMyAdmin, deliberadamente não incluímos nenhum método de refletir ou redirecionar as conexões de entrada diretamente para o MySQL porque isso seria expor o MySQL da mesma forma que abrir a porta do MySQL diretamente para a internet, novamente uma ideia muito ruim. É por isso que usar a própria URL phpMyAdmin como string de conexão não está funcionando. Você está correto ao dizer que precisa do endereço IP do servidor (ou nome do host) aqui.

Geralmente, você tem três opções para se conectar a uma instância remota do MySQL / MariaDB:

  1. expor a porta diretamente (o que eu não recomendo),
  2. hospedar seu aplicativo diretamente no servidor e acessá-lo remotamente (como é o caso do phpMyAdmin, WordPress ou muitas outras ferramentas, embora eu não saiba se R pode ser usado dessa forma), ou
  3. expor uma API no servidor por meio de algum aplicativo personalizado, que é hospedado no servidor MySQL e ao qual seu aplicativo local pode se conectar diretamente.

Infelizmente, o phpMyAdmin não pode ajudá-lo com nada disso.

Em primeiro lugar, deixe-me apenas dizer que realmente aprecio todas as suas respostas (especialmente considerando o amadorismo de minha pergunta inicial) e especialmente aprecio a resposta de Isaac - foi particularmente cuidadosa e muito útil.

De qualquer forma, é um alívio finalmente obter uma resposta definitiva para que não tenha que perder mais tempo tentando diferentes combinações de argumentos de função, etc.

Mais uma vez, obrigado pelo seu tempo.
Atenciosamente,
Steve

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

Imrulkais picture Imrulkais  ·  3Comentários

mauriciofauth picture mauriciofauth  ·  3Comentários

AlexeyKosov picture AlexeyKosov  ·  3Comentários

KDCinfo picture KDCinfo  ·  3Comentários

ChrisHSandN picture ChrisHSandN  ·  3Comentários