MySQL 사용자에게 호스트 액세스 권한 재할당
수천 명의 MySQL 사용자가 특정 호스트에서 액세스할 수 있도록 설정되어 있습니다.문제는 앞으로 두 대의 머신을 사용하게 될 것이며, 각 머신의 데이터베이스에 액세스하기 위해 동일한 계정을 사용해야 한다는 것입니다.
각 사용자 계정의 호스트 부분을 내부 네트워크 와일드카드에 맞게 빠르고 쉽게 실행하고 수정할 수 있는 방법을 원합니다.예를 들어 다음과 같습니다.
'bugsy'@'internalfoo'는 'bugsy' DB에 액세스할 수 있습니다.
내부 네트워크상의 어디에서나 버그시에의 액세스를 허가합니다.
'bugsy'@ '10.0.0.%'는 'bugsy' DB에 액세스할 수 있습니다.
수락된 답변은 사용자 이름만 변경했을 뿐 권한은 남겨졌습니다.
권장되는 항목:
RENAME USER 'foo'@'1.2.3.4' TO 'foo'@'1.2.3.5';
MySQL 문서에 따르면:
RENAME USER는 이전 사용자가 보유한 권한을 새 사용자가 보유한 권한으로 합니다.
참고로 솔루션은 다음과 같습니다.
UPDATE mysql.user SET host = '10.0.0.%' WHERE host = 'internalfoo' AND user != 'root';
UPDATE mysql.db SET host = '10.0.0.%' WHERE host = 'internalfoo' AND user != 'root';
FLUSH PRIVILEGES;
보다 일반적인 답은
UPDATE mysql.user SET host = {newhost} WHERE user = {youruser}
제가 권한을 얻었던 유사한 문제가 실패했습니다.셋업에서는 SSH만 사용합니다.그래서 이 문제를 해결하기 위해 제가 한 일은
sudo MySQL
SELECT User, Host FROM mysql.user WHERE Host <> '%';
MariaDB [(none)]> SELECT User, Host FROM mysql.user WHERE Host <> '%';
+-------+-------------+
| User | Host |
+-------+-------------+
| root | 169.254.0.% |
| foo | 192.168.0.% |
| bar | 192.168.0.% |
+-------+-------------+
4 rows in set (0.00 sec)
이 사용자들을 'localhost'로 이동시켜야 합니다.그래서 나는 다음과 같이 발행했다.
UPDATE mysql.user SET host = 'localhost' WHERE user = 'foo';
UPDATE mysql.user SET host = 'localhost' WHERE user = 'bar';
SELECT User, Host FROM mysql.user WHERE Host <> '%' 를 실행합니다.다시 한 번 확인하겠습니다.
MariaDB [(none)]> SELECT User, Host FROM mysql.user WHERE Host <> '%';
+-------+-------------+
| User | Host |
+-------+-------------+
| root | 169.254.0.% |
| foo | localhost |
| bar | localhost |
+-------+-------------+
4 rows in set (0.00 sec)
그리고 나서 나는 다시 정상적으로 일할 수 있었다.그게 도움이 됐으면 좋겠어요.
$ mysql -u foo -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 74
Server version: 10.1.23-MariaDB-9+deb9u1 Raspbian 9.0
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
에서 같은 에러가 발생했습니다.RENAME USER
GRANTs는 현재 승인된 솔루션으로는 적용되지 않습니다.
가장 신뢰할 수 있는 방법은 도망가는 것 같다.SHOW GRANTS
이전 사용자의 경우 사용자 이름 및/또는 호스트에 대해 변경할 항목을 검색/바꾸고 실행한 후 마지막으로DROP USER
오래된 사용자뛰는 것을 잊지 않다FLUSH PRIVILEGES
(새 사용자의 권한을 추가한 후 이 작업을 실행하고 새 사용자를 테스트한 다음 이전 사용자를 삭제하고 적절한 조치를 위해 다시 플러시하는 것이 가장 좋습니다).
> 'olduser'@'oldhost에 대한 보조금 표시;+-----------------------------------------------------------------------------------+| olduser@oldhost에 대한 보조금 |+-----------------------------------------------------------------------------------+| 패스워드 '*PASSHASH'로 식별되는 'olduser'@'oldhost'에게 *.* 사용 허가 || GRANT SELECT ON 'db'를 선택합니다.* 'olduser'@ 'oldhost' |+-----------------------------------------------------------------------------------+2줄 세트(0.000초) > 패스워드 '*SAME_PASSHASH'로 식별되는 'newuser'@'newhost'에게 *.*의 사용을 허가한다.Query OK(0.006초), 영향을 받는 행 0개 > GRANT SELECT ON 'db'를 선택합니다.* 'newuser'@ 'newhost'에게;Query OK(0.007초), 영향을 받는 행 0개 > 사용자 'olduser'@'oldhost'를 드롭한다.Query OK(0.016초), 영향을 받는 행 수 0개
나는 이것을 할 필요가 없었기 때문에, 이것을 소금에 절여 "테스트, 테스트, 테스트"라고 큰 그릇으로 받아 들이세요.
(「」)를 ?Host
의 mysql.user
★★★★★mysql.db
:update
를 참조해 주세요.패스워드 (MySQL하지 않을 PASSWORD
기능상으로는 알 수 없지만, 확실히 해 둘 필요가 있습니다.명령어를 발행(또는 서버를 정지하고 재시작)해야 할 수 있습니다.
엔진에서는, 「MyISAM」( 「MyISAM」)을 체크..frm
사용자가 작성한 보기를 파일로 만듭니다..frm
파일에는 정의자의 호스트를 포함한 정의자가 저장됩니다.(잘못된 구성이 원인이 되어 잘못된 호스트가 기록된 호스트 간에 데이터베이스를 이동할 때 이 작업을 수행해야 했습니다...)
언급URL : https://stackoverflow.com/questions/1913984/re-assign-host-access-permission-to-mysql-user
'source' 카테고리의 다른 글
모든 mysql 테이블을 자동으로 별도의 파일로 덤프하시겠습니까? (0) | 2022.12.24 |
---|---|
'ngModel'은 'input'의 알려진 속성이 아니므로 바인딩할 수 없습니다. (0) | 2022.12.24 |
NOW()를 datetime 데이터 유형의 기본값으로 설정하시겠습니까? (0) | 2022.12.24 |
Angular에서 동적으로 외부 스크립트를 로드하려면 어떻게 해야 합니까? (0) | 2022.12.13 |
Angular에서 앵커 해시 링크를 처리하는 방법JS (0) | 2022.12.13 |