MySQL 데이터베이스에서 권한 제거
이것이 중복된 질문이라고 생각하기 전에, 저는 그것이 다소 어설프더라도 독특한 사례를 가지고 있다고 생각합니다.
며칠 전 Ubuntu 10.04 서버의 MySQL 버전을 5.3.3으로 업그레이드했습니다(Ubuntu 릴리즈 10.04보다 이전 버전입니다).오늘, 나는 무엇인가를 위해 phpMyAdmin에 로그인하려고 시도했고, 다소 두려운 것을 발견했다.Connection for controluser as defined in your configuration failed
에러입니다.
이 문제를 해결하는 방법에 대한 몇 가지 SO 질문의 설명을 들은 후, 저는 꼼짝할 수 없게 되었습니다.
- phpMyAdmin의 재구성을 시도했지만 실패했습니다.
- phpMyAdmin을 제거하고 다시 설치하려고 했지만 DB에서 권한을 제거하지 못해 실패했습니다.
- 그런 다음 사용자의 권한을 수동으로 삭제하려고 시도했습니다. 다소 어리석게도 추가할 수 있지만, DB에서 삭제한 후 사용자 권한을 삭제했습니다.
flush privileges
). - (애플리케이션과 /etc/phpmyadmin 디렉토리를 삭제) phpMyAdmin 설치 전체를 삭제하고 (apt-get을 사용하여) 재설치했지만 phpmyadmin 사용자의 권한은 이미 존재한다고 되어 있었습니다.
granting access to database phpmyadmin for phpmyadmin@localhost: already exists
자, 여기 남은 것이 있습니다.수정하거나 취소할 수 없는 허가가 있습니다.
mysql> show grants for 'phpmyadmin'@'localhost';
+-------------------------------------------------------------------------------------------------------------------+
| Grants for phpmyadmin@localhost |
+-------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'phpmyadmin'@'localhost' IDENTIFIED BY PASSWORD '*46CFC7938B60837F46B610A2D10C248874555C14' |
| GRANT ALL PRIVILEGES ON `phpmyadmin`.* TO 'phpmyadmin'@'localhost' |
+-------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.26 sec)
mysql> revoke usage on *.* from 'phpmyadmin'@'localhost';
ERROR 1141 (42000): There is no such grant defined for user 'phpmyadmin' on host 'localhost'
mysql> revoke usage on *.* from 'phpmyadmin'@'localhost' identified by 'trustno1';
ERROR 1141 (42000): There is no such grant defined for user 'phpmyadmin' on host 'localhost'
(걱정하지 마세요.이 패스워드는 더 이상 사용하지 않습니다만, 이전에 사용한 패스워드이며, 새로운 phpmyadmin 인스톨에서 선택한 패스워드가 아닙니다).
이러한 인가/특권을 완전히 삭제하려면 어떻게 해야 합니까?필요하다면 처음부터 다시 시작할 수 있습니다(즉, DB가 아닌 phmyadmin).
mysql의 USE-privilege는 글로벌레벨에서 정의된 사용자 'phpadmin'@'localhost'에 대한 권한이 없음을 의미합니다.*.*
또한 동일한 사용자가 데이터베이스 phpmyadmin에 대한 ALL 권한을 가지고 있습니다.phpadmin.*
.
따라서 모든 권한을 제거하고 처음부터 다시 시작하려면 다음을 수행합니다.
데이터베이스 수준의 모든 권한 취소:
REVOKE ALL PRIVILEGES ON phpmyadmin.* FROM 'phpmyadmin'@'localhost';
'phpmyadmin'@'localhost' 사용자를 삭제합니다.
DROP USER 'phpmyadmin'@'localhost';
위의 절차를 수행하면 사용자가 인스턴스에서 완전히 삭제되므로 처음부터 사용자를 다시 생성할 수 있습니다.
위에서 설명한 내용에 대한 약간의 배경 정보를 알려드리겠습니다.사용자를 작성하는 즉시mysql.user
테이블이 채워집니다.레코드를 보면 사용자와 모든 권한이 다음과 같이 설정되어 있는 것을 알 수 있습니다.'N'
를 하면,show grants for 'phpmyadmin'@'localhost';
위에 출력된 모든 준비 완료 패밀리밀리어입니다.간단히 번역하면 "사용자에 대한 글로벌 수준의 권한이 없습니다"로 변환됩니다.이제 당신의 보조금ALL
데이터베이스 레벨의 이 유저에게, 이것은 테이블에 격납됩니다.mysql.db
를 하면,SELECT * FROM mysql.db WHERE db = 'nameofdb';
를 볼 수 있습니다.'Y'
사사건건
위의 설명은 현재 DB에 있는 시나리오를 보여줍니다.즉, 사용자만 사용할 수 있습니다.USAGE
privilege는 이 사용자가 접속할 수 있지만SHOW GLOBAL VARIABLES; SHOW GLOBAL STATUS;
그는 다른 특권이 없다.
참고로 그 이유는revoke usage on *.* from 'phpmyadmin'@'localhost';
does not active aspled :라는 이름의 허가가 없습니다.USAGE
.
실제 명명된 인가는 MySQL Documentation에 있습니다.
조성금USAGE
논리적 허가입니다. 어떻게요? 'phpmyadmin'@'localhost'에 엔트리가 있습니다.mysql.user
여기서 user='myadmin' 및 host='localhost'를 선택합니다.mysql.user의 행은 의미상USAGE
.입니다.DROP USER 'phpmyadmin'@'localhost';
잘 될 겁니다이 제품은 실제로 다음과 같은 기능을 합니다.
DELETE FROM mysql.user WHERE user='phpmyadmin' and host='localhost';
DELETE FROM mysql.db WHERE user='phpmyadmin' and host='localhost';
FLUSH PRIVILEGES;
따라서 행 삭제는mysql.user
실행이 구성되다REVOKE USAGE
,그럼에도 불구하고.REVOKE USAGE
문자 그대로 실행할 수 없습니다.
언급URL : https://stackoverflow.com/questions/17799806/remove-privileges-from-mysql-database
'programing' 카테고리의 다른 글
Ajax를 사용하여 데이터와 파일을 한 형태로 업로드하시겠습니까? (0) | 2022.10.25 |
---|---|
Mariadb 구문 오류 1064(42000) (0) | 2022.10.25 |
Django 오류: _mysql이라는 이름의 모듈이 없습니다. (0) | 2022.10.25 |
배열에서 요소를 랜덤으로 선택하는 방법 (0) | 2022.10.15 |
mysqladmin 플래시 호스트를 사용하여 차단을 해제하는 방법 (0) | 2022.10.15 |