Resolvendo MySQL ODBC 5.3 Unicode Driver - error code 193

Comentarios


Este é um erro no qual vejo muitas pessoas reclamando, e poucos conseguindo resolver na última versão do driver.
O erro estoura na última etapa da instalação, quando o instalador vai registrar os drivers no sistema.

O erro:
The setup routines for the MySQL ODBC 5.3 Unicode Driver ODBC driver could not be loaded due to system error code 193.

Solução:

1. Caso você esteja instalando manualmente.


O instalador dos drivers odbc tem as seguintes dependências: .Net Framework, Visual C++ Redistributable. Consegui resolver instalando o .Net Framework 4 e o Visual C++ Redistributable 2010. O nome dos pacotes é: dotNetFx40_Full_x86_x64.exe e vcredist_x862010.exe.

Existem relatos que isso não resolveu. Caso seja seu caso, tente executar uma limpeza no sistema (arquivos temporários, registro. Com o CCLeaner por exemplo) e então substituir as seguintes dlls:

c:\Windows\SysWOW64\msvcp100.dll
c:\Windows\SysWOW64\msvcp100d.dll
c:\Windows\SysWOW64\msvcr100.dll
c:\Windows\SysWOW64\msvcr100_clr0400.dll
c:\Windows\SysWOW64\msvcr100d.dll

2. Caso esteja incluindo o pacote do driver odbc em seu instalador


Caso esteja incluindo este pacote em seu instalador, pelo Inno Setup por exemplo, veja meu post no seguinte link:

http://diretoriohome.blogspot.com.br/2014/06/como-executar-instalar-um-msi-com-inno.html

Também passei por esse erro, e consegui resolver com o link acima.

Como executar / instalar um .msi com Inno Setup

3 Comentarios


Muitas vezes quando ao distribuir um software, precisamos também incluir nossas dependências no pacote de instalação, como softwares de terceiros, bancos de dados, frameworks, etc. O Inno Setup é uma ferramenta fantástica para esse fim. Com ele é possível criar instaladores para nossas aplicações com bastante eficiência, e até mesmo incluir e executar os instaladores de nossas dependências.

Existem diversas maneiras, a maioria bem simples, de se incluir outro pacote aos nossos instaladores. Porém, quando nossas dependências estão empacotadas em arquivos .msi a história muda. Ao incluir um pacote .msi você vai experimentar diversos sabores de erros durante a execução, e vai gastar muitos neurônios até descobrir que se trata de problemas na execução de pacotes msi pelo Inno Setup.

Apesar de ser uma experiência traumática, existem algumas formas simples para se resolver. Seguem algumas:

1. Incluir o parâmetro Shellexec no comando de execução.


Este parâmetro, de acordo com a documentação, cria uma instancia do prompt para a execução do arquivo. É também necessário caso queira executar outros arquivos, como arquivos do Microsoft Office. Recomendo também  a inclusão do parâmetro waituntilterminated em conjunto com o shellexec, pois seu instalador não esperará o termino da execução de pacotes msi por defaut.

Exemplo:
[Run]
Filename: <Diretório>\seuArquivo.msi; Parameters: /qn; StatusMsg: <Mensagem a ser exibida no instalador durante a execução>; WorkingDir: <Diretório de execução do msi>; Flags: shellexec waituntilterminated

Podem perceber que incluí a seção "Parameters: /qn;". Este costuma ser o parâmetro caso queira que seu pacote msi seja instalado em modo silent, ou seja, não apareça requisitando informações ou qualquer interface visual, apenas instala diretamente.

2. Utilizando o msiexec.exe


Esta é outra maneira que pode ser encontrada na documentação, gera mais ou menos o mesmo resultado e utiliza-se dos mesmos parâmetros do prompt.

Exemplo:
[Run]
Filename: "msiexec.exe"; Parameters: "/i ""{tmp}\seuArquivo.msi"""
Vejo muitas buscas quanto isso, espero ter ajudado!

Listar o conteúdo de um tar sem extrair

Comentarios
Muitas vezes queremos dar uma olhada no conteúdo de um .tar.gz ou tgz sem precisar extrair. O comando para se fazer isso usando o Linux é:
# tar -ztvf arquivo.tar.gz
Com o comando acima é possível listar o conteúdo do tar comprimido com gzip.
Quebra muito o galho na hora da pressa.
Abraços!

C# - Listando sub-diretórios de um diretório especificado

Comentarios
É algo que precisei a pouco tempo, mas foi difícil encontrar na net, por isso resolvi compartilhar:

O código abaixo é um exemplo como se recebesse "C://" por parâmetro.
DirectoryInfo dir = new DirectoryInfo("C:\\");
DirectoryInfo[] diretorios = dir.GetDirectories();
foreach (DirectoryInfo diretorio in diretorios)
   Console.Write(diretorio.Name);
Abraços!

Habilitando Conexões Remotas no MySQL (Linux)

Comentarios


A instalação default do MySQL não permite se conectar remotamente no banco de dados, possibilitando  apenas acesso local.

Neste cenário, ao tentar conectar remotamente no banco, um dos possíveis erros é:
KHost '' is not allowed to connect to this MySQL serverConnect
Para habilitar o acesso externo, basta realizar os seguintes passos:

1. Editar o arquivo:
/etc/mysql/my.cnf
2. Alterar a seguinte linha:
bind-address = 127.0.0.1
Deixando assim:
bind-address = 0.0.0.0
3. Reiniciar o Mysql
# /etc/init.d/mysql restart
4. Conectar no Banco via localhost:
# mysql -u root -p
5. Habilitar o acesso:
mysql> grant all privileges on *.* to 'user'@'ip' identified by 'passwd';
Onde:
user: é o usuário que você deseja usar.
ip: a máquina remota que você quer permitir.
passwd: a senha do usuário

Exemplo:
mysql> grant all privileges on *.* to 'root'@'10.0.0.60' identified by 'teste';
Para habilitar toda a rede classe C do exemplo basta usar o wildcard %
mysql> grant all privileges on *.* to 'root'@'10.0.0.%' identified by 'teste';
Para habilitar para qualquer ip:
mysql> grant all privileges on *.* to 'root'@'%' identified by 'teste';
O ultimo passo é fazer o flush da configuração:
mysql> flush privileges;

Remover acesso remoto

Caso você queira desfazer o acesso remoto é bem simples também.

1. Altere a seguinte linha:
bind-address = 0.0.0.0
Deixando assim:
bind-address = 127.0.0.1
2. Logue no Mysql:
# mysql -u root -p
3. Delete todos os privilégios remotos:
DELETE FROM mysql.user WHERE User = ‘root’ AND Host = ‘%’;FLUSH PRIVILEGES;
4. Reinicie o Mysql e pronto, não estará mais acessível remotamente.


Abraços!

Recuperar a senha de root do MySQL

Comentarios


Quem nunca esqueceu a senha de root do MySQL que configurou para instalar junto com sua distro Linux, ou pegou um sistema que foi implementado por outro profissional?

Pode ser uma situação assustadora, mas dá para reverter:

1- Pare o serviço do MySQL caso ele esteja rodando:
# /etc/init.d/mysql stop
2- Suba o servidor pulando a verificação dos privilégios de usuários:
# /usr/bin/mysqld_safe –skip-grant-tables &
OBS.: Fazendo isso o MySQL estará aceitando que qualquer usuário se conecte com acesso TOTAL a TODOS os bancos de dados. Para previnir acessos durante sua manutenção é possível subir o banco sem que ele aceite conexões via TCP/IP com o comando:
# <pasta de instalação do MySQL>mysqld_safe –skip-grant-tables –skip-networking &
3- Conecte-se ao mySQL com o comando:
# mysql -u qualquer_coisa
4- Setar a senha de root:
> update mysql.user set Password=PASSWORD(‘new-password’) WHERE User=’root’
5- Pare o MySQL com o comando:
# mysqladmin -u qualquer_coisa shutdown
6- Iniciar o serviço com os comandos:
# <pasta de instalação do MySQl>/mysqld_safe &
Ou
#/etc/init.d/mysql restart


Colocar script na inicialização do Ubuntu/Debian

Comentarios


Se você trabalha com TI ou desenvolvimento de software, em diversos momentos você vai perceber que muitas vezes terá de adicionar algum script na inicialização / boot do Linux.

Cada distribuição possui seus padrões, sua forma de processar a inicialização. Mas, no caso das distros baseadas no Debia, como Ubuntu, Kubuntu, Arch Linux, Kurumin, etc, inserir um script na inicialização é bem fácil! Basicamente basta se colocar o script no diretório /etc/init.d/, setar as permissões e pronto!

Seguem os passos (em modo texto, claro..):

1- Abra seu editor de textos preferido (eu gosto do VIM):
# vim /etc/init.d/meuscript
2- Dê permissão para execução: 
# chmod 755 /etc/init.d/meuscript
3- Agora é só colocar para inicializar junto com o sistema: 
# update-rc.d meuscript defaults
Caso queira futuramente remover o script basta executar:
# update-rc.d meuscript remove

Valeu!

Modificar senha de usuário do MySQL

Comentarios


Eis uma coisa que você, seja você desenvolvedor ou TI, vai ter que fazer pelo menos uma vez na vida.

-Por que?

Se você for da área de TI, você pode ser responsável por manter um sistema que tenha um usuário específico no MySQL, por exemplo.

Se você é desenvolvedor, pode ser que precise criar um usuário específico para sua aplicação, utilizar os poderes de root de forma mais segura, ou por estar dando manutenção em um sistema criado por outro profissional.

Basicamente conheço 2 métodos para isso, cada um com suas vantagens e desvantagens:

1- Via comando mysqladmin;
2- Via SQL.


Mysqladmin:

Este comando te permite midificar a senha do usuário especificado sem ter que se conectar diretamente aos bancos do MySQL, desde que o serviço do MySQL esteja rodando. O que é muito útil caso você tenha de mudar a senha do usuário apartir de um script .bat, por exemplo.
No caso Windows, este aplicativo está dentro de <LOCAL ONDE INSTALOU>\bin, se este diretório não estiver no Path do sistema você terá de especificar todo o caminho de instalação do MySQL ou entrar na pasta bin para executar. Dica: pode ser necessário especificar a extensão ".exe" depois do nome do comando.

A sintaxe do comando e simples:
mysqladmin -u USER -p password NEWPASSWORD

Exemplo:
mysqladmin -u root -p password '123'
Pode-se tamblem especificar a porta usada pelo serviço:
mysqladmin -u root -p password '123' --port 3306

Observações:
  • Você precisa ter privilégios de administrador para executar este comando;
  • Caso você use Linux e compartilhe a conta de usuário, este comando ficará no histórico, para isso basta editar o arquivo ~/.bash_history e deletar as linhas onde a senha é exibida.


Via SQL:

Para alterar a senha, basta dar um update na tabela de usuários do banco de dados MySQL. Este comando tem duas variações, ambas com o mesmo resultado:
SET PASSWORD FOR 'user'@'host' = PASSWORD('newpass');
Ou
UPDATE mysql.user SET Password=PASSWORD('newpass') WHERE User='user';
Depois de rodar o comando acima, é preciso rodar um FLUSH PRIVILEGES para que o MySQL carregue novamente a tabela de usuários, aplicando a nova senha.

Exemplo:
UPDATE mysql.user SET Password=PASSWORD('123') WHERE User='root';
Também é possível especificar o host:
UPDATE mysql.user SET Password=PASSWORD('123') WHERE User='root' AND Host='localhost';
FLUSH PRIVILEGES;

É isso aê!!!

Tecnologia do Blogger.