MySQL 루트 사용자의 모든 권한을 복원하려면 어떻게 해야 합니까?
실수로 MySQL 루트 사용자로부터 테이블 변경 기능을 포함한 일부 권한을 삭제했습니다.이 사용자를 (모든 권한을 가지고) 원래 상태로 되돌릴 수 있는 방법이 있습니까?
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'
이 경우,GRANT ALL
동작하지 않습니다.해 보세요.
- 이제 그만
mysqld
를 사용하여 재기동합니다.--skip-grant-tables
선택. - 에 접속하다
mysqld
다음과 같은 기능을 제공합니다.mysql
(즉, 아니요)-p
option, 및 유저명은 불필요할 수 있습니다. mysql 클라이언트에서 다음 명령을 발행합니다.
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
그 후에, 당신은 달릴 수 있을 것이다.GRANT ALL ON *.* TO 'root'@'localhost';
잘 될 수 있게 해주세요.
를 삭제한 경우root
사용자가 실수로 한 가지 작업을 수행할 수 있습니다.
- MySQL 서비스 중지
- 달려.
mysqld_safe --skip-grant-tables &
- 유형
mysql -u root -p
Enter 키를 누릅니다. - 당신의 패스워드를 입력하세요.
- mysql 명령줄에서 다음과 같이 입력합니다.
use mysql;
그런 다음 다음 쿼리를 실행합니다.
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');
그런 다음 mysqld를 재시작합니다.
편집: 2018년 10월 6일
이 답변이 필요한 경우 innodb_version 5.6.36-82.0 및 10.1.24-MariaDB를 사용하여 시험해 보았습니다.백틱스를 삭제하면 동작합니다(따옴표도 생략하고 삭제만 하면 됩니다).
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');
또한 루트 사용자일 때 mysql 콘솔에 표시되지 않는 루트 및 데이터베이스의 권한도 삭제했습니다.mysql>mysql -u 'userName' -p;
및 패스워드
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
이 명령어 뒤에는 모두 show database가 root에 있습니다.
감사합니다.
루트에 대한 삽입 및 새로고침 권한을 거부했습니다.따라서 권한을 업데이트한 후 새로고침 권한이 없기 때문에 FLUSH PRIVALY가 작동하지 않습니다.그래서 Ubuntu 16.04에서 debian-sys-maint 사용자를 사용하여 user.root 권한을 복원했습니다.이 파일에서 user.debian-sys-maint 비밀번호를 찾을 수 있습니다.
sudo cat /etc/mysql/debian.cnf
GRANT ALL ON *.* TO 'user'@'localhost' with GRANT OPTION;
해당 비밀번호가 있는 경우 해당 비밀번호를 사용하여 root에서 로그인하고 위의 명령어를 사용자가 무엇이든 실행하기만 하면 됩니다.
예를 들어 다음과 같습니다.
GRANT ALL ON *.* TO 'root'@'%' with GRANT OPTION;
삽입 또는 업데이트만 하면 됩니다.mysql.user
가치 있게Y
각 열 권한에 표시됩니다.
로컬 컴퓨터에서 WAMP를 사용하는 경우(mysql 버전 5.7.14) 1단계: my.ini 파일 열기 2단계: semi-colon 스텝 3: restart mysql server 스텝 4: launch mySQL console 5:
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
스텝 6: 문제 해결!!!!
- "sudo cat /etc/sys/subsian.cnf" 를 사용하여 debian-sys-subset 사용자를 사용할 수 있습니다.
- 이 사용자가 로그인 합니다.ush - u
saved-username
-p;"를 입력한 후 저장된 비밀번호를 입력합니다. - mysql>UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y'WHERE User='root';
- mysql> 플래시 특권;
- mysql> 종료
- reboot Thanks
RHEL의 MariaDB:
sudo systemctl stop mariadb.service
sudo mysqld_safe --skip-grant-tables --skip-networking &
mysql -u root
그러면 예를 들어.
GRANT ALL PRIVILEGES ON mysql.user TO 'root'@'localhost';
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
EXIT;
슬프게도, 를 떼어내면, 그레이스 풀 재기동은 없습니다.&
:
sudo kill `pidof mysqld`
sudo systemctl start mariadb.service
하지만 한 사람은 차라리skip-grant-tables
그리고.skip-networking
안에서./etc/my.cnf
.
언급URL : https://stackoverflow.com/questions/1709078/how-can-i-restore-the-mysql-root-user-s-full-privileges
'programing' 카테고리의 다른 글
데이터베이스/SQL: 경도/위도 데이터 저장 방법 (0) | 2022.09.13 |
---|---|
Selenium Webdriver 2 Python에서 현재 URL을 얻으려면 어떻게 해야 하나요? (0) | 2022.09.13 |
AWS Cognito UI는 콜백 페이지를 호출할 때 해시를 사용하여 파라미터를 포함합니다. (0) | 2022.09.13 |
router-view 내의 모든 루트의 단일 루트인스톨에서의 킵얼라이브 (0) | 2022.09.13 |
위조 방지 토큰 액시오스 ASP.넷코어 (0) | 2022.09.13 |