Accidentalmente eliminé algunos de los privilegios de mi usuario raíz de MySQL, incluida la capacidad de alterar tablas. ¿Hay alguna forma de que pueda restaurar este usuario a su estado original (con todos los privilegios)?
UPDATE mysql.user SET Grant_priv = 'Y', Super_priv = 'Y' WHERE User = 'root';
# MySQL returned an empty result set (i.e. zero rows).
FLUSH PRIVILEGES ;
# MySQL returned an empty result set (i.e. zero rows).
#1045 - Access denied for user 'root'@'localhost' (using password: YES)
GRANT ALL ON *.* TO 'root'@'localhost'
mysql
privileges
mysql-error-1045
Steven
fuente
fuente

Respuestas:
Si
GRANT ALLno funciona, intente:mysqldy reinícielo con la--skip-grant-tablesopción.mysqldservidor con solo:mysql(es decir, sin-popción y es posible que no se requiera el nombre de usuario).Emita los siguientes comandos en el cliente mysql:
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';FLUSH PRIVILEGES;Después de eso, debería poder ejecutarlo
GRANT ALL ON *.* TO 'root'@'localhost';y hacer que funcione.fuente
skip-grant-tablesa la[mysqld]sección de su archivo de configuración de mysql para acceder a mysql en la línea de comando sin contraseña.Si eliminó a su
rootusuario por error, puede hacer una cosa:mysqld_safe --skip-grant-tables &mysql -u root -py presiona enter.use mysql;Luego ejecute esta consulta:
luego reinicia el mysqld
EDITAR: 6 de octubre de 2018
En caso de que alguien más necesite esta respuesta, la probé hoy usando innodb_version 5.6.36-82.0 y 10.1.24-MariaDB y funciona si QUITAS LOS BACKTICKS (tampoco hay comillas simples, simplemente quítalas):
fuente
mysqld.exeen labincarpeta, nomysqld_safe.exe. ¿Qué quieres decir con "mysqld_safe"?mysqld_safe, solo ejecute el binario mysqld normal:mysqld.exe --skip-grant-tablesERROR 1054 (42S22): Unknown column 'Password' in 'field list'También elimino los privilegios de root y la base de datos que no se muestran en la consola mysql cuando era un usuario root, así que cambié el usuario
mysql>mysql -u 'userName' -p;y la contraseña;después de este comando, todo muestra la base de datos en la raíz.
Gracias
fuente
Le había negado los privilegios de inserción y recarga a root. Entonces, después de actualizar los permisos, FLUSH PRIVILEGES no funcionaba (debido a la falta de privilegios de recarga). Así que utilicé el usuario debian-sys-maint en Ubuntu 16.04 para restaurar los privilegios de user.root. Puede encontrar la contraseña de user.debian-sys-maint en este archivo
fuente
Simplemente inicie sesión desde la raíz usando la contraseña respectiva, si la hubiera, y simplemente ejecute el comando anterior para cualquier usuario.
Por ejemplo:
fuente
Simplemente inserte o actualice
mysql.usercon valorYen los privilegios de cada columna.fuente
Si está utilizando WAMP en su computadora local (mysql versión 5.7.14) Paso 1: abra el archivo my.ini Paso 2: elimine el comentario de esta línea 'skip-grant-tables' eliminando el punto y coma paso 3: reinicie mysql servidor paso 4: iniciar la consola mySQL paso 5:
Paso 6: ¡Problema resuelto!
fuente