Se eu fizer SHOW GRANTS
no meu banco de dados mysql, recebo
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost'
IDENTIFIED BY PASSWORD 'some_characters'
WITH GRANT OPTION
Se não me engano, root@localhost
significa que o usuário só root
pode acessar o servidor de localhost
. Como digo ao MySQL para conceder root
permissão para acessar este servidor mysql de todas as outras máquinas (na mesma rede) também?
mysql
connection
grant
Aufwind
fonte
fonte
localhost
para%
concederá acesso root à rede pública. Não se esqueça deflush privileges;
Respostas:
Isso concede acesso root com a mesma senha de qualquer máquina em
*.example.com
:Se a resolução de nomes não funcionar, você também pode conceder acesso por IP ou sub-rede:
GRANT
Documentos de sintaxe do MySQL .fonte
...TO 'root'@'%' IDENTIFIED...
que concederia acesso de qualquer lugar?SHOW GRANTS
ainda mostra o mesmo (como na minha pergunta). Eu até fizFLUSH PRIVILGES
. Há algo que eu sinto falta?FLUSH PRIVILEGES
. Saia e volte a entrar, reinicie o serviço mysqld se você tiver acesso. Além disso, certifique-se de que askip networking
linha não esteja habilitada em seu,my.cnf
embora isso não explicaria o fato de vocêSHOW GRANTS
ainda não ser o mesmo.IDENTIFIED BY PASSWORD
é acompanhado por um número hexadecimal de 41 dígitos com hash. UseIDENTIFIED BY 'password'
se quiser incluir a senha diretamente.Experimentar:
fonte
Pa55w0rd
parece estúpido, não me diga que essa é a senha que você deseja criar. Para todos que tentam fazer o login no seu mysql?FLUSH PRIVILEGES;
Você precisa seguir alguns passos para se certificar de que primeiro o mysql e o usuário root estão acessíveis de fora:
Desativar
skip-networking
emmy.cnf
(ou seja/etc/mysql/my.cnf
:)Verifique o valor de
bind-address
inmy.cnf
, se estiver definido como127.0.0.1
, você pode alterá-lo0.0.0.0
para permitir o acesso de todos os IPs ou de qualquer ip a partir do qual você deseja se conectar.Conceda acesso remoto ao usuário root de qualquer ip (ou especifique seu ip em vez de
%
)Reinicie o serviço mysql:
fonte
*.* = DB.TABLE
você pode restringir o usuário a um banco de dados específico e a uma tabela específica.'root'@'%'
você pode alterar o root com qualquer usuário que você criou e% é permitir todos os IPs. Você pode restringi-lo alterando% .168.1.1 etc. também.Se isso não resolver, modifique também my.cnf ou my.ini e comente essas linhas
bind-address = 127.0.0.1
para#bind-address = 127.0.0.1
e
skip-networking
para#skip-networking
Raspberry Pi, encontrei a configuração de endereço de ligação em
\etc\mysql\mariadb.conf.d\50-server.cnf
fonte
*.*
e'user'@'address'
. Obrigado! :)Essas concessões de SQL que os outros estão compartilhando funcionam. Se você ainda não conseguir acessar o banco de dados, é possível que você tenha apenas uma restrição de firewall para a porta. Depende do seu tipo de servidor (e de quaisquer roteadores entre eles) como abrir a conexão. Abra a porta TCP 3306 de entrada e dê a ela uma regra de acesso semelhante para máquinas externas (todos / sub-rede / IP único / etc.).
fonte
Abra o
/etc/mysql/mysql.conf.d/mysqld.cnf
arquivo e comente a seguinte linha:fonte
No meu caso, eu estava tentando me conectar a um servidor mysql remoto no sistema operacional cent. Depois de passar por várias soluções (conceder todos os privilégios, remover ligações de IP, habilitar a rede), o problema ainda não estava sendo resolvido.
Como descobri, enquanto procurava por várias soluções, me deparei com o iptables, o que me fez perceber que a porta 3306 do mysql não estava aceitando conexões.
Aqui está uma pequena observação sobre como verifiquei e resolvi esse problema.
- Adicionando regra de tabela de ip para permitir conexões na porta:
-Não recomendamos isso para ambiente de produção, mas se seus iptables não estiverem configurados corretamente, adicionar as regras pode não resolver o problema. Nesse caso, deve ser feito o seguinte:
Espero que isto ajude.
fonte
Dois passos:
configurar usuário com curinga:
create user 'root'@'%' identified by 'some_characters'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD 'some_characters' WITH GRANT OPTION
vim /etc/my.cnf
adicione o seguinte:
bind-address=0.0.0.0
reinicie o servidor, você não deverá ter nenhum problema para se conectar a ele.
fonte
No mysql 8 e na versão posterior, você não pode adicionar um usuário concedendo privilégios. significa com esta consulta:
mysql retornará este erro:
isso significa que você não tem um usuário root para% domain. então você precisa primeiro inserir o usuário e depois conceder privilégios como este:
Não se esqueça de substituir as senhas por senhas específicas.
fonte
Isso funcionou para mim. Mas havia um problema estranho que até eu tentei primeiro, aqueles que não afetou. Eu atualizei a página do phpmyadmin e de alguma forma a fiz funcionar.
Se você precisar acessar local-xampp-mysql. Você pode ir para xampp-shell -> abrindo o prompt de comando.
Então mysql -uroot -p --port = 3306 ou mysql -uroot -p (se houver senha definida). Depois disso, você pode conceder esses acessos a partir da página do shell do mysql (também pode funcionar em localhost / phpmyadmin).
Basta adicioná-los se alguém encontrar este tópico e tiver problemas para iniciantes.
fonte
Ubuntu 18.04
Instale e certifique-se de que o mysqld us esteja em execução.
Acesse o banco de dados e configure o usuário root:
Edite as permissões do mysqld e reinicie:
De outra máquina, teste. A porta Obvs (3306) na máquina mysqld deve permitir a conexão da máquina de teste.
Toda a "segurança" adicional do MySql não ajuda em nada a segurança, apenas complica e ofusca, agora é realmente mais fácil estragar tudo do que antigamente, onde você apenas usava uma senha muito longa.
fonte