Mysql adicionando usuário para acesso remoto


148

Eu criei usuário user@'%'com password 'password. Mas não consigo me conectar com:

mysql_connect('localhost:3306', 'user', 'password');

Quando criei o usuário user@'localhost', consegui me conectar. Por quê? '%' Não significa de QUALQUER host?


Observe que a senha para usuário @ localhost e usuário @% é geralmente diferente, além de privilégios.
Jose Manuel Gomez Alvarez

Respostas:


377

Para se conectar remotamente, você deve ter a porta de ligação do MySQL 3306 no endereço IP da sua máquina em my.cnf. Então você deve ter criado o usuário no localhost e no curinga '%' e conceder permissões em todos os bancos de dados como tal . Ver abaixo:

my.cnf (my.ini no Windows)

#Replace xxx with your IP Address 
bind-address        = xxx.xxx.xxx.xxx

então

CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';

Então

GRANT ALL ON *.* TO 'myuser'@'localhost';
GRANT ALL ON *.* TO 'myuser'@'%';
flush privileges;

Dependendo do seu sistema operacional, talvez seja necessário abrir a porta 3306 para permitir conexões remotas.


1
Isso me ajudou a usar uma instância MySQL privada do WebFaction. Segui seu usuário crie e passos GRANT ALL, definido mysql.default_port = <private instance port>no meu php.ini, e depois usou 127.0.0.1todo para o meu db hostname
Spex

Muito útil. Apenas um comentário. my.cnf pode estar incluindo outro arquivo de configuração para que a linha relevante possa estar em outro lugar. No my.cnf, procure uma linha que comece com! Include, se o endereço de ligação não estiver no my.cnf, ele poderá estar localizado no arquivo incluído.
tru7

Onde está o arquivo my.cnf?
Vladimir Despotovic

7
não se esqueça de FLUSH PRIVILEGES;)
volkovmqx

4
Por que localhost e%?
noites

21

Siga as instruções (as etapas 1 a 3 não são necessárias no Windows):

  1. Encontre a configuração do mysql para editar:

    /etc/mysql/my.cnf (Mysql 5.5)

    /etc/mysql/conf.d/mysql.cnf (Mysql 5.6+)

  2. Encontre bind-address=127.0.0.1na alteração do arquivo de configuração bind-address=0.0.0.0(você pode definir o endereço de ligação como um dos ips da sua interface ou, como eu, use 0.0.0.0)

  3. Reinicie o serviço mysql executado no console: service restart mysql

  4. Crie um usuário com uma senha segura para conexão remota. Para fazer isso, execute o seguinte comando no mysql (se você é um usuário linux para acessar o mysql console run mysqle se você definir a senha para a execução root mysql -p):

    GRANT ALL PRIVILEGES 
     ON *.* TO 'remote'@'%' 
     IDENTIFIED BY 'safe_password' 
     WITH GRANT OPTION;`

Agora você deve ter um usuário com nome usere senha safe_passwordcom capacidade de conexão remota.


2
alterar endereço de ligação = 0.0.0.0 ... que funcionou para mim. e conceda privilégios
zwitterion

12

para qual DB é o usuário? veja este exemplo

mysql> create database databasename;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on databasename.* to cmsuser@localhost identified by 'password';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

para retornar à sua pergunta, o operador "%" significa todos os computadores da sua rede.

como o aspesa shows, também tenho certeza de que você precisa criar ou atualizar um usuário. procure todos os seus usuários mysql:

SELECT user,password,host FROM user;

assim que você configurar seu usuário, você poderá se conectar assim:

mysql -h localhost -u gmeier -p

espero que ajude


geralmente, para todos os db. Eu só quero conectar, não selecionar DB. codemysql_connect ('localhost: 3306', 'usuário', 'senha'); code
user2333586

em que sistema operacional você está, Windows, Linux?
Apesa 29/04

janelas. servidor wamp.
user2333586

Você precisará garantir que seu endereço IP esteja vinculado à porta 3306. No Windows, você pode usar o netstat -n para ver quais portas estão vinculadas ao seu IP. Se você vir 127.0.0.1:3306, não poderá conectar-se a partir de algo que não seja localhost
apesa
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.