1. Conéctese a MySQL como un usuario privilegiado:
Primero, debe conectarse a su servidor MySQL como usuario con privilegios administrativos (como 'root`). Use el cliente MySQL:
`` `Bash
mysql -u raíz -p
`` `` ``
Ingrese la contraseña de root cuando se le solicite.
2. Crea el usuario:
Use la instrucción 'Crear usuario' para crear el nuevo usuario. Reemplace `'public_user'` y`' Your_Password "con el nombre de usuario y la contraseña deseados. La cláusula 'identificada por' establece la contraseña del usuario. El `%` significa de cualquier anfitrión.
`` `SQL
Crear usuario 'public_user'@'%' identificado por 'Your_Password';
`` `` ``
Nota de seguridad importante: El uso de ''%'`permite al usuario conectarse desde * cualquier * host. Esto a menudo es * no * una buena idea por razones de seguridad. Si sabe que el usuario solo se conectará desde una dirección IP específica o nombre de host, reemplace ''%'`con esa dirección (por ejemplo,`' public_user '@' 192.168.1.100'` o `'public_user'@'Yourdomain.com' '). Por ejemplo:
`` `SQL
Crear usuario 'public_user'@'192.168.1.100' identificado por 'Your_Password';
`` `` ``
Esto solo permitiría al usuario conectarse desde la dirección IP `192.168.1.100`.
3. Otorgar privilegios de solo lectura:
Utilice la declaración `subvención 'para dar al usuario acceso de solo lectura a la base de datos específica. Reemplace `Your_Database` con el nombre de la base de datos a la que desea otorgar acceso.
`` `SQL
Otorgue seleccionar en su_database.* A 'public_user'@'%';
`` `` ``
* `SELECT`:permite al usuario leer datos de tablas en la base de datos.
* `Your_database.*`:Especifica que el privilegio se aplica a todas las tablas dentro de 'Your_Database`.
* `A 'public_user'@'%'`:Especifica el usuario y el host para el cual se otorga el privilegio.
4. Privilegios de descarga:
Después de otorgar privilegios, debe enjuagar las tablas de privilegios para que los cambios entren en vigencia.
`` `SQL
Privilegios de descarga;
`` `` ``
5. Salir mysql:
`` `SQL
salida;
`` `` ``
Ejemplo completo:
`` `Bash
mysql -u root -p # conectar como root
Ingrese su contraseña de root cuando se le solicite
Cree el usuario 'public_user'@'%' identificado por 'mySeecurePassword123!';
Otorgue seleccionar en su_database.* A 'public_user'@'%';
Privilegios de descarga;
salida;
`` `` ``
Explicación y consideraciones importantes:
* `Crear usuario ': Crea una nueva cuenta de usuario MySQL.
* `Grant`: Asigna permisos específicos (privilegios) a un usuario.
* `Flush Privileges`: Recarga las tablas de subvención. Esto es * esencial * después de hacer cambios en los privilegios del usuario; De lo contrario, los cambios podrían no entrar en vigencia de inmediato.
* `identificado por ': Establece la contraseña del usuario. ¡Elija una contraseña segura!
* Las mejores prácticas de seguridad:
* Limite el acceso al host: Como se mencionó, evite usar ''%'`para el host si es posible. Restringir al usuario para que solo se conecte desde direcciones IP conocidas y confiables.
* Principio de menor privilegio: Solo otorgue los privilegios mínimos que necesita el usuario. En este caso, 'Select` es suficiente para el acceso de solo lectura. Evite otorgar 'todos los privilegios' a menos que sea absolutamente necesario.
* Complejidad de contraseña: Haga cumplir las políticas de contraseña segura. Use una mezcla de letras, números y símbolos superiores y en minúsculas. Considere usar el complemento de validación de contraseña de MySQL para una aplicación de contraseña más fuerte.
* ssl/tls: Para los entornos de producción, siempre cifre conexiones entre el cliente y el servidor MySQL que usa SSL/TLS para proteger la contraseña y los datos transmitidos a través de la red.
* Privilegios alternativos: En lugar de otorgar `select` en toda la base de datos (` Your_Database.*`), Puede otorgar` select` solo en tablas específicas:
`` `SQL
Otorgue seleccionar en su_database.table1 a 'public_user'@'%';
Otorgue seleccionar en su_database.table2 a 'public_user'@'%';
`` `` ``
Esto es aún más seguro, ya que limita el acceso a solo las tablas necesarias.
* Auditoría: Considere habilitar el registro de auditoría de MySQL para rastrear quién está accediendo a la base de datos y qué consultas están ejecutando.
Conectando con el nuevo usuario:
Para conectarse usando el nuevo usuario:
`` `Bash
mysql -u public_user -p -h your_mysql_host -d your_database
`` `` ``
* `-U public_user`:Especifica el nombre de usuario.
* `-P`:solicita la contraseña.
* `-h your_mysql_host`:Especifica el nombre de host o la dirección IP de su servidor MySQL. Si se conecta desde la misma máquina, a menudo puede omitir esto o usar `localhost` o` 127.0.0.1`.
* `-D your_database`:Especifica la base de datos a la que se conecte.
Después de ejecutar este comando, se le pedirá que ingrese la contraseña de 'public_user`.
Siguiendo estos pasos y considerando las recomendaciones de seguridad, puede crear un usuario público con acceso de solo lectura a su base de datos MySQL de manera segura y controlada. Priorice siempre la seguridad al otorgar acceso a sus datos.