Documentos de Académico
Documentos de Profesional
Documentos de Cultura
alonsojpd
Mostramos paso a paso cómo habilitar el acceso externo a una base de datos MySQL (o
MariaDB) instalada sobre un equipo con el sistema operativo Linux CentOS 7 Minimal. Con
este «truco» podremos acceder desde cualquier equipo de nuestra red LAN e incluso desde
cualquier equipo de Internet (si se realiza el NAT oportuno en el router).
Deberemos tener usuario y contraseña del sistema operativo Linux con permisos de
administrador, también usuario y contraseña de un usuario administrador de MySQL Server
o MariaDB.
Si queremos habilitar el acceso desde fuera de nuestra red LAN, desde Internet, tendremos
que mapear el puerto de MySQL/MariaDB (por defecto el 3306) en el router o cortafuegos
de nuestra red hacia la IP del equipo con MySQL/MariaDB. Para un router «normal»,
accederemos vía web a su configuración y en el menú «Internet» – «Redirección de
puertos»:
Añadiremos una nueva redirección (NAT o mapeo), indicando la IP de destino, que debe ser
la del servidor con Linux CentOS y MySQL y el puerto que mapearemos (que si no se ha
establecido otro por defecto para MySQL y MariaDB es 3306):
1 de 5 06/08/2019 12:57
Permitir acceso externo a MySQL o MariaDB en Linux CentOS 7 Minim... https://proyectoa.com/permitir-acceso-externo-a-mysql-o-mariadb-en-l...
Deberemos habilitar una regla en el cortafuegos de Linux CentOS 7 para permitir conexiones
a través del puerto 3306 (o el que hayamos establecido para MySQL/MariaDB). Para ello
ejecutaremos en la línea de comandos de Linux CentOS 7 lo siguiente:
firewall-cmd –reload
y volver a probar.
En otras distribuciones podremos usar el siguiente comando para abrir el puerto de MySQL:
/etc/my.cnf
Para el caso de otras distribuciones como Linux Ubuntu 18 se puede encontrar en:
/etc/mysql/mysql.conf.d/mysqld.cnf
Editaremos este fichero de configuración con cualquier editor (vi, nano, etc.),
descomentaremos (si está comentada) la línea:
skip-external-locking
y la línea:
bind_address = 127.0.0.1
la cambiaremos por:
bind_address = 0.0.0.0
Si tenemos la línea:
skip-networking
La comentaremos y dejaremos:
#skip-networking
2 de 5 06/08/2019 12:57
Permitir acceso externo a MySQL o MariaDB en Linux CentOS 7 Minim... https://proyectoa.com/permitir-acceso-externo-a-mysql-o-mariadb-en-l...
Con lo anterior ya tendremos acceso de forma externa a nuestro servidor MySQL, desde
cualquier otro equipo de nuestra red LAN o desde Internet. Por último nos quedaría
configurar el usuario con el que vamos a acceder a MySQL, para permitirle conexiones
externas. Podemos realizar este paso desde la línea de comandos, conectándonos a MySQL
con el comando:
mysql -u root -p
(o bien cambiando root por un usuario con permisos de DBA o administrador de MySQL)
Crearemos un usuario con los permisos que queramos, usando esta orden en la línea de
comandos de MySQL:
nombre_bd.*: dará permisos para la base de datos nombre_bd y para todas sus
tablas (*). Si queremos darle permisos a todos los esquemas/bases de datos podremos
usar *.* y si queremos darle permisos para una única tabla de la base de datos
usaremos nombre_bd.nombre_tabla.
‘nombre_usuario’@’%’: con esto indicaremos el nombre del usuario al que
permitiremos el acceso y desde qué IP o rango de IP. Y si queremos permitirle el
acceso desde cualquier IP pondremos %. Por ejemplo, si solo queremos darle acceso
desde cualquier IP del rango 192.168.1.x pondremos ‘nombre_usuario’@’192.168.1.%’.
identified by ‘contraseña_usuario’: introduciremos aquí la contraseña que se
establecerá para este usuario.
ERROR 1827 (HY000): The password hash doesn’t have the expected format. Check if the
correct password algorithm is being used with the PASSWORD() function.
Puede deberse a que tenemos establecida una política de seguridad para la contraseña. Para
establecerla debemos generarla previamente con con la orden (siempre ejecutando desde la
línea de comandos de MySQL):
select PASSWORD(‘miclave’);
3 de 5 06/08/2019 12:57
Permitir acceso externo a MySQL o MariaDB en Linux CentOS 7 Minim... https://proyectoa.com/permitir-acceso-externo-a-mysql-o-mariadb-en-l...
Ejecutaremos en esta misma consola el siguiente comando para hacer efectivos los permisos:
flush privileges;
Y reiniciaríamos el servicio de MySQL para que se apliquen los posibles cambios que
hayamos hecho en el fichero de configuración con:
o también:
/etc/init.d/mysql restart
Recomendamos una herramienta interesante para comprobar y ver las conexiones que se
van produciendo a MySQL Server en tiempo real, se trata de mytop y se puede instalar con:
mytop
Y nos mostrará, en tiempo real y actualizándose, las conexiones que se van produciendo a
nuestro servidor MySQL, incluso la consulta SQL que se ejecuta y otros datos interesantes
para posibles depuraciones y comprobaciones:
4 de 5 06/08/2019 12:57
Permitir acceso externo a MySQL o MariaDB en Linux CentOS 7 Minim... https://proyectoa.com/permitir-acceso-externo-a-mysql-o-mariadb-en-l...
#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# – «/etc/mysql/my.cnf» to set global options,
# – «~/.my.cnf» to set user-specific options.
#
# One can use all long options that the program supports.
# Run program with –help to get a list of available options and with
# –print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
#
# * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address = 127.0.0.1
bind_address = 0.0.0.0
#
# * Fine Tuning
#
key_buffer_size = 16M
max_allowed_packet = 16M
thread_stack = 192K
thread_cache_size = 8
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover-options = BACKUP
#max_connections = 100
5 de 5 06/08/2019 12:57