# MariaDB GRANT ALL PRIVILEGES: cómo usarlo paso a paso

El comando `GRANT ALL PRIVILEGES` en MariaDB otorga todos los permisos de usuario sobre una base de datos existente. Así, los usuarios pueden crear, modificar y eliminar tablas sin restricciones.

## ¿Qué es MariaDB `GRANT ALL PRIVILEGES`?

El comando `GRANT ALL PRIVILEGES` en [MariaDB](https://www.ionos.mx/digitalguide/servidores/know-how/que-es-mariadb/) otorga al usuario todos los permisos sobre una o varias bases de datos. Concede **todos los permisos disponibles**, incluidos la creación, modificación y eliminación de tablas, así como el acceso a funciones administrativas. Si usas `GRANT ALL PRIVILEGES` de forma controlada, podrás gestionar eficazmente los permisos en tu entorno de bases de datos.

Para poder aplicar `GRANT ALL PRIVILEGES` en MariaDB, necesitas **permisos avanzados del sistema**. Normalmente, se requiere el privilegio `SUPER` o la opción `GRANT OPTION` para otorgar privilegios. Inicia sesión con una cuenta de usuario administrativa y asegúrate de tener una conexión estable con la instancia de base de datos correcta. Es importante definir con precisión el nombre de usuario y el prefijo del host para evitar la asignación involuntaria de permisos. También debes comprobar si la base de datos de destino ya existe, ya que el comando solo se puede aplicar a bases de datos existentes.

## Sintaxis del comando MariaDB `GRANT ALL PRIVILEGES`

La estructura básica para otorgar todos los permisos sobre una base de datos en MariaDB es la siguiente:

```sql
GRANT ALL PRIVILEGES ON database.* TO 'username'@'host';
```

La expresión `GRANT ALL PRIVILEGES` en MariaDB otorga al usuario indicado todos los permisos sobre la base de datos seleccionada. Mediante `'username'@host` defines a qué usuario y desde qué host se le permite el acceso. Opcionalmente, puedes asignar una contraseña en el mismo comando para autenticar al usuario.

Una vez que ejecutes el comando, los cambios no tendrán efecto hasta que recargues los privilegios:

```sql
FLUSH PRIVILEGES;
```

Así te aseguras de que los permisos se activen al instante y se guarden correctamente en el sistema.

## Guía paso a paso: cómo crear un usuario y asignarle permisos

Para crear un nuevo usuario en MariaDB y asignarle permisos completos, sigue estos pasos:

### Paso 1: crea el usuario

Primero, crea un nuevo usuario con una contraseña segura. Para ello, utiliza el siguiente comando:

```sql
CREATE USER 'newuser'@localhost IDENTIFIED BY 'strongpassword';
```

Con el comando [MariaDB CREATE USER](https://www.ionos.mx/digitalguide/hosting/cuestiones-tecnicas/mariadb-create-user/) creas un nuevo usuario y le asignas una contraseña. Sustituye `newuser` por el nombre de usuario que desees y `strongpassword` por una contraseña segura y personalizada. La especificación `localhost` limita el acceso a conexiones desde el servidor local. Si quieres permitir el acceso desde otro host, reemplaza `localhost` por la **dirección IP o el nombre de host** del servidor desde el que se realizará la conexión.

### Paso 2: otorga todos los permisos sobre una base de datos

El comando MariaDB `GRANT ALL PRIVILEGES` asigna al usuario todos los privilegios disponibles sobre todas las tablas de la base de datos `database_name`. El asterisco `*` indica que los permisos se aplican a cada tabla dentro de esa base de datos.

```sql
GRANT ALL PRIVILEGES ON database_name.* TO 'newuser'@localhost;
```

### Paso 3: permite la delegación de permisos (`GRANT OPTION`)

Al añadir `WITH GRANT OPTION`, el usuario puede transferir los privilegios recibidos a otros usuarios.

```sql
GRANT ALL PRIVILEGES ON database_name.* TO 'newuser'@localhost WITH GRANT OPTION;
```

### Paso 4: otorga permisos específicos sobre una base de datos o una tabla

También puedes conceder permisos concretos sobre una base de datos completa o sobre tablas individuales. Por ejemplo, para permitir solo acceso de lectura a todas las tablas de una base de datos, usa:

```sql
GRANT SELECT ON database_name.* TO 'newuser'@localhost;
```

En este ejemplo, `'newuser'` obtiene el permiso para leer todos los datos de la base de datos `database_name`, pero no para realizar modificaciones. Al usar `*` después del nombre de la base de datos, los permisos se aplican a todas las tablas de dicha base.

Si, por el contrario, quieres conceder permisos solo sobre una tabla específica, usa la siguiente sintaxis:

```sql
GRANT SELECT ON database_name.table_name TO 'newuser'@localhost;
```

De este modo, `newuser` puede leer datos de la tabla `table_name` dentro de la base de datos `database_name`. Así controlas con precisión qué acciones puede realizar el usuario.

### Paso 5: aplica los cambios

Los permisos se actualizan automáticamente y entran en vigor de inmediato. Como alternativa, puedes ejecutar el siguiente comando para asegurarte de que todos los permisos otorgados sean efectivos:

```sql
FLUSH PRIVILEGES;
```

### Paso 6: muestra los permisos otorgados

Para consultar todos los permisos actualmente asignados a una cuenta de usuario, ejecuta el siguiente comando:

```sql
SHOW GRANTS FOR 'newuser'@localhost;
```

Este comando muestra todos los permisos que `newuser` tiene en la instancia de MariaDB. El resultado incluye tanto permisos generales sobre bases de datos o tablas como privilegios especiales, como el permiso para delegar sus propios permisos (`WITH GRANT OPTION`).


This is a markdown version of: [https://www.ionos.mx/digitalguide/hosting/cuestiones-tecnicas/mariadb-grant-all-privileges/](https://www.ionos.mx/digitalguide/hosting/cuestiones-tecnicas/mariadb-grant-all-privileges/) for AI/LLM consumption.