Accidentalmente eliminé los privilegios de DBA de mi único usuario de mariadb y ahora no puedo usar mi banco y tampoco pude restaurar los privilegios usando Linux SHELL CentOS 7.
Comando que probé:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;devolver:
#1045 - Access denied for user 'root'@'localhost' (using password: YES)¿Alguien ha experimentado esto?
Detener el servidor MariaDb
sudo systemctl stop mariadb
Reinicie la base de datos sin verificación de permisos - más
sudo mysqld_safe --skip-grant-tables --skip-networking &
mysql -u root ingrese la contraseña
recargar las tablas de subvenciones
Mariadb[MYSQL]> FLUSH PRIVILEGES
insert into user (Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv, Execute_priv, Repl_slave_priv, Repl_client_priv, Create_view_priv, Show_view_priv, Create_routine_priv, Alter_routine_priv, Create_user_priv, ssl_type, ssl_cipher, x509_issuer, x509_subject, max_questions, max_updates, max_connections, max_user_connections) values('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','','0','0','0','0');Luego reinicie la base de datos
sudo systemctl start mariadb Espero que esto funcione para usted. funcionó para mí.
Puede explorar las respuestas sobre otorgar privilegios en MariaDB
Es una suposición incorrecta que el comodín para el nombre de host también incluye localhost, por lo que fallará un intento de conexión a través de socket (localhost):
mysql> create user 'foo'@'%' identified by 'bar'; Query OK, 0 rows affected (0,01 sec) $mysql -ufoo -pbar -e"select current_user" ERROR 1045 (28000): Access denied for user 'foo'@'localhost' (using password: YES)Al crear el usuario con localhost, todo funciona como se esperaba:
mysql> create user 'foo'@'localhost' identified by 'bar'; Query OK, 0 rows affected (0,01 sec) $ mysql -ufoo -pbar -e"select current_user\G" *************************** 1. row *************************** current_user: foo@localhostTambién a partir de MariaDB Server 10.4 (plataformas Posix), el método de autenticación predeterminado para el usuario root (cuando se conecta a través de localhost) ocurre a través del complemento unix_socket. Esto permite que el usuario root@localhost inicie sesión sin contraseña a través del archivo de socket local de Unix definido por la variable del sistema de socket, siempre que se intente iniciar sesión desde un proceso propiedad de la cuenta de usuario raíz del sistema operativo:
mysql -e"show grants for root@localhost\G" *************************** 1. row *************************** Grants for root@localhost: GRANT ALL PRIVILEGES ON *.* TO `root`@`localhost` IDENTIFIED VIA mysql_native_password USING 'invalid' OR unix_socket WITH GRANT OPTIONEntonces, un inicio de sesión normal como root fallará:
georg@mozart:~/mariadb$ mysql -uroot -e"select current_user()\G" ERROR 1698 (28000): Access denied for user 'root'@'localhost'Mientras se ejecuta como raíz (sudo), el inicio de sesión funciona como se esperaba:
georg@mozart:~/mariadb$ sudo mysql -uroot -e"select current_user()\G" *************************** 1. row *************************** current_user(): root@localhost