{"id":513,"date":"2023-10-19T13:40:17","date_gmt":"2023-10-19T11:40:17","guid":{"rendered":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/?page_id=513"},"modified":"2025-07-26T15:46:17","modified_gmt":"2025-07-26T13:46:17","slug":"1-4-comencar-a-treballar-amb-mysql","status":"publish","type":"page","link":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/1-4-comencar-a-treballar-amb-mysql\/","title":{"rendered":"1.4. Comen\u00e7ar a treballar amb MySQL"},"content":{"rendered":"<p>A la m\u00e0quina virtual que us proporcionem hi ha instal\u00b7lat un SGBD MySQL. En iniciar la m\u00e0quina virtual tamb\u00e9 s\u2019inicia el servidor MySQL.<\/p>\n<p>El sistema client-servidor permet accedir a un \u00fanic servidor des de diversos clients. Per defecte, el client del sistema \u00e9s un terminal o l\u00ednia d\u2019ordres, per\u00f2 es pot accedir tamb\u00e9 al servidor des d\u2019un client amb interf\u00edcie gr\u00e0fica d\u2019usuari (GUI).<\/p>\n<p>A la m\u00e0quina virtual hi ha instal\u00b7lada la GUI <strong>MySQL Workbench<\/strong>, per\u00f2 \u00e9s possible accedir al servidor MySQL des de molts clients amb diferents GUI.<\/p>\n<p>Per comen\u00e7ar a treballar amb MySQL utilitzarem el terminal de Linux executant l\u2019ordre mysql.<\/p>\n<p>Una vegada establerta la connexi\u00f3 al servidor, el programa client roman sempre a l\u2019espera de la introducci\u00f3 d\u2019una nova ordre SQL per part de l\u2019usuari.<\/p>\n<p>\u00c9s important ser cur\u00f3s amb la sintaxi de les ordres, i finalitzar cada instrucci\u00f3 amb el s\u00edmbol \u00ab<code>;<\/code>\u00bb.<\/p>\n<p>Per il\u00b7lustrar el funcionament del joc d\u2019instruccions de SQL mostrat a la taula 1 sobre el model relacional anterior, implementarem una base de dades que denominarem <strong>cataleg<\/strong>.<\/p>\n<div class=\"tabletitle\"><p>Taula 1. Manual de refer\u00e8ncia d\u2019ordres de MySQL.<\/p>\n<\/div>\n<table width=\"699\">\n<tbody>\n<tr class=\"table-header\">\n<td width=\"182\"><strong>\u00a0Ordre<\/strong><\/td>\n<td width=\"517\"><strong>\u00a0Descripci\u00f3<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>CREATE USER<\/code><\/td>\n<td width=\"517\">Donar d\u2019alta un nou usuari<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>DROP USER<\/code><\/td>\n<td width=\"517\">Donar de baixa un usuari existent<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>ALTER USER<\/code><\/td>\n<td width=\"517\">Modificar el compte d\u2019un usuari<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>GRANT<\/code><\/td>\n<td width=\"517\">Autoritzar un usuari sobre una base de dades<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>REVOKE<\/code><\/td>\n<td width=\"517\">Revocar les autoritzacions d\u2019un usuari<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>SHOW GRANTS<\/code><\/td>\n<td width=\"517\">Mostrar les autoritzacions d\u2019un usuari<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>CREATE DATABASE<\/code><\/td>\n<td width=\"517\">Crear una nova base de dades<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>DROP DATABASE<\/code><\/td>\n<td width=\"517\">Eliminar una base de dades existent<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>USE DATABASE<\/code><\/td>\n<td width=\"517\">Accedir a una base de dades existent<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>SHOW DATABASES<\/code><\/td>\n<td width=\"517\">Mostrar la llista de les bases de dades<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>CREATE TABLE<\/code><\/td>\n<td width=\"517\">Crear una nova taula<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>DROP TABLE<\/code><\/td>\n<td width=\"517\">Eliminar una taula existent<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>SHOW TABLES<\/code><\/td>\n<td width=\"517\">Mostrar la llista de les taules<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>DESCRIBE<\/code><\/td>\n<td width=\"517\">Mostrar els atributs d\u2019una taula<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>LOAD DATA<\/code><\/td>\n<td width=\"517\">Poblar una taula amb un fitxer de registres<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>INSERT<\/code><\/td>\n<td width=\"517\">Poblar una taula amb un registre<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>UPDATE<\/code><\/td>\n<td width=\"517\">Actualitzar un registre de la taula<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>DELETE<\/code><\/td>\n<td width=\"517\">Esborrar un registre de la taula<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>SELECT<\/code><\/td>\n<td width=\"517\">Realitzar una consulta sobre una o m\u00e9s taules<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>Help<\/code><\/td>\n<td width=\"517\">Mostrar ajuda sobre una ordre del sistema<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>Pager<\/code><\/td>\n<td width=\"517\">Mostrar llistats p\u00e0gina a p\u00e0gina amb un altre programa<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>Source<\/code><\/td>\n<td width=\"517\">Executar un <em>script<\/em> d\u2019ordres de SQL<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>Status<\/code><\/td>\n<td width=\"517\">Mostrar informaci\u00f3 sobre l\u2019estat del sistema<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>System<\/code><\/td>\n<td width=\"517\">Executar una ordre del terminal<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>Warnings<\/code><\/td>\n<td width=\"517\">Mostrar avisos del sistema<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>Quit<\/code><\/td>\n<td width=\"517\">Sortir del gestor MySQL<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>Exit<\/code><\/td>\n<td width=\"517\">Sortir del gestor MySQL<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>Mysql<\/code><\/td>\n<td width=\"517\">Ordre del terminal per invocar el gestor MySQL<\/td>\n<\/tr>\n<tr>\n<td width=\"182\"><code>Mysqldump<\/code><\/td>\n<td width=\"517\">Ordre del terminal per al <em>backup<\/em> d\u2019una base de dades<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"tablefooter\"><p>Font: elaboraci\u00f3 pr\u00f2pia.<\/p>\n<\/div>\n<p>El SGBD MySQL permet gestionar m\u00faltiples bases de dades, implementant un sistema de seguretat basat en autoritzacions. Un cop instal\u00b7lat el servidor al nostre entorn Linux, es crea inicialment un usuari amb el rol d&#8217;<a href=\"javascript:void(0);\" class=\"tooltip\" data-toggle=\"popover\" data-placement=\"bottom\" data-content=\"<strong>Atenci\u00f3<\/strong><br>\r\nMySQL posseeix el seu propi llistat d\u2019usuaris, que \u00e9s diferent del conjunt d\u2019usuaris donats d\u2019alta a l\u2019entorn UNIX.\r\n.\" data-placement=\"top\" data-html=\"true\" >administrador<\/a> (en angl\u00e8s, <em>root<\/em>) amb tots els permisos. Per regla general, nom\u00e9s l\u2019usuari amb aquest perfil posseeix els permisos suficients per gestionar el conjunt d\u2019usuaris i bases de dades en la seva totalitat. D\u2019aquesta manera, l\u2019administrador garantir\u00e0 l\u2019acc\u00e9s a una determinada base de dades exclusivament a un grup d\u2019usuaris establert pr\u00e8viament. Malgrat que es pot optar per treballar directament com a administrador, sempre \u00e9s recomanable que configurem un nou compte al nostre nom com a usuari convencional per autoritzar-lo posteriorment a treballar amb una base de dades en concret.<\/p>\n<p>En definitiva, el protocol que hem de seguir per dur a terme la nostra feina amb el gestor de bases de dades consisteix en dues fases:<\/p>\n<ol>\n<li>Invoquem l\u2019int\u00e8rpret de SQL com a administrador, realitzem les seg\u00fcents tasques i abandonem el programa:\n<ol>\n<li>Creem un nou usuari al nostre nom.<\/li>\n<li>Creem una nova base de dades.<\/li>\n<li>Autoritzem el nou usuari a treballar amb aquesta base de dades.<\/li>\n<\/ol>\n<\/li>\n<li>Accedim a l\u2019int\u00e8rpret de SQL amb el nostre propi usuari i procedim a interactuar amb la nova base de dades:\n<ol>\n<li>Especifiquem que anem a treballar amb aquesta base de dades.<\/li>\n<li>Creem noves taules (buides) dins de la base de dades.<\/li>\n<li>Inserim nous registres en aquestes taules. Tamb\u00e9 podem modificar-los i eliminar-los.<\/li>\n<li>Realitzem consultes sobre els registres de les taules per obtenir la informaci\u00f3 desitjada.<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p>Per comen\u00e7ar a treballar primer hem d\u2019executar el programa <strong>mysql <\/strong>des del nostre terminal de Linux emprant l\u2019usuari <em>root<\/em>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">% 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>L\u2019ordre <code>CREATE USER<\/code> permet a l\u2019usuari <strong><em>root<\/em><\/strong> donar d\u2019alta un nou usuari en el nostre sistema. \u00c9s recomanable assignar una contrasenya a cada nou usuari del nostre sistema:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">CREATER USER usuari\r\n\r\nIDENTIFIED BY password;<\/pre>\n<p>Ara, actuant com a administradors, crearem un nou usuari anomenat <strong>student<\/strong>. Per indicar que aquest usuari treballar\u00e0 localment des de la nostra m\u00e0quina, que actua de servidor, emprarem el terme <strong>local<\/strong>.<\/p>\n<p>En alguns exemples, perqu\u00e8 siguin m\u00e9s comprensibles, estructurarem les instruccions de SQL en diverses l\u00ednies. Despr\u00e9s d\u2019introduir cada l\u00ednia de l\u2019ordre pressionant la tecla \u00abEnter\u00bb, l\u2019int\u00e8rpret de MySQL inserir\u00e0 els s\u00edmbols -&gt; per denotar que encara no hem acabat d\u2019introduir l\u2019ordre completa. MySQL no procedir\u00e0 a executar l\u2019ordre fins a recon\u00e8ixer el car\u00e0cter \u00ab;\u00bb.<\/p>\n<div class=\"featured featured-blue\"><\/p>\n<p>Us animem a reproduir al vostre ordinador les ordres de SQL presentades en aquesta unitat.<\/p>\n<p>\n<\/div>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">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>Existeixen diverses ordres per gestionar el conjunt de bases de dades del sistema (consulteu taula 1). En aquest moment hem de procedir a crear la base de dades on treballar\u00e0 el nou usuari amb l\u2019ordre <code>CREATE DATABASE<\/code>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">CREATE DATABASE basededades;<\/pre>\n<p>A continuaci\u00f3, creem la base de dades <strong>cataleg <\/strong>i posteriorment emprem l\u2019ordre <code>SHOW DATABASES<\/code> per obtenir el llistat de bases de dades existents. Podem comprovar que la nova base de dades ha estat creada correctament:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">mysql&gt; CREATE DATABASE cataleg;\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| cataleg            |\r\n| mysql              |\r\n| performance_schema |\r\n| sys                |\r\n+--------------------+\r\n5 rows in set (0.10 sec)<\/pre>\n<p>L\u2019administrador concedeix permisos sobre les operacions que un determinat grup d\u2019usuaris pot realitzar sobre la base de dades. L\u2019ordre <code>GRANT<\/code> permet autoritzar l\u2019acc\u00e9s d\u2019un usuari a una base de dades en particular:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">GRANT operacions ON basededades\r\nTO usuari IDENTIFIED, BY password;<\/pre>\n<p>Per tancar la feina de l\u2019administrador, hem de garantir l\u2019acc\u00e9s a la nova base de dades <strong>cataleg<\/strong> al nostre usuari <strong>student<\/strong>emprant l\u2019ordre <code>GRANT<\/code>. Amb la cl\u00e0usula <strong>ALL<\/strong>, l\u2019administrador concedeix el conjunt complet de permisos a aquest usuari, encara que exclusivament sobre aquesta base de dades. Si volem eliminar privilegis a un usuari hem d\u2019utilitzar l\u2019ordre <code>REVOKE<\/code>.<\/p>\n<p>Finalment, per abandonar l\u2019execuci\u00f3 del programa <strong>mysql <\/strong>com a administradors, podem emprar les ordres <code>quit<\/code> o <code>exit<\/code>.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">mysql&gt; GRANT ALL ON cataleg.* TO 'student'@'localhost';\r\nQuery OK, 0 row affected (0.21 sec)\r\n\r\nmysql&gt; quit;\r\n<\/pre>\n<p>A partir d\u2019aquest instant, a l\u2019hora d\u2019executar el programa <strong>mysql<\/strong> treballarem sobre la nostra base de dades amb el nou usuari <strong>student<\/strong>. En primer lloc, hem d\u2019accedir al gestor de MySQL emprant el nom d\u2019usuari i la contrasenya que hem creat.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">% 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;\r\n<\/pre>\n<p>Com que \u00e9s la primera vegada que hi accedim amb aquest usuari, obtindrem informaci\u00f3 sobre el llistat de les bases de dades accessibles utilitzant l\u2019ordre <code>SHOW DATABASES<\/code>.<\/p>\n<p>Com mostrem a continuaci\u00f3, el nostre nou usuari pot treballar amb dues bases de dades: <strong>cataleg <\/strong>i una segona base de dades (<strong>information_<\/strong><strong>schema<\/strong>) que cont\u00e9 informaci\u00f3 interna sobre la configuraci\u00f3 del sistema.<\/p>\n<p>Amb l\u2019ordre <code>SHOW GRANTS<\/code> podem veure tamb\u00e9 les autoritzacions que l\u2019administrador ha concedit a aquest usuari.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">mysql&gt; SHOW DATABASES;\r\n+----------------------+\r\n| Database             |\r\n+----------------------+\r\n| information_schema   |\r\n| cataleg             |\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 `cataleg`.* TO 'student'@'localhost' |\r\n+--------------------------------------------------------------+\r\n2 rows in set (0.00 sec)\r\n<\/pre>\n<p>Qualsevol usuari, una vegada dins del sistema, ha d\u2019especificar el nom de la base de dades que ha d\u2019utilitzar abans de comen\u00e7ar a realitzar operacions sobre ella. Per indicar el nom de la base de dades que seleccionarem, farem servir l\u2019ordre <strong>USE<\/strong>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">USE basededades;<\/pre>\n<p>Com que desitgem treballar amb la base de dades <strong>cataleg<\/strong>, procedim a declarar aquest fet en l\u2019int\u00e8rpret de MySQL. Un cop aquesta instrucci\u00f3 ha estat executada amb \u00e8xit, ja estem en disposici\u00f3 de crear les taules que serveixen com a suport de les entitats i les relacions dissenyades amb anterioritat per poblar-les posteriorment amb nous registres.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">mysql&gt; USE cataleg;\r\nDatabase changed<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>A la m\u00e0quina virtual que us proporcionem hi ha instal\u00b7lat un SGBD MySQL. En iniciar la m\u00e0quina virtual tamb\u00e9 s\u2019inicia el servidor MySQL. El sistema client-servidor permet accedir a un \u00fanic servidor des de diversos clients. Per defecte, el client del sistema \u00e9s un terminal o l\u00ednia d\u2019ordres, per\u00f2 es pot accedir tamb\u00e9 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\/wp-json\/wp\/v2\/pages\/513"}],"collection":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/comments?post=513"}],"version-history":[{"count":21,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/pages\/513\/revisions"}],"predecessor-version":[{"id":1035,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/pages\/513\/revisions\/1035"}],"wp:attachment":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/media?parent=513"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}