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 acerca de 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 deba 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
Instale el servidor MySQL utilizando el administrador de paquetes del sistema operativo Ubuntu:
sudo apt-get update
sudo 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 que se complete la instalación, ingrese el siguiente comando:
sudo mysql_secure_installation utility
Esta utilidad le solicita 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 desde otra máquina, debe abrir un puerto en el firewall de su servidor (el puerto predeterminado es 3306). No necesita hacer esto si la aplicación que usa MySQL se está ejecutando en el mismo servidor.
Ejecute el siguiente comando para permitir el acceso remoto al servidor mysql:
sudo ufw enable
sudo ufw allow mysql
Iniciar el servicio MySQL
Una vez completada la instalación, puede iniciar el servicio de la base de datos ejecutando el siguiente comando. Si el servicio ya se inició, un mensaje le informa que el servicio ya se está ejecutando:
sudo systemctl start mysql
Iniciar al reiniciar
Para asegurarse de que el servidor de la base de datos se inicie después de reiniciar, ejecute el siguiente comando:
sudo systemctl enable mysql
Configurar interfaces
MySQL, de forma predeterminada, ya no está vinculado (escuchando) a ninguna interfaz accesible de forma remota. Edite la directiva "bind-address" 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 mysql
concha.
-
En el símbolo del sistema, ejecute el siguiente comando para iniciar
mysql
shell e ingréselo como usuario root:/usr/bin/mysql -u root -p
-
Cuando se le solicite una contraseña, ingrese la que configuró en el momento de la instalación, o si no configuró una, presione Entrar para enviar sin contraseña.
El siguiente
mysql
Debería aparecer el indicador de shell:mysql>
Establecer la contraseña de root
Si inició sesión ingresando una contraseña en blanco, o si desea cambiar la contraseña raíz que configuró, 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 posteriores, ingrese el siguiente comando en
mysql
shell, 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 mayúsculas para los comandos SQL. Si escribe esos comandos en minúsculas, funcionarán. Por convención, los comandos están escritos en mayúsculas para que se destaquen de los nombres de campo y otros datos que se manipulan.
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 está en una tabla, un conjunto de datos, llamado 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:
- SELECCIONAR le dice a MySQL que está solicitando datos.
- Usuario , Anfitrión , cadena_autenticación le dice a MySQL en qué campos quiere que busque. Los campos son categorías para los datos en 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.
- DESDE mysql.user " le dice a MySQL que obtenga los datos de mysql base de datos y el usuario mesa.
- Un punto y coma (;) finaliza el comando.
Nota :Todas las consultas SQL terminan en punto y coma. MySQL no procesa una consulta hasta que escribe un punto y coma.
Usuario host
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 cual 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, desde el que normalmente se conecta.
Si está ejecutando su aplicación en la misma computadora que el servidor MySQL, el host al que se conecta de forma predeterminada es localhost . Cualquier nuevo usuario que cree debe tener localhost en su host campo.
Si su aplicación se conecta de forma remota, el host La entrada que busca MySQL es la dirección IP o el nombre de host DNS de la computadora remota (de la que proviene el cliente).
Usuarios anónimos
En el resultado del ejemplo, una entrada tiene un valor de host pero no tiene nombre de usuario ni contraseña. Es un usuario anónimo . Cuando un cliente se conecta sin especificar un nombre de usuario, está intentando conectarse como un usuario anónimo.
Por lo general, no desea ningún usuario anónimo, pero algunas instalaciones de MySQL incluyen uno 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 , incluso aunque esos términos a menudo se usan indistintamente. MySQL es un servidor de base de datos, lo que significa que realiza un seguimiento de las 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 y se lo informe a la aplicación.
Para crear una base de datos, inicie sesión en mysql
shell y ejecute el siguiente comando, reemplazando demodb
con el nombre de la base de datos que desea crear:
CREATE DATABASE demodb;
Después de crear la base de datos, puede verificar su creación ejecutando una consulta para enumerar todas las bases de datos. El siguiente ejemplo muestra la consulta y el resultado del ejemplo:
SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| demodb |
| mysql |
+--------------------+
3 rows in set (0.00 sec)
Añadir un usuario de base de datos
Cuando las aplicaciones se conectan a la base de datos mediante el usuario raíz, generalmente tienen más privilegios de los que necesitan. Puede agregar usuarios que las aplicaciones pueden usar para conectarse a la nueva base de datos. En el siguiente ejemplo, un usuario llamado demouser se crea.
-
Para crear un nuevo usuario, ejecute el siguiente comando en
mysql
concha:INSERT INTO mysql.user (User,Host,authentication_string,ssl_cipher,x509_issuer,x509_subject) VALUES('demouser','localhost',PASSWORD('demopassword'),'','','');
-
Cuando realiza cambios en el usuario tabla en el mysql base de datos, dígale a MySQL que lea los cambios eliminando los privilegios, de la siguiente manera:
FLUSH PRIVILEGES;
-
Verifique que el usuario se haya creado ejecutando una consulta SELECT nuevamente:
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 | +------------------+-----------+-------------------------------------------+
Otorgar permisos de usuario de la base de datos
Inmediatamente después de crear un nuevo usuario, no tiene privilegios. El usuario puede iniciar sesión, pero no se puede utilizar para realizar cambios en la base de datos.
-
Otorgue al usuario permisos completos para su nueva base de datos ejecutando el siguiente comando:
GRANT ALL PRIVILEGES ON demodb.* to demouser@localhost;
-
Descargue los privilegios para que el cambio sea oficial ejecutando el siguiente comando:
FLUSH PRIVILEGES;
-
Para verificar que esos privilegios estén establecidos, ejecute el siguiente comando:
SHOW GRANTS FOR 'demouser'@'localhost'; 2 rows in set (0.00 sec)
MySQL devuelve los comandos necesarios para reproducir los permisos de ese usuario si tuviera que reconstruir el servidor.
USAGE on \*.\*
significa que los usuarios no obtienen privilegios sobre nada de forma predeterminada. Ese comando es anulado por el segundo comando, que es la concesión que ejecutó para la nueva base de datos.+-----------------------------------------------------------------------------------------------------------------+ | Grants for demouser@localhost | +-----------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'demouser'@'localhost' IDENTIFIED BY PASSWORD '*0756A562377EDF6ED3AC45A00B356AAE6D3C6BB6' | | GRANT ALL PRIVILEGES ON `demodb`.* TO 'demouser'@'localhost' | +-----------------------------------------------------------------------------------------------------------------+ 2 rows in set (0.00 sec)
Resumen
Si solo está creando una base de datos y un usuario, ya ha terminado. Los conceptos cubiertos aquí deberían brindarle un punto de partida sólido desde el cual aprender más.
Artículos relacionados
- Configurar el servidor MySQL en el sistema operativo Ubuntu
- Restablecer una contraseña raíz de MySQL