Linux para obtener conexiones remotas a un servidor de base de datos Mysql debemos tener un usuario que tenga permisos para acceder desde cualquier servidor, o de un servidor determinado, para conexiones remotas Mysql no permite la conexion usando el usuario root, se debe crear un usuario diferente para hacer la conexion.
Si usas Phpmyadmin indicar en la tabla de privilegios de usuarios en el campo host con el simbolo ‘%’ que indica que la conexion se realizara desde cualquier servidor, si lo que queremos es hacerlo desde una ip especifica se pondría 172.18.20.30, o parte de la ip con el comodin 172.18.%, aqui coloca la ip correspodiente a su equipo.
Lo siguiente es modificar en el fichero my.cnf el parámetro bind-address, que por defecto viene con 127.0.0.1, y cambiarlo
bind-address = 127.0.0.1
bind-adrres = 0.0.0.0
para que sea accesible desde cualquier servidor.
Tambien se puede comentar la linea, esto permitiria la conexión igualmente
#bind-address = 127.0.0.1
debe reiniciar el servidor mysql-server para que tome los cambios:
# /etc/init.d/mysql restart
Si tiene iptables o un cortafuegos equivalente debe se crear una regla para que se permita la conexion por el puerto 3306 algo como:
iptables -A INPUT -s 172.18.20.30 -p tcp --dport 3306 -j ACCEPT
Para hacerlo desde la consola de comandos con el administrador mysql puede hacerlo asi:
Para una ip o servidor especifico, para consulta escritura y actualización:
mysql> CREATE USER 'nombre_de_usuario'@'172.18.20.30' IDENTIFIED BY 'clave';
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, FILE ON * . * TO 'nombre_de_usuario'@'172.18.20.30' IDENTIFIED BY 'clave'
Para cualquier servidor desde una red 172.18.2.0/24 solo de consulta:
mysql> CREATE USER 'nombre_de_usuario'@'172.18.2.%' IDENTIFIED BY 'clave';
mysql> GRANT SELECT ON * . * TO 'nombre_de_usuario'@'172.18.2.%' IDENTIFIED BY 'clave';
Si desea darle todos los privilegios:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'prueba'@'172.18.2.%' IDENTIFIED BY 'clave';
Si desea que este usuario pueda dar permisos a otros usuarios debe dar la siguiente linea de comando
mysql> GRANT ALL PRIVILEGES ON *.* TO 'prueba'@'172.18.2.%' IDENTIFIED BY 'clave' WITH GRANT OPTION;
Si deseamos darle permisos al usuario creado sobre una base de datos especifica debemos dar el siguiente comando:
mysql> GRANT ALL PRIVILEGES ON basedatos.* TO 'prueba'@'172.18.2.%' IDENTIFIED BY 'clave';
Si desea que pueda dar permisos a otros usuarios de la base de datos asignada debe dar el siguiente comando:
mysql> GRANT ALL PRIVILEGES ON basedatos.* TO 'prueba'@'172.18.2.%' IDENTIFIED BY 'clave' WITH GRANT OPTION;
Borrar un usuario:
mysql> DROP USER prueba;
Si tiene privilegios no lo deja borrar debe mirar cuales tiene y revocarlos para luego eliminar el usuario:
mysql> SHOW GRANTS FOR prueba;
mysql> REVOKE ALL PRIVILEGES ON basedatos.* FROM prueba;
mysql> DROP USER prueba;
Conexión remota desde phpmyadmin
Editar el archivo config.inc.php para cambiar los valores de host de la base de datos (ordenador que tiene instalado el MySQL) y el usuario y password con el que nos conectamos. Se pueden configurar muchos aspectos en la herramienta, aunque ahora solo nos interesa la conexión remota, en la documentación tenemos un apartado dedicado por completo a especificar el sentido de cada variable.
$cfgPmaAbsoluteUri
Debemos asignarlo a la ruta completa necesaria para acceder a phpMyAdmin. Podría ser algo como http://localhost/phpMyAdmin o http://www.dominio.org/phpMyAdmin
$cfgServers[$i]['host'] string
El nombre del host de la base de datos. Por ejemplo localhost, si es que es el mismo ordenador donde estamos instalandos phpMyAdmin y la base de datos. También podría ser la dirección IP del ordenador remoto al que nos conectaremos.
$cfgServers[$i]['user'] string
$cfgServers[$i]['password'] string
El usuario contraseña que debe utilizar phpMyAdmin para conectarse con el servidor MySQL, remoto.
Es muy importante tener en cuenta que versiones antiguas de phpmyadmin tendran dificultades con la evaluacion de claves ya que las versiones nuevas cambian las valorancion de estas, por tal razon es posible que tenga problemas al conectarse de un administrador phpmyadmin de version antigua a un servidor de datos Mysql de version reciente.
GNU/Linux