Mysql agregando usuario para acceso remoto

148

Creé usuario user@'%'con password 'password. Pero no puedo conectarme con:

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

Cuando creé el usuario user@'localhost', pude conectarme. ¿Por qué? ¿No significa '%' de CUALQUIER host?

usuario2333586
fuente
Tenga en cuenta que la contraseña para el usuario @ localhost y el usuario @% es en general diferente, así como los privilegios.
Jose Manuel Gomez Alvarez

Respuestas:

378

Para conectarse de forma remota, debe tener MySQL enlazar el puerto 3306 a la dirección IP de su máquina en my.cnf. Luego debe haber creado el usuario en localhost y '%' comodín y otorgar permisos en todos los DB como tales . Vea abajo:

my.cnf (my.ini en windows)

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

luego

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

Luego

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

Dependiendo de su sistema operativo, es posible que deba abrir el puerto 3306 para permitir conexiones remotas.

apesa
fuente
1
Esto me ayudó a usar una instancia privada de MySQL de WebFaction. Seguí sus pasos CREAR USUARIO y CONCEDER TODOS, configuré mysql.default_port = <private instance port>mi php.ini y luego lo usé 127.0.0.1para mi nombre de host db
spex
Muy útil. Solo un comentario. my.cnf podría incluir otro archivo de configuración, por lo que la línea relevante puede estar en otro lugar. En my.cnf busque una línea que comience por! Include, si bind-address no está en my.cnf, podría ubicarse en ese archivo incluido.
tru7
¿Dónde está el archivo my.cnf?
Vladimir Despotovic
77
no olvides ENJUAGAR PRIVILEGIOS;)
volkovmqx
44
¿Por qué tanto localhost como%?
noches
21

Siga las instrucciones (los pasos 1 a 3 no son necesarios en Windows):

  1. Encuentra la configuración de mysql para editar:

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

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

  2. Busque bind-address=127.0.0.1en el cambio de archivo de configuración bind-address=0.0.0.0(puede establecer la dirección de enlace en uno de sus ips de interfaz o, como yo, usar 0.0.0.0)

  3. Reinicie el servicio mysql ejecutado en la consola: service restart mysql

  4. Cree un usuario con una contraseña segura para la conexión remota. Para hacer esto, ejecute el siguiente comando en mysql (si es usuario de Linux para llegar a la consola de mysql, ejecute mysqly configure la contraseña para la ejecución de root mysql -p):

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

Ahora debe tener un usuario con nombre usery contraseña safe_passwordcon capacidad de conexión remota.

MSS
fuente
2
change bind-address = 0.0.0.0 ... eso funcionó para mí. y otorgar privilegios
zwitterion
12

para que DB es el usuario? mira este ejemplo

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)

así que para volver a su pregunta, el operador "%" significa todas las computadoras en su red.

como muestra Aspesa, también estoy seguro de que tienes que crear o actualizar un usuario. busca a todos tus usuarios de mysql:

SELECT user,password,host FROM user;

tan pronto como configures tu usuario, deberías poder conectarte así:

mysql -h localhost -u gmeier -p

Espero eso ayude

caramba
fuente
en general, para todos los db. Solo quiero conectarme, no seleccionar DB. codemysql_connect ('localhost: 3306', 'usuario', 'contraseña'); code
user2333586
¿En qué sistema operativo estás, Windows, Linux?
apesa
ventanas servidor wamp
user2333586
Deberá asegurarse de que su dirección IP esté vinculada al puerto 3306. En Windows, puede usar netstat -n para ver qué puertos están vinculados a su IP. Si ve 127.0.0.1:3306, no podrá conectarse desde otra cosa que no sea localhost
apesa