Como conceder permissões de acesso remoto ao servidor de mysql para o utilizador?

Se o fizer SHOW GRANTS na minha base de dados mysql FICO

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 utilizador root só pode aceder ao servidor a partir de localhost. Como é que digo ao MySQL para conceder root a permissão para aceder a este servidor de mysql a partir de todas as outras máquinas (na mesma rede), também?

Author: George Garchagudashvili, 2011-06-05

9 answers

Isto dá acesso ao root com a mesma senha de qualquer máquina em *.example.com:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%.example.com' 
    IDENTIFIED BY 'some_characters' 
    WITH GRANT OPTION;
FLUSH PRIVILEGES;

Se a resolução do nome não funcionar, também pode conceder acesso por IP ou sub-rede:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.%'
    IDENTIFIED BY 'some_characters'  
    WITH GRANT OPTION;
FLUSH PRIVILEGES;

MySQL GRANT docs de sintaxe.

 127
Author: Michael Berkowski, 2014-09-08 19:35:44

Tenta:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Pa55w0rd' WITH GRANT OPTION;
 82
Author: moshe beeri, 2014-12-11 10:58:39

Você precisa tomar algumas medidas para se certificar de que primeiro mysql e, em seguida, usuário raiz é acessível a partir do exterior:

  1. Desactivar skip-networking em my.cnf (i. e.: /etc/mysql/my.cnf)

  2. Verifique o valor de bind-address em my.cnf, Se estiver definido para 127.0.0.1, poderá alterá-lo para 0.0.0.0 para permitir o acesso a todos os IPs ou a qualquer ip de que se queira ligar.

  3. Conceder acesso remoto ao utilizador do root a partir de qualquer ip (ou indicar o seu ip em vez de %)

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'
        IDENTIFIED BY 'your_root_password'
        WITH GRANT OPTION;
    FLUSH PRIVILEGES;`
    
  4. Reiniciar o serviço mysql:

    sudo service mysql restart
    
 40
Author: Khashayar, 2014-12-10 14:43:32
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' 
    IDENTIFIED BY 'YOUR_PASS' 
    WITH GRANT OPTION;
FLUSH PRIVILEGES;  

*.* = DB.TABLE você pode restringir o usuário a banco de dados específico e tabela específica.

'root'@'%' você pode alterar o root com qualquer usuário que você criou e % é permitir todo o IP. Você pode restringi-lo alterando %.168.1.1 etc.

 31
Author: Wasim A., 2014-12-25 07:04:30

Essas subvenções SQL que os outros estão a partilhar fazem trabalho. Se você ainda não conseguir acessar a base 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 no meio) de como abrir a conexão. Open TCP port 3306 inbound, and give it a similar access rule for external machines (all/subnet/single IP/etc.).

 8
Author: user171212, 2013-06-26 20:23:22
No meu caso, estava a tentar ligar-me a um servidor de mysql remoto na cent OS. Depois de passar por um monte de soluções (concedendo todos os privilégios, removendo atalhos de ip,ativando redes) problema ainda não estava sendo resolvido. Como se verificou, enquanto procurava várias soluções, deparei-me com iptables, o que me fez perceber que o porto de mysql 3306 não aceitava conexões. Aqui está uma pequena nota sobre como verifiquei e resolvi este problema.
  • verificar se o porto está a aceitar ligações:
telnet (mysql server ip) [portNo]

- Adicionar a regra da tabela ip para permitir ligações no porto:

iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT

-não recomendaria isso para o ambiente de produção, mas se seus iptables não estão configurados corretamente, adicionar as regras ainda pode não resolver o problema. Nesse caso, deve ser feito o seguinte:

service iptables stop
Espero que isto ajude.
 3
Author: Kushal, 2015-10-26 01:12:21

Abra o /etc/mysql / mysql.conf.d / mysqld.ficheiro cnf e comentar a linha.

Bind-address = 127. 0. 0. 1

 1
Author: Vik2696, 2018-02-21 13:25:20
Isto funcionou comigo. Mas havia um problema estranho que até eu testei primeiro aqueles que não afectaram. Actualizei a página do phpmyadmin e consegui que funcionasse.

Se precisar de acesso ao local-xampp-mysql. Você pode ir para XAMPP-shell - > abrir a linha de comandos.

Then mysql-uroot-p --port=3306 ou mysql-uroot-p (if there is password set). Depois disso, você pode conceder esses aces a partir de mysql shell page (também pode trabalhar a partir de localhost/phpmyadmin).

Só adicionando isto se alguém encontre este tópico e tenha problemas de principiante.

 0
Author: icemanzzz, 2016-03-07 11:20:34

Dois passos:

  1. Configurar o utilizador com caracteres especiais:
    create user 'root'@'%' identified by 'some_characters'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD 'some_characters' WITH GRANT OPTION

  2. vim /etc/my.cnf
    adicionar o seguinte:
    bind-address=0.0.0.0

Reiniciar o servidor, não deverá ter qualquer problema em ligar-se a ele.

 0
Author: studio1057, 2017-11-29 17:36:12