{"id":275,"date":"2023-09-02T17:28:56","date_gmt":"2023-09-02T15:28:56","guid":{"rendered":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/?page_id=275"},"modified":"2025-07-26T15:47:36","modified_gmt":"2025-07-26T13:47:36","slug":"1-4-empezar-a-trabajar-con-mysql","status":"publish","type":"page","link":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/es\/1-4-empezar-a-trabajar-con-mysql\/","title":{"rendered":"1.4. Empezar a trabajar con MySQL"},"content":{"rendered":"<p>En la m\u00e1quina virtual que os proporcionamos hay instalado un SGBD MySQL. Al iniciar la m\u00e1quina virtual tambi\u00e9n se inicia el servidor MySQL.<\/p>\n<p>El sistema cliente-servidor permite acceder a un \u00fanico servidor desde varios clientes. Por defecto, el cliente del sistema es un terminal o l\u00ednea de comandos, pero se puede acceder tambi\u00e9n al servidor desde un cliente con interfaz gr\u00e1fica de usuario (GUI).<\/p>\n<p>En la m\u00e1quina virtual est\u00e1 instalada la GUI <strong>MySQL Workbench<\/strong>, pero es posible acceder al servidor MySQL desde muchos clientes con diferentes GUI.<\/p>\n<p>Para empezar a trabajar con MySQL utilizaremos el terminal de Linux ejecutando el comando mysql.<\/p>\n<p>Una vez establecida la conexi\u00f3n al servidor, el programa cliente permanece siempre a la espera de la introducci\u00f3n de un nuevo comando SQL por parte del usuario.<\/p>\n<p>Es importante ser cuidadoso con la sintaxis de los comandos, finalizando cada instrucci\u00f3n con el s\u00edmbolo \u00ab;\u00bb.<\/p>\n<p>Para ilustrar el funcionamiento del juego de instrucciones de SQL mostrado en la tabla 1 sobre el modelo relacional anterior, implementaremos una base de datos que denominaremos <strong>catalogo<\/strong>.<\/p>\n<p><strong><div class=\"tabletitle\"><p><\/strong>Tabla 1. Manual de referencia de comandos de MySQL<\/p>\n<\/div><\/p>\n<table width=\"699\">\n<tbody>\n<tr class=\"table-header\">\n<td width=\"182\"><strong>\u00a0Comando<\/strong><\/td>\n<td width=\"517\"><strong>\u00a0Descripci\u00f3n<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>CREATE USER<\/code><\/td>\n<td width=\"517\">\u00a0Dar de alta a un nuevo usuario<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>DROP USER<\/code><\/td>\n<td width=\"517\">\u00a0Dar de baja a un usuario existente<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>ALTER USER<\/code><\/td>\n<td width=\"517\">\u00a0Modificar la cuenta de un usuario<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>GRANT<\/code><\/td>\n<td width=\"517\">\u00a0Autorizar a un usuario sobre una base de datos<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>REVOKE<\/code><\/td>\n<td width=\"517\">\u00a0Revocar las autorizaciones de un usuario<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>SHOW GRANTS<\/code><\/td>\n<td width=\"517\">\u00a0Mostrar las autorizaciones de un usuario<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>CREATE DATABASE<\/code><\/td>\n<td width=\"517\">\u00a0Crear una nueva base de datos<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>DROP DATABASE<\/code><\/td>\n<td width=\"517\">\u00a0Eliminar una base de datos existente<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>USE DATABASE<\/code><\/td>\n<td width=\"517\">\u00a0Acceder a una base de datos existente<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>SHOW DATABASES<\/code><\/td>\n<td width=\"517\">\u00a0Mostrar la lista de las bases de datos<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>CREATE TABLE<\/code><\/td>\n<td width=\"517\">\u00a0Crear una nueva tabla<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>DROP TABLE<\/code><\/td>\n<td width=\"517\">\u00a0Eliminar una tabla existente<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>SHOW TABLES<\/code><\/td>\n<td width=\"517\">\u00a0Mostrar la lista de las tablas<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>DESCRIBE<\/code><\/td>\n<td width=\"517\">\u00a0Mostrar los atributos de una tabla<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>LOAD DATA<\/code><\/td>\n<td width=\"517\">\u00a0Poblar una tabla con un fichero de registros<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>INSERT<\/code><\/td>\n<td width=\"517\">\u00a0Poblar una tabla con un registro<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>UPDATE<\/code><\/td>\n<td width=\"517\">\u00a0Actualizar un registro de la tabla<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>DELETE<\/code><\/td>\n<td width=\"517\">\u00a0Borrar un registro de la tabla<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>SELECT<\/code><\/td>\n<td width=\"517\">\u00a0Realizar una consulta sobre una o m\u00e1s tablas<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>Help<\/code><\/td>\n<td width=\"517\">\u00a0Mostrar ayuda sobre un comando del sistema<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>Pager<\/code><\/td>\n<td width=\"517\">\u00a0Mostrar listados p\u00e1gina a p\u00e1gina con otro programa<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>Source<\/code><\/td>\n<td width=\"517\">\u00a0Ejecutar un <em>script<\/em> de comandos de SQL<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>Status<\/code><\/td>\n<td width=\"517\">\u00a0Mostrar informaci\u00f3n sobre el estado del sistema<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>System<\/code><\/td>\n<td width=\"517\">\u00a0Ejecutar un comando del terminal<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>Warnings<\/code><\/td>\n<td width=\"517\">\u00a0Mostrar avisos del sistema<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>Quit<\/code><\/td>\n<td width=\"517\">\u00a0Salir del gestor MySQL<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>Exit<\/code><\/td>\n<td width=\"517\">\u00a0Salir del gestor MySQL<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>Mysql<\/code><\/td>\n<td width=\"517\">\u00a0Comando del terminal para invocar al gestor MySQL<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>Mysqldump<\/code><\/td>\n<td width=\"517\">\u00a0Comando del terminal para el <em>backup<\/em> de una base de datos<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"tablefooter\"><p>Fuente: elaboraci\u00f3n propia.<\/p>\n<\/div>\n<p>El SGBD MySQL permite gestionar m\u00faltiples bases de datos, implementando un sistema de seguridad basado en autorizaciones. Una vez instalado el servidor en nuestro entorno Linux, se crea inicialmente un usuario con el rol de <a href=\"javascript:void(0);\" class=\"tooltip\" data-toggle=\"popover\" data-placement=\"bottom\" data-content=\"<strong>Atenci\u00f3n<\/strong><br>\r\nMySQL posee su propio listado de usuarios, que es diferente del conjunto de usuarios dados de alta en el entorno UNIX.\r\n.\" data-placement=\"top\" data-html=\"true\" >administrador<\/a>\r\n (en ingl\u00e9s, <em>root<\/em>) con todos los permisos. Por regla general, solo el usuario con dicho perfil posee los permisos suficientes para gestionar el conjunto de usuarios y bases de datos en su totalidad. De este modo, el administrador garantizar\u00e1 el acceso a una determinada base de datos exclusivamente a un grupo de usuarios establecido previamente. Pese a que puede optarse por trabajar directamente como administrador, siempre es recomendable que configuremos una nueva cuenta a nuestro nombre como usuario convencional para autorizarle posteriormente a trabajar con una base de datos en concreto.<\/p>\n<p>En definitiva, el protocolo que debemos seguir para llevar a cabo nuestro trabajo con el gestor de bases de datos consiste en dos fases:<\/p>\n<ol>\n<li>Invocamos al int\u00e9rprete de SQL como administrador, realizamos las siguientes tareas y abandonamos el programa:\n<ol>\n<li>Creamos un nuevo usuario a nuestro nombre.<\/li>\n<li>Creamos una nueva base de datos.<\/li>\n<li>Autorizamos al nuevo usuario a trabajar con esa base de datos.<\/li>\n<\/ol>\n<\/li>\n<li>Accedemos al int\u00e9rprete de SQL con nuestro propio usuario y procedemos a interactuar con la nueva base de datos:\n<ol>\n<li>Especificamos que vamos a trabajar con dicha base de datos.<\/li>\n<li>Creamos nuevas tablas (vac\u00edas) dentro de la base de datos.<\/li>\n<li>Insertamos nuevos registros en dichas tablas. Tambi\u00e9n podemos modificarlos y eliminarlos.<\/li>\n<li>Realizamos consultas sobre los registros de las tablas para obtener la informaci\u00f3n deseada.<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p>Para empezar a trabajar primero debemos ejecutar el programa <strong>mysql <\/strong>desde nuestro terminal de Linux empleando el usuario <em>root<\/em>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\" data-enlighter-theme=\"mowtwo\">% mysql -u root -p\r\nEnter password:\r\nWelcome to the MySQL monitor.  Commands end with ; or \\g.\r\nYour MySQL connection id is 5\r\nServer version: 5.7.17-0ubuntu0.16.04.1 (Ubuntu)\r\nCopyright (c) 2000, 2016, Oracle and\/or its affiliates. All rights reserved.\r\nOracle is a registered trademark of Oracle Corporation and\/or its affiliates. Other names may be trademarks of their respective owners.\r\n\r\nType 'help;' or '\\h' for help. Type '\\c' to clear the current input statement.\r\n\r\nmysql&gt;<\/pre>\n<p>El comando <code>CREATE USER<\/code> permite al usuario <strong><em>root<\/em><\/strong> dar de alta a un nuevo usuario en nuestro sistema. Es recomendable asignar una contrase\u00f1a a cada nuevo usuario de nuestro sistema:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">CREATER USER usuario\r\n\r\nIDENTIFIED BY password;<\/pre>\n<p>Ahora, actuando como administradores, crearemos un nuevo usuario llamado <strong>student<\/strong>. Para indicar que este usuario trabajar\u00e1 localmente desde nuestra m\u00e1quina, que act\u00faa de servidor, emplearemos el t\u00e9rmino <strong>localhost<\/strong>.<\/p>\n<p>En algunos ejemplos, para que sean m\u00e1s compresibles, vamos a estructurar las instrucciones de SQL en varias l\u00edneas. N\u00f3tese que tras introducir cada l\u00ednea del comando presionando la tecla \u00abEnter\u00bb, el int\u00e9rprete de MySQL insertar\u00e1 los s\u00edmbolos -&gt; para denotar que a\u00fan no hemos terminado de introducir el comando completo. MySQL no proceder\u00e1 a ejecutar el comando hasta reconocer el car\u00e1cter \u00ab;\u00bb.<\/p>\n<div class=\"featured featured-blue\"><p>\nOs animamos a reproducir en vuestro ordenador los comandos de SQL presentados en esta unidad.<\/p>\n<\/div>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\" data-enlighter-theme=\"mowtwo\">mysql&gt; CREATE USER 'student'@'localhost'\r\n    -&gt; IDENTIFIED BY '123456';\r\n\r\nQuery OK, 0 rows affected (0.35 sec)<\/pre>\n<p>Existen varios comandos para gestionar el conjunto de bases de datos del sistema (consultad tabla 1). En este momento debemos proceder a crear la base de datos donde trabajar\u00e1 el nuevo usuario con el comando <code>CREATE DATABASE<\/code>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">CREATE DATABASE basededatos;<\/pre>\n<p>A continuaci\u00f3n, creamos la base de datos <strong>catalogo <\/strong>y posteriormente empleamos el comando <code>SHOW DATABASES<\/code> para obtener el listado de bases de datos existentes. Podemos comprobar que la nueva base de datos ha sido creada correctamente:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\" data-enlighter-theme=\"mowtwo\">mysql&gt; CREATE DATABASE catalogo;\r\nQuery OK, 1 row affected (0.00 sec)\r\n\r\nmysql&gt; SHOW DATABASES;\r\n+--------------------+\r\n| Database           |\r\n+--------------------+\r\n| information_schema |\r\n| catalogo            |\r\n| mysql              |\r\n| performance_schema |\r\n| sys                |\r\n+--------------------+\r\n5 rows in set (0.10 sec)<\/pre>\n<p>El administrador concede permisos sobre las operaciones que un determinado grupo de usuarios puede realizar sobre la base de datos. El comando GRANT permite autorizar el acceso de un usuario a una base de datos en particular:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">GRANT operaciones ON basededatos\r\nTO usuario IDENTIFIED, BY password;<\/pre>\n<p>Para cerrar el trabajo del administrador, debemos garantizar el acceso a la nueva base de datos <strong>catalogo <\/strong>a nuestro usuario <strong>student<\/strong> empleando el comando <code>GRANT<\/code>. Con la cl\u00e1usula <strong>ALL<\/strong>, el administrador concede el conjunto completo de permisos a este usuario, aunque exclusivamente sobre esta base de datos. Si queremos eliminar privilegios a un usuario debemos utilizar el comando <code>REVOKE<\/code>.<\/p>\n<p>Finalmente, para abandonar la ejecuci\u00f3n del programa <strong>mysql <\/strong>como administradores, podemos emplear los comandos <code>quit<\/code> o <code>exit<\/code>.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\" data-enlighter-theme=\"mowtwo\">mysql&gt; GRANT ALL ON catalogo.* TO 'student'@'localhost';\r\nQuery OK, 0 row affected (0.21 sec)\r\n\r\nmysql&gt; quit;<\/pre>\n<p>A partir de este instante, a la hora de ejecutar el programa <strong>mysql<\/strong> vamos a trabajar sobre nuestra base de datos con el nuevo usuario <strong>student<\/strong>. En primer lugar, debemos acceder al gestor de MySQL empleando el nombre de usuario y la contrase\u00f1a que hemos creado.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\" data-enlighter-theme=\"mowtwo\">% mysql -u student -p\r\nEnter password:\r\nWelcome to the MySQL monitor. Commands end with ; or g.\r\nYour MySQL connection id is 8\r\nServer version: 5.7.17-Oubuntu0.16.04.1 (Ubuntu)\r\n\r\nCopyright (c) 2000, 2016, Oracle and\/or its affiliates. All rights reserved.\r\n\r\nOracle is a registered trademark of Oracle Corporation and\/or its affiliates.\r\nOther names may be trademarks of their respective owners.\r\n\r\nType 'help;' or 'h' for help. Type 'c' to clear the current input statement.\r\n\r\nmysql&gt;<\/pre>\n<p>Como es la primera vez que accedemos con este usuario, vamos a obtener informaci\u00f3n sobre el listado de las bases de datos accesibles utilizando el comando <code>SHOW DATABASES<\/code>.<\/p>\n<p>Como mostramos a continuaci\u00f3n, nuestro nuevo usuario puede trabajar con dos bases de datos: <strong>catalogo <\/strong>y una segunda base de datos (<strong>information_<\/strong><strong>schema<\/strong>) que contiene informaci\u00f3n interna sobre la configuraci\u00f3n del sistema.<\/p>\n<p>Con el comando <code>SHOW GRANTS<\/code> podemos ver tambi\u00e9n las autorizaciones que el administrador ha concedido a este usuario.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\" data-enlighter-theme=\"mowtwo\">mysql&gt; SHOW DATABASES;\r\n+----------------------+\r\n| Database             |\r\n+----------------------+\r\n| information_schema   |\r\n| catalogo             |\r\n+----------------------+\r\n2 rows in set (0.00 sec)\r\n\r\nmysql&gt; SHOW GRANTS;\r\n+---------------------------------------------------------------+\r\n| Grants for student@localhost                                  |\r\n+---------------------------------------------------------------+\r\n| GRANT USAGE ON *.* TO 'student'@'localhost'                   |\r\n| GRANT ALL PRIVILEGES ON `catalogo`.* TO 'student'@'localhost' |\r\n+---------------------------------------------------------------+\r\n2 rows in set (0.00 sec)<\/pre>\n<p>Cualquier usuario, una vez dentro del sistema, debe especificar el nombre de la base de datos que va a usar antes de empezar a realizar operaciones sobre ella. Para indicar el nombre de la base de datos que vamos a seleccionar, usaremos el comando <strong>USE<\/strong>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">USE basededatos;<\/pre>\n<p>Como deseamos trabajar con la base de datos <strong>catalogo<\/strong>, procedemos a declarar este hecho en el int\u00e9rprete de MySQL. Una vez esta instrucci\u00f3n ha sido ejecutada con \u00e9xito, ya estamos en disposici\u00f3n de crear las tablas que sirven como soporte de las entidades y las relaciones dise\u00f1adas con anterioridad para poblarlas posteriormente con nuevos registros.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\" data-enlighter-theme=\"mowtwo\">mysql&gt; USE catalogo;\r\nDatabase changed<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>En la m\u00e1quina virtual que os proporcionamos hay instalado un SGBD MySQL. Al iniciar la m\u00e1quina virtual tambi\u00e9n se inicia el servidor MySQL. El sistema cliente-servidor permite acceder a un \u00fanico servidor desde varios clientes. Por defecto, el cliente del sistema es un terminal o l\u00ednea de comandos, pero se puede acceder tambi\u00e9n al servidor [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"acf":[],"_links":{"self":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/es\/wp-json\/wp\/v2\/pages\/275"}],"collection":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/es\/wp-json\/wp\/v2\/comments?post=275"}],"version-history":[{"count":17,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/es\/wp-json\/wp\/v2\/pages\/275\/revisions"}],"predecessor-version":[{"id":1036,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/es\/wp-json\/wp\/v2\/pages\/275\/revisions\/1036"}],"wp:attachment":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/es\/wp-json\/wp\/v2\/media?parent=275"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}