Cómo instalar MySQL Server en Linux y permitir conexiones remotas

Artículo/manual que explica paso a paso y con capturas de pantalla cómo instalar y configurar MySQL Server en Linux (hemos utilizado Ubuntu Linux, distribución basada en Debian). También explicamos cómo configurar MySQL Server para el acceso remoto (desde otros PCs de la red, incluidos los que tengan Windows como sistema operativo).

Este artículo muestra paso a paso cómo instalar MySQL Server (motor de bases de datos MySQL) en Linux, en concreto hemos utilizado una distribución llamada Ubuntu Linux versión 5.04, la cual está basada en Debian:

  1. Para realizar la instalación de MySQL Server necesitaremos disponer de conexión a Internet, así podremos descargar los paquetes necesarios para la instación. Estos paquetes se puede descargar de varias maneras, dependiendo de la distribución de Linux que utilicemos:
  • Para distribuciones Debian, como nuestro caso Ubuntu Linux Debian, es suficiente con abrir una ventana de terminal que se haya en «Aplicaciones» – «Herramientas del sistema» – «Terminal» y escribir lo siguiente:

su root

(iniciamos la sesión en la línea de comandos como superusuario root pues es necesario para realizar la instalación, nos pedirá la contraseña de dicho usuario)

apt-get install mysql-server-4.1

Con este comando, sólo disponible en distribuciones Debian, se descargará de Internet e instalará automáticamente MySQL Server. Nos pedirá confirmación para la instalación, responderemos «s». A continuación os mostramos el resultado de la instalación (si todo ha ido bien) y los comandos necesarios (en negrita):

alonso@portatil:~$ su root
Password:
root@portatil:/home/alonso # apt-get update
Des:1 http://es.archive.ubuntu.com hoary Release.gpg [189B]
Obj http://es.archive.ubuntu.com hoary Release
Obj http://es.archive.ubuntu.com hoary/main Packages
Obj http://es.archive.ubuntu.com hoary/restricted Packages
Obj http://es.archive.ubuntu.com hoary/main Sources
Obj http://es.archive.ubuntu.com hoary/restricted Sources
Des:2 http://es.archive.ubuntu.com hoary/universe Packages [2169kB]
Des:3 http://es.archive.ubuntu.com hoary/universe Sources [857kB]
Descargados 3026kB en 1m47s (28,0kB/s)
Leyendo lista de paquetes… Hecho
root@portatil:/home/alonso # apt-get install mysql-server-4.1
Leyendo lista de paquetes… Hecho
Creando árbol de dependencias… Hecho
Se instalarán los siguientes paquetes extras:
gawk libdbd-mysql-perl libdbi-perl libmysqlclient14 libnet-daemon-perl
libplrpc-perl mysql-client-4.1 mysql-common-4.1
Paquetes sugeridos:
dbishell libcompress-zlib-perl mysql-doc-4.1
Paquetes recomendados
libmysqlclient14-dev
Los siguientes paquetes se ELIMINARÁN:
mysql-common
Se instalarán los siguientes paquetes NUEVOS:
gawk libdbd-mysql-perl libdbi-perl libmysqlclient14 libnet-daemon-perl
libplrpc-perl mysql-client-4.1 mysql-common-4.1 mysql-server-4.1
0 actualizados, 9 se instalarán, 1 para eliminar y 0 no actualizados.
Se necesita descargar 17,3MB/18,3MB de archivos.
Se utilizarán 39,8MB de espacio de disco adicional después de desempaquetar.
¿Desea continuar [S/n]? s
Cambio de medio: Por favor inserte el disco etiquetado
‘Ubuntu 5.04 _Hoary Hedgehog_ – Release i386 (20050407)’
en la unidad ‘/cdrom/’ y presione Intro

Des:1 http://es.archive.ubuntu.com hoary/main libnet-daemon-perl 0.38-1 [46,0kB]Des:2
http://es.archive.ubuntu.com hoary/main libplrpc-perl 0.2017-1 [35,0kB]
Des:3 http://es.archive.ubuntu.com hoary/main libdbi-perl 1.46-4ubuntu1 [604kB]
Des:4 http://es.archive.ubuntu.com hoary/main libdbd-mysql-perl 2.9003-3 [130kB]Des:5
http://es.archive.ubuntu.com hoary/universe mysql-common-4.1 4.1.10a-2 [33,3kB]
Des:6 http://es.archive.ubuntu.com hoary/universe libmysqlclient14 4.1.10a-2 [1390kB]
Des:7 http://es.archive.ubuntu.com hoary/universe mysql-client-4.1 4.1.10a-2 [812kB]
Des:8 http://es.archive.ubuntu.com hoary/universe mysql-server-4.1 4.1.10a-2 [14,3MB]
Descargados 17,3MB en 9m45s (29,6kB/s)

Preconfiguring packages …
dpkg: mysql-common: problemas de dependencias, pero se desinstalarán de todas formas
tal y como se solicitó:
libmysqlclient10 depende de mysql-common.
libmysqlclient12 depende de mysql-common (>= 4.0.23-3ubuntu2) |
mysql-common-4.1; sin embargo:
el paquete mysql-common va a ser desinstalado.
el paquete mysql-common-4.1 no está instalado.
(Leyendo la base de datos …
59115 ficheros y directorios instalados actualmente.)
Desinstalando mysql-common …
Seleccionando el paquete gawk previamente no seleccionado.
(Leyendo la base de datos …
59112 ficheros y directorios instalados actualmente.)
Desempaquetando gawk (de …/g/gawk/gawk_3.1.4-2_i386.deb) …
Seleccionando el paquete libnet-daemon-perl previamente no seleccionado.
Desempaquetando libnet-daemon-perl (de …/libnet-daemon-perl_0.38-1_all.deb) …
Seleccionando el paquete libplrpc-perl previamente no seleccionado.
Desempaquetando libplrpc-perl (de …/libplrpc-perl_0.2017-1_all.deb) …
Seleccionando el paquete libdbi-perl previamente no seleccionado.
Desempaquetando libdbi-perl (de …/libdbi-perl_1.46-4ubuntu1_i386.deb) …
Seleccionando el paquete libdbd-mysql-perl previamente no seleccionado.
Desempaquetando libdbd-mysql-perl (de …/libdbd-mysql-perl_2.9003-3_i386.deb) …
Seleccionando el paquete mysql-common-4.1 previamente no seleccionado.
Desempaquetando mysql-common-4.1 (de …/mysql-common-4.1_4.1.10a-2_all.deb) …
Seleccionando el paquete libmysqlclient14 previamente no seleccionado.
Desempaquetando libmysqlclient14 (de …/libmysqlclient14_4.1.10a-2_i386.deb) …
Seleccionando el paquete mysql-client-4.1 previamente no seleccionado.
Desempaquetando mysql-client-4.1 (de …/mysql-client-4.1_4.1.10a-2_i386.deb) …
Seleccionando el paquete mysql-server-4.1 previamente no seleccionado.
Desempaquetando mysql-server-4.1 (de …/mysql-server-4.1_4.1.10a-2_i386.deb) …
Configurando gawk (3.1.4-2) …

Configurando libnet-daemon-perl (0.38-1) …

Configurando libplrpc-perl (0.2017-1) …

Configurando libdbi-perl (1.46-4ubuntu1) …
Configurando libdbd-mysql-perl (2.9003-3) …
Configurando mysql-common-4.1 (4.1.10a-2) …
Instalando una nueva versión del fichero de configuración /etc/mysql/my.cnf …
Configurando libmysqlclient14 (4.1.10a-2) …

Configurando mysql-client-4.1 (4.1.10a-2) …
Configurando mysql-server-4.1 (4.1.10a-2) …
Stopping MySQL database server: mysqld.
Starting MySQL database server: mysqld.
Checking for crashed MySQL tables in the background.

En el caso en el que este comando apt-get install mysql-server-4.1 no funcione, tal vez se deba a que no estén bien configuradas las fuentes de las cuales debe descargar los paquetes, dichas fuentes se encuentran en el fichero: /etc/apt/sources.list, en nuestro caso tiene el siguiente contenido:

deb cdrom:[Ubuntu 5.04 _Hoary Hedgehog_ – Release i386 (20050407)]
/ hoary main restricted
## Uncomment the following two lines to fetch updated software from the network
deb http://es.archive.ubuntu.com/ubuntu hoary main restricted
deb-src http://es.archive.ubuntu.com/ubuntu hoary main restricted

## Uncomment the following two lines to fetch major bug fix updates produced
## after the final release of the distribution.
# deb http://es.archive.ubuntu.com/ubuntu hoary-updates main restricted
# deb-src http://es.archive.ubuntu.com/ubuntu hoary-updates main restricted

## Uncomment the following two lines to add software from the ‘universe’
## repository.
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## universe WILL NOT receive any review or updates from the Ubuntu security
## team.
deb http://es.archive.ubuntu.com/ubuntu hoary universe
deb-src http://es.archive.ubuntu.com/ubuntu hoary universe

# deb http://security.ubuntu.com/ubuntu hoary-security main restricted
# deb-src http://security.ubuntu.com/ubuntu hoary-security main restricted

# deb http://security.ubuntu.com/ubuntu hoary-security universe
# deb-src http://security.ubuntu.com/ubuntu hoary-security universe

Si el contenido no es el mismo puede hacer una copia del actual y machacarlo con el que acabamos de listar, después es conveniente actualizar la caché para poder instalar la versión 4.1 de MySQL (o la versión más reciente que haya). Para actualizar la caché pondremos:

apt-get update

Una vez instalado MySQL Server podremos instalar otras herramientas, por ejemplo MySQL Administrator que es un administrador en modo gráfico de MySQL Server, para ello pondremos el siguiente comando:

apt-get install mysql-admin

(con este comando, sólo disponible en distribuciones Debian, se descargará de Internet e instalará automáticamente MySQL Server. Nos pedirá confirmación para la instalación, responderemos «s»). A continuación os mostramos el resultado de la instalación (si todo ha ido bien):

root@ajpdsoft:/home/usuario # apt-get install mysql-admin
Leyendo lista de paquetes… Hecho
Creando Árbol de dependencias… Hecho
Se instalarán los siguientes paquetes extras:
libgtkmm2.0-1c102 libmysqlclient14 libpcre3 mysql-admin-common
Paquetes recomendados
libmysqlclient14-dev
Se instalarán los siguientes paquetes NUEVOS:
libgtkmm2.0-1c102 libmysqlclient14 libpcre3 mysql-admin mysql-admin-common
0 actualizados, 5 se instalarán, 0 para eliminar y 0 no actualizados.
Se necesita descargar 3299kB/3406kB de archivos.
Se utilizarán 10,0MB de espacio de disco adicional después de desempaquetar.
¿Desea continuar [S/n]? s
Cambio de medio: Por favor inserte el disco etiquetado
‘Ubuntu 5.04 _Hoary Hedgehog_ – Release i386 (20050407)’
en la unidad ‘/cdrom/’ y presione Intro

Des:1 http://es.archive.ubuntu.com hoary/universe libgtkmm2.0-1c102 2.2.12-1ubuntu1 [944kB]
Des:2 http://es.archive.ubuntu.com hoary/universe libmysqlclient14 4.1.10a-2 [1390kB]
Des:3 http://es.archive.ubuntu.com hoary/universe mysql-admin-common 1.0.18-1 [335kB]
Des:4 http://es.archive.ubuntu.com hoary/universe mysql-admin 1.0.18-1 [631kB]
Descargados 3299kB en 1m18s (42,0kB/s)

Preconfiguring packages …
Seleccionando el paquete libgtkmm2.0-1c102 previamente no seleccionado.
(Leyendo la base de datos …
59355 ficheros y directorios instalados actualmente.)
Desempaquetando libgtkmm2.0-1c102 (de …/libgtkmm2.0-1c102_2.2.12-1ubuntu1_i386.deb) …
Seleccionando el paquete libmysqlclient14 previamente no seleccionado.
Desempaquetando libmysqlclient14 (de …/libmysqlclient14_4.1.10a-2_i386.deb) …
Seleccionando el paquete libpcre3 previamente no seleccionado.
Desempaquetando libpcre3 (de …/libpcre3_4.5-1.1_i386.deb) …
Seleccionando el paquete mysql-admin-common previamente no seleccionado.
Desempaquetando mysql-admin-common (de …/mysql-admin-common_1.0.18-1_all.deb) …
Seleccionando el paquete mysql-admin previamente no seleccionado.
Desempaquetando mysql-admin (de …/mysql-admin_1.0.18-1_i386.deb) …
Configurando libgtkmm2.0-1c102 (2.2.12-1ubuntu1) …

Configurando libmysqlclient14 (4.1.10a-2) …

Configurando libpcre3 (4.5-1.1) …

Configurando mysql-admin-common (1.0.18-1) …
Configurando mysql-admin (1.0.18-1) …

root@ajpdsoft:/home/usuario # mysql-admin

Para ejecutarlo hemos introducido el comando «mysql-admin». Nos aparecerá esta ventana:

Puesto que aún no hemos cambiado la contraseña del usuario root de MySQL, en «Username» pondremos «root» y dejaremos «Password» en blanco, en «Sercer Hostname» pondremos «localhost», pulsamos en «Connect» y nos aparecerá esta otra ventana:

Con MySQL Administrator podremos crear bases de datos (esquemas), crear tablas, exportar datos, importar datos, hacer copias de seguridad, restaurar copias, …

Para poder permitir la conexión externa a MySQL Server (desde otro PC de la red) deberemos hacer lo siguiente: si hemos instalado una versión de MySQL Server inferior a la 4.1, abriremos MySQL Administrator y nos situamos en «Startup Parameters», nos aparecerá una ventana para selección de fichero, seleccionamos «mysqldump» y pulsamos «Aceptar»:

A continuación desmarcamos la opción «Disable networking» para permitir conexiones externas y pulsamos en «Save changes»:

Como se puede observar en la parte inferior de la ventana anterior nos indica la ubicación y el nombre del fichero de configuración que también se puede modificar manualmente: /etc/mysql/my.cnf, abriendo este fichero y comentando la línea «skip-networking» añadiendo «#» delante produciremos el mismo efecto que haciéndo en MySQL Administrator. En nuestro caso hemos utilizado la aplicación «vi» para editarlo, desde el terminal hemos puesto:

vi /etc/mysql/my.cnf

A continuación pulsamos «i» para editar el fichero, localizamos la línea donde aparece «skip-networking» y colocamos «#» delante, pulsamos Escape, luego pulsamos «:wq» e INTRO para cerrar el fichero y guardar los cambios:

Para todas las versiones de MySQL Server también tendremos que comentar la línea: «bind-address = 127.0.0.1», lo podemos hacer igual que en el caso anterior, tecleando en un terminal vi /etc/mysql/my.cnf, pulsamos «i» para editar, buscamos la línea donde aparecezca «bind-address = 127.0.0.1», insertamos «#» delante, guardamos y cerramos pulsando Escape, luego «:», a continuación «wq» e INTRO. El contenido del fichero /etc/mysql/my.cnf quedará del siguiente modo (para la versión 4.1) (hemos marcado en negrita y más grande la línea a comentar):

#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# – «/etc/mysql/my.cnf» to set global options,
# – «/var/lib/mysql/my.cnf» to set server-specific options or
# – «~/.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

# This will be passed to all mysql clients
# It has been reported that passwords should be enclosed with ticks/quotes
# escpecially if they contain «#» chars…
# Remember to edit /etc/mysql/debian.cnf when changing the socket location.
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock

# Here is entries for some specific programs
# The following values assume you have at least 32M ram

# This was formally known as [safe_mysqld]. Both versions are currently parsed.
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0

[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
#log = /var/log/mysql.log
#log = /var/log/mysql/mysql.log
# Error logging goes to syslog. This is a Debian improvement 🙂
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
language = /usr/share/mysql/english
skip-external-locking
#
# For compatibility to other Debian packages that still use
# libmysqlclient10 and libmysqlclient12.
old_passwords = 1
#
# 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
key_buffer = 16M
max_allowed_packet = 16M
thread_stack = 128K
#
# Query Cache Configuration
#
query_cache_limit = 1048576
query_cache_size = 16777216
query_cache_type = 1
#
# Here you can see queries with especially long duration
#log-slow-queries = /var/log/mysql/mysql-slow.log
#
# The following can be used as easy to replay backup logs or for replication.
#server-id = 1
log-bin = /var/log/mysql/mysql-bin.log
# See /etc/mysql/debian-log-rotate.conf for the number of files kept.
max_binlog_size = 104857600
#binlog-do-db = include_database_name
#binlog-ignore-db = include_database_name
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
#
# Read the manual, too, if you want chroot!
# chroot = /var/lib/mysql/
#
# If you want to enable SSL support (recommended) read the manual or my
# HOWTO in /usr/share/doc/mysql-server/SSL-MINI-HOWTO.txt.gz
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem

[mysqldump]
quick
quote-names
max_allowed_packet = 16M

[mysql]
#no-auto-rehash # faster start of mysql but no tab completition

[isamchk]
key_buffer = 16M

Reiniciaremos MySQL Server (para que los cambios tengan efecto) con el comando:

/etc/init.d/mysql restart

tras el reinicio podremos comprobar (con cualquier escaneador de puertos) que se ha abierto el puerto 3306:

Como último paso para permitir conexiones externas accederemos a MySQL Administrator poniendo el comando:

mysql-admin

Introduciremos los datos de conexión (host, usuario y contraseña) y accederemos a la ventana de MySQL Administrator, seleccionaremos la opción «User Administration», luego pulsaremos con el botón derecho sobre el usuario «root» , nos aparecerá un menú emergente y seleccionaremos la opción «Add Host»:

En la ventana de «Add Host» marcaremos «Hostname or IP» e introduciremos la IP del PC al que queramos permitirle el acceso remoto (admite comodines, por ejemplo 192.168.1.%) y pulsaremos «Aceptar»:

A continuación podremos especificar el nombre del usuario al que le permitiremos el acceso en «MySQL User» y la contraseña en «New Password» y «Confirm Password»:

Por último, accederemos a la pestaña «Schema Privileges» para especificar a qué bases de datos tendrá acceso el usuario y qué permisos tendrá sobre las mismas, para ello marcaremos en «Schema» la base de datos a la que queramos permitir el acceso y en «Available Privileges» marcaremos las acciones permitidas sobre la base de datos:

a continuación pulsaremos el botón con una flecha a la izquierda (Grant Privilege) y los privilegios seleccionados pasarán a «Assigned Privileges». Para guardar los cambios pulsaremos en «Apply Changes»:

Con esto habremos terminado de configurar MySQL Server para el acceso tanto local (desde la propia máquina donde está instalado) como remoto (desde equipos de la red local o, incluso equipo de fuera de la red local).

Será conveniente reiniciar otra vez MySQL Server con el comando:

/etc/init.d/mysql restart

Desde cualquier otro PC que tenga instalado MySQL Administrator o cualquier programa que pueda acceder a MySQL podremos comprobar que funciona correctamente.

En nuestro caso hemos utilizado «AjpdSoft Administración BD» para conectarnos mediante ODBC a la base de datos «catalogo» (creada previamente), hemos creado una tabla, hemos insertado un registro y hemos hecho una consulta de selección para que lo muestre:

create table prueba (campo1 varchar(2), campo2 date);

insert into prueba (campo1, campo2) values (‘1′, STR_TO_DATE(’23/07/2005’, «%d/%c/%Y»));

select * from prueba

Desde el equipo con Ubuntu Linux Debian donde está instalado MySQL Server, podremos comprobar que las sentencias SQL anteriores han surtido efecto:

  • Para distribuciones no Debian (Suse, Red Hat, …) podremos descargar los ficheros necesarios para la instalación de la propia web de mysql: «http://www.mysql.com», una vez descargados los descomprimiremos y los instalaremos. El resto de la configuración es igual que en distribuciones Debian, tal como se explica en este manual.
alonsojpd

alonsojpd

Presidente y fundador de Proyecto A y AjpdSoft

También te podría gustar...

Deja una respuesta