Estaba tratando de hacer una copia de seguridad de la base de datos usando el comando de volcado de MySQL, sin embargo, el comando falló con un mensaje de error 'Error:Acceso denegado; necesita (al menos uno de) los privilegios PROCESS para esta operación' . Aquí está el mensaje de error completo.
$ mysqldump -u dbuser -p tg_db > tg_db.sql Enter password: mysqldump: Error: 'Access denied; you need (at least one of) the PROCESS privilege(s) for this operation' when trying to dump tablespaces
He estado descargando la base de datos de esta manera durante muchos años y el comando falló de repente. ¿Cómo resolví este error? Aquí vamos.
Reparar Error:Acceso denegado; necesita (al menos uno de) los privilegios PROCESS para esta operación
Todo lo que hice fue agregar '--no-tablespaces
‘ opción al comando como se muestra a continuación:
$mysqldump -u dbuser -p tg_db --no-tablespaces > tg_db.sql
Y eso funcionó. Entonces, ¿qué es --no-tablespaces
y ¿por qué debo agregar eso?
Bueno, este cambio ocurrió desde la versión 5.7.31+ de MySQL y la versión instalada en mi servidor era la 8.0.23. Según la documentación,
mysqldump requiere al menos el privilegio SELECT para tablas volcadas, SHOW VIEW para vistas volcadas, TRIGGER para disparadores volcados, LOCK TABLES si no se usa la opción –single-transaction, y (a partir de MySQL 8.0.21) PROCESS si –no-tablespaces No se utiliza la opción. Ciertas opciones pueden requerir otros privilegios como se indica en las descripciones de las opciones.
Eche un vistazo a la opción –no-tablespaces también. Esta opción elimina CREATE LOGFILE GROUP
y CREATE TABLESPACE
declaraciones de la salida.
Pero ¿por qué PROCESS
se requiere privilegio para mysqldump
¿dominio? Porque mysqldump
intenta acceder a INFORMATION_SCHEMA.FILES
tabla que requiere el privilegio PROCESS. Bueno, los privilegios se pueden agregar a través de GRANT
a nivel global, o una sola base de datos o tabla. Pero el PROCESS
el privilegio debe agregarse a nivel global como se muestra a continuación.
GRANT PROCESS ON *.* TO user@localhost;
¿Por qué no se muestra este error para todos los usuarios? El usuario raíz de MySQL no se ve afectado, obviamente. El comportamiento puede ser diferente para otros usuarios según sus niveles de privilegios.