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 ALL
no funciona, intente:mysqld
y reinícielo con la--skip-grant-tables
opción.mysqld
servidor con solo:mysql
(es decir, sin-p
opció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-tables
a 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
root
usuario por error, puede hacer una cosa:mysqld_safe --skip-grant-tables &
mysql -u root -p
y 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.exe
en labin
carpeta, nomysqld_safe.exe
. ¿Qué quieres decir con "mysqld_safe"?mysqld_safe
, solo ejecute el binario mysqld normal:mysqld.exe --skip-grant-tables
ERROR 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.user
con valorY
en 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