Usuario de la base de datos MySQL: ¿Qué privilegios se necesitan?

48

La breve instrucción de instalación para WordPress ( "5 Minutes" ) indica que:

  

Cree una base de datos para WordPress en su servidor web, así como un usuario de MySQL que tenga todos los privilegios para acceder y modificarlo.

Al configurar un nuevo blog profesionalmente, me preguntaba cómo se asigna a qué me ofrece la configuración de privilegios / permisos de usuario de la base de datos MySQL:

  • Datos: SELECT , INSERT , UPDATE , DELETE
  • Definición: CREATE , ALTER , DROP
  • Extra: INDEX
  • Más:
    1. LOCK TABLES
    2. REFERENCES
    3. CREATE TEMPORARY TABLES
    4. CREATE VIEW
    5. SHOW VIEW
    6. CREATE ROUTINE
    7. EXECUTE
    8. ALTER ROUTINE

Estoy bastante seguro de que para los primeros tres grupos, los llamé Datos, Definición y Extra aquí. Pero, ¿qué pasa con los demás debajo de la entrada Más ? Normalmente diría que no son necesarios, pero me gustaría obtener una segunda opinión.

    
pregunta hakre 06.01.2011 - 13:53

5 respuestas

12

Los otros no son necesarios como señala.

Por cierto, lo que podría hacer es configurar condicionalmente el usuario / paso en función de la página solicitada. Como no privilegiado con seleccionar / insertar / actualizar / eliminar para uso normal, y privilegiado con cosas relacionadas con la definición / índice además al visitar la página de actualización.

    
respondido por el Denis de Bernardy 06.01.2011 - 17:09
31

"Todos los privilegios" por lo general significa que debes entregarle todo al usuario. Sin embargo ...

He encontrado al menos un artículo que reclama el MySQL el usuario solo necesita:

  • SELECCIONAR
  • INSERTAR
  • ACTUALIZACIÓN

Profundizando , encontré que para poder operar completamente (actualizaciones automáticas, instalación / desinstalación de complementos, etc.), WordPress requiere algunos permisos adicionales:

  • BORRAR
  • ALTER (para actualizaciones)
  • CREAR TABLA
  • TABLA DE GOTA

Además, no se hace referencia pero tiene sentido:

  • INDICE

Pero esas son las únicas dos referencias sólidas que puedo encontrar que están respaldadas por opiniones publicadas en otros lugares. Todavía te animo a seguir usando GRANT ALL, pero si debes limitar absolutamente tu uso de DB, comienza con estos 7 privilegios y prueba completamente para asegurarte de que todo funcione como esperado.

    
respondido por el EAMann 06.01.2011 - 16:17
12

Esto es lo que Codex tiene que decir al restringir los privilegios de usuario de la base de datos:

  

Para las operaciones normales de WordPress, como publicar publicaciones en blogs, cargar archivos multimedia, publicar comentarios, crear nuevos usuarios de WordPress e instalar complementos de WordPress, el usuario de la base de datos MySQL solo necesita leer y escribir datos en la base de datos MySQL; SELECCIONAR, INSERTAR, ACTUALIZAR y BORRAR.

     

Por lo tanto, cualquier otra estructura de base de datos y privilegios de administración, como DROP, ALTER y GRANT se pueden revocar. Al revocar dichos privilegios, también está mejorando las políticas de contención.

     

Nota: algunos complementos, temas y actualizaciones importantes de WordPress pueden requerir cambios estructurales en la base de datos, como agregar nuevas tablas o cambiar el esquema. En tal caso, antes de instalar el complemento o actualizar un software, permita al usuario de la base de datos los privilegios necesarios.

enlace

    
respondido por el redburn 12.01.2014 - 18:09
2

Con respecto a la "Nota" en la publicación de redburn, el Wordpress Codex también tiene una advertencia que también debe leer sobre las actualizaciones y los cambios en el esquema de la base de datos ...

(Editar: Sin embargo, me doy cuenta de que NO VEO "GRANT" en la lista de privilegios más al crear o actualizar un usuario Tal vez "CREATE" se debe agregar a la lista. ¿Alguien tiene información al respecto? - usando Hostgator cPanel, marzo de 2016 -)

  

ADVERTENCIA:
  Intentar actualizaciones sin tener estos privilegios [ SELECT, INSERT, UPDATE, DELETE, DROP, ALTER, y GRANT ] puede causar   problemas cuando se producen cambios en el esquema de la base de datos. Por lo tanto, NO es   Recomendado para revocar estos privilegios. Si sientes la necesidad de hacer   esto por razones de seguridad, entonces asegúrese de tener un sólido   plan de copia de seguridad en primer lugar, con copias de seguridad de toda la base de datos regulares que   Los que has probado son válidos y eso puede ser fácilmente restaurado. Un fallido   La actualización de la base de datos generalmente se puede resolver restaurando la base de datos   a una versión anterior, otorgando los permisos adecuados y luego dejando   WordPress intenta la actualización de la base de datos de nuevo. La restauración de la base de datos   Regréselo a esa versión anterior y a la administración de WordPress.   Las pantallas detectarán la versión anterior y le permitirán ejecutar el   comandos SQL necesarios en él. La mayoría de las actualizaciones de WordPress no cambian   El esquema, pero algunos lo hacen. Solo mejoras de puntos importantes (3.7 a 3.8, para   ejemplo) alterará el esquema. Las mejoras menores (3.8 a 3.8.1) serán   generalmente no. Sin embargo, mantenga una copia de seguridad regular.

Codex: enlace

    
respondido por el Jerry9 30.03.2016 - 08:59
0

Mi opinión es la misma que @EAMann anterior, así como las fuentes a las que hizo referencia: GRANT ALL es necesario para garantizar que su sitio sea funcional y esté preparado para el futuro. Incluso en un sitio de producción, debe intentar atenerse al manual del usuario.

Como alguien que aporta código al núcleo de WordPress y algunos complementos, le recomiendo que retenga los privilegios de base de datos predeterminados como se sugiere en el manual del usuario (GRANT ALL PRIVILEGES ON wpdatabasename. * TO "wordpressusername" @ "hostname").

El código fuente de WordPress (presente y futuro) asume que el usuario de la base de datos de WordPress tiene todos los privilegios de base de datos para la base de datos de WordPress dada. Si su configuración pierde algunos privilegios de base de datos, puede tener problemas al actualizar WordPress y agregar más complementos.

Por lo tanto, realmente no debería usar privilegios de base de datos diferentes de los privilegios de base de datos recomendados por el manual, a menos que sepa lo que está haciendo, tenga necesidades muy específicas y no olvide que tiene privilegios de base de datos personalizados.

Desde entonces, la página del Codex se ha actualizado sobre cómo hacer esto con ejemplos en varios sistemas y capturas de pantalla. enlace

Creando un nombre y usuario de Databse (a través de PHPMyAdmin): enlace

Creando un nombre y usuario de Databse (a través del cliente de línea de comandos de MySQL): enlace

mysql> CREATE DATABASE wpdatabasename;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON wpdatabasename.* TO "wordpressusername"@"hostname"
    -> IDENTIFIED BY "password";
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql> EXIT
    
respondido por el Steven Lin 08.10.2018 - 17:42

Lea otras preguntas en las etiquetas