Instalei o MySQL Community Edition 5.5 na minha máquina local e desejo permitir conexões remotas para que eu possa conectar-me a partir de uma fonte externa.
Como eu posso fazer isso?
sudo mysql_secure_installation
. PARA SUA INFORMAÇÃO.
Instalei o MySQL Community Edition 5.5 na minha máquina local e desejo permitir conexões remotas para que eu possa conectar-me a partir de uma fonte externa.
Como eu posso fazer isso?
sudo mysql_secure_installation
. PARA SUA INFORMAÇÃO.
Respostas:
Isso é permitido por padrão no MySQL.
O que está desativado por padrão é o root
acesso remoto . Se você deseja habilitar isso, execute este comando SQL localmente:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Em seguida, encontre a seguinte linha e comente-a em seu my.cnf
arquivo, que geralmente vive /etc/mysql/my.cnf
em sistemas Unix / OSX. Em alguns casos, o local para o arquivo é /etc/mysql/mysql.conf.d/mysqld.cnf).
Se for um sistema Windows, você pode encontrá-lo no diretório de instalação do MySQL, geralmente algo como C:\Program Files\MySQL\MySQL Server 5.5\
e o nome do arquivo será my.ini
.
Alterar linha
bind-address = 127.0.0.1
para
#bind-address = 127.0.0.1
E reinicie o servidor MySQL ( Unix / OSX e Windows ) para que as alterações entrem em vigor.
my.cnf
arquivo e não encontrar uma bind-address
directiva nele, nota que no meu caso (MySQL versão 14.14 no Ubuntu 16.04.2) o local para o arquivo foi/etc/mysql/mysql.conf.d/mysqld.cnf
Depois de fazer tudo o que precede, eu ainda não conseguia entrar root
remotamente, mas o Telnetting to port 3306
confirmou que MySQL
estava aceitando conexões.
Comecei a olhar para os usuários no MySQL e notei que havia vários usuários root com senhas diferentes.
select user, host, password from mysql.user;
Então, MySQL
eu defini todas as senhas para root novamente e finalmente consegui fazer logon remotamente como root
.
use mysql;
update user set password=PASSWORD('NEWPASSWORD') where User='root';
flush privileges;
update user set authentication_string=password('YOUR_PASSWORD') where user='root';
Apenas uma observação da minha experiência, você pode encontrar o arquivo de configuração nesse caminho /etc/mysql/mysql.conf.d/mysqld.cnf
.
(Eu lutei por algum tempo para encontrar esse caminho)
sudo find /etc -iname 'mysql*.cnf'
No meu caso, eu estava tentando conectar a um servidor mysql remoto no cent OS. Depois de passar por muitas soluções (concessão de todos os privilégios, remoção de ligações IP, ativação de rede), o problema ainda não estava sendo resolvido.
Como se viu, enquanto olhava para várias soluções, me deparei com iptables, o que me fez perceber que a porta 3306 do mysql não estava aceitando conexões.
Aqui está uma pequena nota sobre como eu verifiquei e resolvi esse problema.
telnet (ip do servidor mysql) [portNo]
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACEITAR
serviço iptables stop
Espero que isto ajude.
Por favor, siga as etapas abaixo mencionadas para configurar o acesso remoto curinga para o Usuário MySQL.
(1) Abra cmd.
(2) navegue até o caminho C: \ Arquivos de programas \ MySQL \ MySQL Server 5.X \ bin e execute este comando.
mysql -u raiz -p
(3) Digite a senha root.
(4) Execute o seguinte comando para fornecer a permissão.
CONCEDE TODOS OS PRIVILEGIOS EM *. * PARA 'USERNAME' @ 'IP' IDENTIFICADO POR 'PASSWORD';
USERNAME: Nome de usuário que você deseja conectar ao servidor MySQL.
IP: Endereço IP público de onde você deseja permitir o acesso ao servidor MySQL.
SENHA: Senha do nome de usuário usado.
O IP pode ser substituído por% para permitir que o usuário se conecte a partir de qualquer endereço IP.
(5) Lave os privilégios seguindo o comando e saia.
PRIVILÉGIOS DE LAVAGEM;
Saída; ou \ q
Se o processo do servidor MySQL estiver escutando apenas 127.0.0.1 ou :: 1, você não poderá se conectar remotamente. Se você tiver uma bind-address
configuração, /etc/my.cnf
isso pode ser a fonte do problema.
Você também precisará adicionar privilégios para quem não é localhost
usuário.
127.0.0.1
?
Se você instalou o MySQL, brew
ele realmente escuta apenas na interface local por padrão. Para corrigir isso, você precisa editar /usr/local/etc/my.cnf
e alterar o bind-address
de 127.0.0.1
para *
.
Então corra brew services restart mysql
.
Todo o processo para login remoto. O login remoto está desativado por padrão.Você precisa abri-lo manualmente para todos os ip..para acessar todos os ip
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
Ip específico
GRANT ALL PRIVILEGES ON *.* TO 'root'@'your_desire_ip' IDENTIFIED BY 'password';
então
flush privileges;
Você pode verificar o seu host e senha do usuário
SELECT host,user,authentication_string FROM mysql.user;
Agora seu dever é mudar isso
bind-address = 127.0.0.1
Você pode encontrar isso em
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
se você não encontrar isso lá, tente isso
sudo nano /etc/mysql/my.cnf
comentar neste
#bind-address = 127.0.0.1
Então reinicie o Mysql
sudo service mysql restart
Agora aproveite o login remoto
Apenas para sua informação, eu puxei meu cabelo com esse problema por horas .. finalmente, ligo para meu provedor de hospedagem e descobri que, no meu caso, usando um servidor em nuvem que, no painel de controle de 1 e 1, eles têm um firewall secundário que você precisa clonar e adicionar porta 3306. Uma vez adicionado, fui direto para a ..
Este blog Como configurar um servidor MySQL na rede local será útil na configuração MySQL
do zero
E para as pessoas do OS X, esteja ciente de que o parâmetro bind-address geralmente é definido no launchd plist e não no arquivo my.ini. Então, no meu caso, eu removi <string>--bind-address=127.0.0.1</string>
a partir /Library/LaunchDaemons/homebrew.mxcl.mariadb.plist
.
~/Library/LaunchAgents
Se mysqld
houver um endereço de ligação definido como um loopback / endereço local (por exemplo 127.0.0.1
), o servidor não poderá ser acessado a partir de hosts remotos, porque uma interface de loopback não pode ser alcançada a partir de nenhum host remoto.
Defina esta opção como 0.0.0.0
( ::
para IPv4 + 6) para aceitar conexões de qualquer host ou outro endereço acessível externamente, se você deseja permitir apenas conexões em uma interface.
algumas vezes precisa usar o nome do pc no windows
primeiro passo) coloque no arquivo de configuração do mysql:
mysqld.cnf SET endereço de ligação = 0.0.0.0
(para permitir a renovação de conexões por tcp / ip)
segundo passo) criar usuário no mysql, tabela de usuários, com nome do pc nas propriedades do windows , NÃO ip
Habilitar o acesso remoto à raiz pode ser perigoso. Seria preferível que você configurasse contas de usuário com permissões mais restritivas. Os três passos a seguir devem fazer isso.
Certifique-se de que a linha que começa com bind-address ...
seja pelo menos comentada no seu arquivo my.ini ou my.cnf. Se não existir, siga em frente. Você pode encontrar este arquivo no C:\ProgramData\MySQL\MySQL Server 8.0
Windows.
Posteriormente, verifique se a conta de usuário com a qual você está estabelecendo a conexão não possui localhost
no campo Correspondência de limite para hosts. Embora não seja recomendado, você pode colocá %
-lo nesse campo para fins de teste. Você pode fazer isso abrindo uma conexão local ao servidor com o MySQL Workbench, depois indo para Servidor> Usuários e Privilégios na barra de menus e localizando a conta de usuário com a qual deseja se conectar.
O campo "Limitar à correspondência de hosts" é o que não permite a conexão não local. Ou seja, limita as conexões aceitas a um padrão de endereços IP. Idealmente, você deve acessar o servidor MySQL a partir de um endereço IP ou sub-rede estático, para poder ser o mais restritivo possível.