{"id":31238,"date":"2026-04-16T13:55:00","date_gmt":"2026-04-16T11:55:00","guid":{"rendered":"https:\/\/contabo.com\/blog\/guia-completa-para-crear-usuarios-y-otorgar-privilegios-en-mysql\/"},"modified":"2026-06-10T12:31:10","modified_gmt":"2026-06-10T10:31:10","slug":"crear-usuarios-y-otorgar-privilegios-en-mysql","status":"publish","type":"post","link":"https:\/\/contabo.com\/blog\/es\/crear-usuarios-y-otorgar-privilegios-en-mysql\/","title":{"rendered":"Gu\u00eda completa para crear usuarios y otorgar privilegios en MySQL"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"630\" src=\"https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/04\/blog-head_mysql-create-user-and-grant-privileges_guide_ES.webp\" alt=\"Gu\u00eda completa para crear usuarios y otorgar privilegios en MySQL\" class=\"wp-image-30308\" srcset=\"https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/04\/blog-head_mysql-create-user-and-grant-privileges_guide_ES.webp 1200w, https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/04\/blog-head_mysql-create-user-and-grant-privileges_guide_ES-600x315.webp 600w, https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/04\/blog-head_mysql-create-user-and-grant-privileges_guide_ES-768x403.webp 768w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/figure>\n\n\n\n<p>Ejecutar toda tu instancia de MySQL bajo la cuenta root es el equivalente, en bases de datos, a dejar la puerta principal de tu servidor abierta. Aqu\u00ed tienes c\u00f3mo crear usuarios con los privilegios adecuados y nada m\u00e1s.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-requisitos-previos-acceso-y-configuracion-de-mysql\">Requisitos previos: Acceso y configuraci\u00f3n de MySQL<\/h2>\n\n\n\n<p>Necesitas una instalaci\u00f3n de MySQL existente y la capacidad de iniciar sesi\u00f3n como root o como un usuario con privilegios GRANT OPTION:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mysql -u root -p<\/code><\/pre>\n\n\n\n<p>Introduce tu contrase\u00f1a de root cuando se te pida. Desde aqu\u00ed puedes crear usuarios, asignar privilegios y gestionar toda la capa de control de acceso.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-como-crear-un-usuario-de-mysql\">C\u00f3mo crear un usuario de MySQL<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-sintaxis-de-la-declaracion-create-user\">Sintaxis de la declaraci\u00f3n CREATE USER<\/h3>\n\n\n\n<p>La sintaxis completa para crear un usuario de MySQL:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE USER 'username'@'host' IDENTIFIED BY 'password';<\/code><\/pre>\n\n\n\n<p>La parte del hosting controla desde d\u00f3nde pueden originarse las conexiones. localhost restringe las conexiones \u00fanicamente al entorno local. % permite conexiones desde cualquier hosting. Tambi\u00e9n puedes especificar una direcci\u00f3n IP o una subred.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-crear-un-usuario-con-contrasena\">Crear un usuario con contrase\u00f1a<\/h3>\n\n\n\n<p>Crea un usuario local llamado appuser:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'StrongPassword123!';<\/code><\/pre>\n\n\n\n<p>En MySQL 8.0+, el plugin de autenticaci\u00f3n predeterminado es caching_sha2_password. Los clientes m\u00e1s antiguos pueden necesitar mysql_native_password en su lugar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE USER 'appuser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'StrongPassword123!';<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-creando-un-usuario-para-acceso-remoto\">Creando un usuario para acceso remoto<\/h3>\n\n\n\n<p>Permite conexiones desde cualquier hosting utilizando % como valor del host:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE USER 'remoteuser'@'%' IDENTIFIED BY 'RemotePassword456!';<\/code><\/pre>\n\n\n\n<p>Para un control m\u00e1s estricto, restringe a una IP espec\u00edfica:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE USER 'remoteuser'@'192.168.1.100' IDENTIFIED BY 'RemotePassword456!';<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-como-otorgar-privilegios-en-mysql\">C\u00f3mo otorgar privilegios en MySQL<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-otorgar-todos-los-privilegios-en-una-base-de-datos\">Otorgar todos los privilegios en una base de datos<\/h3>\n\n\n\n<p>Otorgar a un usuario acceso total a una base de datos espec\u00edfica:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GRANT ALL PRIVILEGES ON mydatabase.* TO 'appuser'@'localhost';<\/code><\/pre>\n\n\n\n<p>La sintaxis *.* concede privilegios en todas las bases de datos, algo que solo deber\u00edas usar para cuentas administrativas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-otorgar-privilegios-especificos\">Otorgar privilegios espec\u00edficos<\/h3>\n\n\n\n<p>El principio de privilegios m\u00ednimos es el enfoque correcto. Un usuario de informes de solo lectura necesita solo SELECT:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GRANT SELECT ON mydatabase.* TO 'readonly_user'@'localhost';<\/code><\/pre>\n\n\n\n<p>Una aplicaci\u00f3n que solo lee y escribe registros:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GRANT SELECT, INSERT, UPDATE, DELETE ON mydatabase.* TO 'appuser'@'localhost';<\/code><\/pre>\n\n\n\n<p>Los privilegios disponibles incluyen: SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, EXECUTE y m\u00e1s.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-aplicar-cambios-de-privilegios-con-flush-privileges\">Aplicar cambios de privilegios con FLUSH PRIVILEGES<\/h3>\n\n\n\n<p>Despu\u00e9s de otorgar privilegios, vac\u00eda las tablas de concesiones para asegurar que los cambios surtan efecto de inmediato:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>FLUSH PRIVILEGES;<\/code><\/pre>\n\n\n\n<p>MySQL 8.0 aplica GRANT y REVOKE autom\u00e1ticamente, pero ejecutar FLUSH PRIVILEGES sigue siendo una buena pr\u00e1ctica cuando se modifican directamente las tablas del sistema.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-como-ver-los-privilegios-otorgados\">C\u00f3mo ver los privilegios otorgados<\/h2>\n\n\n\n<p>Verifica qu\u00e9 privilegios tiene actualmente un usuario:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SHOW GRANTS FOR 'appuser'@'localhost';<\/code><\/pre>\n\n\n\n<p>Para el usuario actualmente conectado:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SHOW GRANTS FOR CURRENT_USER();<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-como-revocar-y-eliminar-usuarios-de-mysql\">C\u00f3mo revocar y eliminar usuarios de MySQL<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-revocar-privilegios-especificos\">Revocar privilegios espec\u00edficos<\/h3>\n\n\n\n<p>Eliminar el acceso de escritura mientras se mantiene el acceso de lectura:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>REVOKE INSERT, UPDATE, DELETE ON mydatabase.* FROM 'appuser'@'localhost';<\/code><\/pre>\n\n\n\n<p>Luego vac\u00eda:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>FLUSH PRIVILEGES;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-eliminar-una-cuenta-de-usuario-de-mysql\">Eliminar una cuenta de usuario de MySQL<\/h3>\n\n\n\n<p>Eliminar un usuario por completo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DROP USER 'appuser'@'localhost';<\/code><\/pre>\n\n\n\n<p>Esto elimina la cuenta de usuario y todos los privilegios asociados. Verifica que el usuario ha desaparecido:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT User, Host FROM mysql.user;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-buenas-practicas-de-seguridad-para-usuarios-en-mysql\">Buenas pr\u00e1cticas de seguridad para usuarios en MySQL<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Nunca uses la cuenta root para conexiones de aplicaciones. Crea usuarios dedicados por aplicaci\u00f3n.<\/li>\n\n\n\n<li>Otorgar solo los privilegios que la aplicaci\u00f3n realmente necesita. Un CMS necesita SELECT, INSERT, UPDATE, DELETE. No necesita DROP ni ALTER.<\/li>\n\n\n\n<li>Usa contrase\u00f1as fuertes y \u00fanicas. Almac\u00e9nalas en variables de entorno o un gestor de secretos, no en el c\u00f3digo.<\/li>\n\n\n\n<li>Restringir el acceso del hosting. Usa localhost o una IP espec\u00edfica en lugar de % siempre que sea posible.<\/li>\n\n\n\n<li>Audita tu lista de usuarios peri\u00f3dicamente: SELECT User, Host FROM mysql.user;<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-preguntas-frecuentes-crear-usuario-mysql\">Preguntas Frecuentes: Crear usuario MySQL<\/h2>\n\n\n\n<div class=\"schema-faq wp-block-yoast-faq-block\"><div class=\"schema-faq-section\" id=\"faq-question-1777031969648\"><strong class=\"schema-faq-question\">\u00bfC\u00f3mo creo un nuevo usuario en MySQL?<\/strong> <p class=\"schema-faq-answer\">Ejecuta: CREATE USER &#8216;username&#8217;@&#8217;localhost&#8217; IDENTIFIED BY &#8216;password&#8217;; y despu\u00e9s concede los privilegios adecuados con GRANT &#8230; ON database.* TO &#8216;username&#8217;@&#8217;localhost&#8217;;<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1777031978183\"><strong class=\"schema-faq-question\">\u00bfC\u00f3mo otorgo todos los privilegios en MySQL?<\/strong> <p class=\"schema-faq-answer\">Ejecuta: GRANT ALL PRIVILEGES ON base_de_datos.* TO &#8216;nombreusuario&#8217;@&#8217;host&#8217;; Sigue con FLUSH PRIVILEGES; para aplicar inmediatamente.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1777031986664\"><strong class=\"schema-faq-question\">\u00bfC\u00f3mo veo qu\u00e9 privilegios tiene un usuario de MySQL?<\/strong> <p class=\"schema-faq-answer\">Ejecuta: SHOW GRANTS FOR &#8216;nombreusuario&#8217;@&#8217;host&#8217;; Esto lista todos los privilegios asignados a ese usuario.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1777031994608\"><strong class=\"schema-faq-question\">\u00bfC\u00f3mo revocar privilegios en MySQL?<\/strong> <p class=\"schema-faq-answer\">Ejecuta: REVOKE tipo_de_privilegio ON base de datos.* FROM &#8216;nombreusuario&#8217;@&#8217;host&#8217;; Especifica exactamente qu\u00e9 privilegios eliminar. Luego FLUSH PRIVILEGES;<\/p> <\/div> <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Ejecutar toda tu instancia de MySQL bajo la cuenta root es el equivalente, en bases de datos, a dejar la puerta principal de tu servidor abierta. Aqu\u00ed tienes c\u00f3mo crear usuarios con los privilegios adecuados y nada m\u00e1s. Requisitos previos: Acceso y configuraci\u00f3n de MySQL Necesitas una instalaci\u00f3n de MySQL existente y la capacidad de [&hellip;]<\/p>\n","protected":false},"author":44,"featured_media":30308,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1988],"tags":[3776],"ppma_author":[3402],"class_list":["post-31238","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutoriales","tag-mysql"],"uagb_featured_image_src":{"full":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/04\/blog-head_mysql-create-user-and-grant-privileges_guide_ES.webp",1200,630,false],"thumbnail":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/04\/blog-head_mysql-create-user-and-grant-privileges_guide_ES-150x150.webp",150,150,true],"medium":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/04\/blog-head_mysql-create-user-and-grant-privileges_guide_ES-600x315.webp",600,315,true],"medium_large":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/04\/blog-head_mysql-create-user-and-grant-privileges_guide_ES-768x403.webp",768,403,true],"large":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/04\/blog-head_mysql-create-user-and-grant-privileges_guide_ES.webp",1200,630,false],"1536x1536":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/04\/blog-head_mysql-create-user-and-grant-privileges_guide_ES.webp",1200,630,false],"2048x2048":["https:\/\/contabo.com\/blog\/wp-content\/uploads\/2026\/04\/blog-head_mysql-create-user-and-grant-privileges_guide_ES.webp",1200,630,false]},"uagb_author_info":{"display_name":"Milan Ivanovic","author_link":"https:\/\/contabo.com\/blog\/es\/author\/milan\/"},"uagb_comment_info":0,"uagb_excerpt":"Ejecutar toda tu instancia de MySQL bajo la cuenta root es el equivalente, en bases de datos, a dejar la puerta principal de tu servidor abierta. Aqu\u00ed tienes c\u00f3mo crear usuarios con los privilegios adecuados y nada m\u00e1s. Requisitos previos: Acceso y configuraci\u00f3n de MySQL Necesitas una instalaci\u00f3n de MySQL existente y la capacidad de&hellip;","authors":[{"term_id":3402,"user_id":0,"is_guest":1,"slug":"contabro","display_name":"ContaBro","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","author_category":"","user_url":"","last_name":"","first_name":"","job_title":"","description":""}],"_links":{"self":[{"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/posts\/31238","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/users\/44"}],"replies":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=31238"}],"version-history":[{"count":4,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/posts\/31238\/revisions"}],"predecessor-version":[{"id":31253,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/posts\/31238\/revisions\/31253"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/media\/30308"}],"wp:attachment":[{"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=31238"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=31238"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=31238"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/contabo.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=31238"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}