Red de soporte
Instalar el servidor MySQL en el sistema operativo Ubuntu
Última actualización en: 2019-12-20
Autor: Jered Heeschen
MySQL es una base de datos relacional de código abierto que es gratuita y ampliamente utilizada. Es una buena opción si sabe que necesita una base de datos, pero no sabe mucho sobre todas las opciones disponibles.
Este artículo describe una instalación básica de un servidor de base de datos MySQL en el sistema operativo Ubuntu. Es posible que necesite instalar otros paquetes para permitir que las aplicaciones usen MySQL, como extensiones para PHP. Consulte la documentación de su solicitud para obtener más detalles.
Instalar MySQL
Instalar el servidor MySQL mediante el administrador de paquetes del sistema operativo Ubuntu:
sudo apt-get updatesudo apt-get install mysql-server
El instalador instala MySQL y todas las dependencias.
Si la utilidad de instalación segura no se inicia automáticamente después de completarse la instalación, escriba el siguiente comando:
sudo mysql_secure_installation utility
Esta utilidad le pide que defina la contraseña raíz de mysql y otras opciones relacionadas con la seguridad, incluida la eliminación del acceso remoto al usuario raíz y la configuración de la contraseña raíz.
Permitir acceso remoto
Si tiene iptables habilitado y desea conectarse a la base de datos MySQL de otra máquina, debe abrir un puerto en el firewall de su servidor (el puerto predeterminado es 3306). No es necesario hacer esto si la aplicación que usa MySQL se ejecuta en el mismo servidor.
Ejecute el siguiente comando para permitir el acceso remoto al servidor mysql:
sudo ufw enablesudo ufw allow mysql
Iniciar el servicio MySQL
Una vez finalizada la instalación, puede iniciar el servicio de base de datos ejecutando el siguiente comando. Si el servicio ya está iniciado, un mensaje le informa de que el servicio ya se está ejecutando:
sudo systemctl start mysql
Iniciar al reiniciar
Para asegurarse de que el servidor de base de datos se inicie después de un reinicio, ejecute el siguiente comando:
sudo systemctl enable mysql
Configure interfaces
MySQL, de forma predeterminada ya no está vinculado a ( escuchar en ) ninguna interfaz accesible de forma remota.Edite la directiva «dirección de enlace» en /etc / mysql / mysql.conf.d / mysqld.cnf:
bind-address= 127.0.0.1 ( The default. )bind-address= XXX.XXX.XXX.XXX ( The ip address of your Public Net interface. )bind-address= ZZZ.ZZZ.ZZZ.ZZZ ( The ip address of your Service Net interface. )bind-address= 0.0.0.0 ( All ip addresses. )
Reinicie el servicio mysql.
sudo systemctl restart mysql
Iniciar el shell mysql
Hay más de una forma de trabajar con un servidor MySQL, pero este artículo se centra en el enfoque más básico y compatible, el shell mysql
.
-
En el símbolo del sistema, ejecute el siguiente comando para iniciar el shell
mysql
e introdúzcalo como usuario root:/usr/bin/mysql -u root -p
-
Cuando se te solicite una contraseña, introduce la que configuraste a la hora de la instalación o, si no la has configurado, pulsa Intro para enviar nopassword.
Debería aparecer el siguiente símbolo del shell
mysql
:mysql>
Establecer la contraseña raíz
Si ha iniciado sesión introduciendo una contraseña en blanco, o si desea cambiar la contraseña raíz que ha establecido, puede crear o cambiar la contraseña.
-
Para versiones anteriores a MySQL 5.7, ingrese el siguiente comando en
mysql
shell, reemplacepassword
con su nueva contraseña:UPDATE mysql.user SET Password = PASSWORD('password') WHERE User = 'root';
Para la versión MySQL 5.7 y posterior, ingrese el siguiente comando en el shell
mysql
, reemplazandopassword
con su nueva contraseña:UPDATE mysql.user SET authentication_string = PASSWORD('password') WHERE User = 'root';
-
Para que el cambio surta efecto, vuelva a cargar la información de usuario almacenada con el siguiente comando:
FLUSH PRIVILEGES;
Nota: Estamos usando todo en mayúsculas para los comandos SQL. Si escribes esos comandos en minúsculas, funcionarán. Por convención, los comandos se escriben en mayúsculas para que destaquen de los nombres de campo y otros datos que se están manipulando.
Si necesita restablecer la contraseña de root más adelante, consulte Restablecer una contraseña de root de MySQL.
Ver usuarios
MySQL almacena la información del usuario en su propia base de datos. El nombre de la base de datos es mysql. Dentro de esa base de datos, la información del usuario se encuentra en una tabla, adataset, con nombre de usuario. Si desea ver qué usuarios están configurados en la tabla MySQLuser, ejecute el siguiente comando:
SELECT User, Host, authentication_string FROM mysql.user;
La siguiente lista describe las partes de ese comando:
- SELECT le indica a MySQL que está solicitando datos.
- User, Host, authentication_string le indica a MySQL en qué campos desea que busque. Los campos son categorías para los datos de una tabla. En este caso, está buscando el nombre de usuario, el host asociado con el nombre de usuario y la entrada de contraseña cifrada.
- DE mysql.usuario » le dice a MySQL que obtenga los datos de la mysqldatabase y la tabla de usuarios.
- Un punto y coma (;) termina el comando.
Nota: Todas las consultas SQL terminan en punto y coma. MySQL no procesa una consulta hasta que se escribe un punto y coma.
Hosts de usuario
El siguiente ejemplo es el resultado de la consulta anterior:
SELECT User, Host, authentication_string FROM mysql.user;+------------------+-----------+-------------------------------------------+| User | Host | authentication_string |+------------------+-----------+-------------------------------------------+| root | localhost | *756FEC25AC0E1823C9838EE1A9A6730A20ACDA21 || mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE || mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE || debian-sys-maint | localhost | *27E7CA2445405AB10C656AFD0F86AF76CCC57692 |+------------------+-----------+-------------------------------------------+
Los usuarios están asociados con un host, específicamente, el host desde el que se conectan.El usuario raíz en este ejemplo se define para localhost, para la dirección IP de localhost y el nombre de host del servidor.Por lo general, debe configurar un usuario para un solo host, el desde el que se conecta típicamente.
Si ejecuta su aplicación en el mismo equipo que MySQLserver, el host al que se conecta de forma predeterminada es localhost. Cualquier usuario nuevo que cree debe tener localhost en su campo host.
Si su aplicación se conecta de forma remota, la entrada de host que busca MySQL es la dirección IP o el nombre de host DNS del equipo remoto (del que proviene el cliente).
Usuarios anónimos
En la salida de ejemplo, una entrada tiene un valor de host, pero no un nombre de usuario o contraseña.Es un usuario anónimo. Cuando un cliente se conecta sin un nombre de usuario especificado,intenta conectarse como usuario anónimo.
Normalmente no desea ningún usuario anónimo, pero algunas instalaciones de MySQL incluyen una de forma predeterminada. Si ve uno, debe eliminar el usuario (consulte el nombre de usuario con comillas vacías, como ‘ ‘) o establecer una contraseña para él.
Crear una base de datos
Hay una diferencia entre un servidor de base de datos y una base de datos, aunque estos términos se usan a menudo indistintamente. MySQL es un servidor de bases de datos, lo que significa que rastrea bases de datos y controla el acceso a ellas. La base de datos almacena los datos, y es la base de datos a la que las aplicaciones intentan acceder cuando interactúan con MySQL.
Algunas aplicaciones crean una base de datos como parte de su proceso de configuración, pero otras requieren que usted mismo cree una base de datos e informe a la aplicación al respecto.
Para crear una base de datos,inicie sesión en el shell mysql
y ejecute el siguiente comando, reemplazando demodb
por el nombre de la base de datos que desea crear:
CREATE DATABASE demodb;
Una vez creada la base de datos, puede verificar su creación ejecutando una consulta para listar todas las bases de datos. El siguiente ejemplo muestra la consulta y la salida de ejemplo:
SHOW DATABASES;+--------------------+| Database |+--------------------+| information_schema || demodb || mysql |+--------------------+3 rows in set (0.00 sec)
Agregar un usuario de base de datos
Cuando las aplicaciones se conectan a la base de datos utilizando el usuario root, generalmente tienen más privilegios de los que necesitan. Puede agregar usuarios que las aplicaciones puedan usar para conectarse a la nueva base de datos. En el siguiente ejemplo, se crea un usuario llamado demouser.
-
Para crear un nuevo usuario, ejecute el siguiente comando en
mysql
shell:INSERT INTO mysql.user (User,Host,authentication_string,ssl_cipher,x509_issuer,x509_subject)VALUES('demouser','localhost',PASSWORD('demopassword'),'','','');
-
Cuando realice cambios en la tabla de usuarios de la base de datos mysql, dígale amysql que lea los cambios descargando los privilegios de la siguiente manera:
FLUSH PRIVILEGES;
-
Compruebe que el usuario se creó ejecutando una consulta SELECT de nuevo:
SELECT User, Host, authentication_string FROM mysql.user;+------------------+-----------+-------------------------------------------+| User | Host | Password |+------------------+-----------+-------------------------------------------+| root | localhost | *756FEC25AC0E1823C9838EE1A9A6730A20ACDA21 || mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE || mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE || debian-sys-maint | localhost | *27E7CA2445405AB10C656AFD0F86AF76CCC57692 || demouser | localhost | *0756A562377EDF6ED3AC45A00B356AAE6D3C6BB6 |+------------------+-----------+-------------------------------------------+
Conceder permisos de usuario de base de datos
Justo después de crear un nuevo usuario, este no tiene privilegios. El usuario puede iniciar sesión, pero no se puede usar para realizar cambios en la base de datos.
Resumen
Si solo está creando una base de datos y un usuario, habrá terminado. Los conceptos que cubrimos aquí deben darte un comienzo sólido desde el que aprender más.
- Configurar el servidor MySQL en el sistema operativo Ubuntu
- Restablecer una contraseña de root MySQL