source

하나의 명령을 사용하여 여러 DB에 부여

lovecheck 2022. 12. 8. 21:24
반응형

하나의 명령을 사용하여 여러 DB에 부여

나는 많이 가지고 있다mariaDB같은 프레픽스를 가진 데이터베이스예를 들어

apple1
apple2
apple3
....
apple5000
apple5001
banana1
banana2
...
banana100

그리고 나는 새로운 사용자를 만들고 싶다.USER할 수 있는 사람SELECT데이터베이스에는apple프레픽스그래서 나는 허락한다.SELECT신규 사용자에게USER다음 여러 명령을 사용하여 수행합니다.

GRANT SELECT ON `apple1` TO 'USER'@'%';
GRANT SELECT ON `apple2` TO 'USER'@'%';
GRANT SELECT ON `apple3` TO 'USER'@'%';
...
GRANT SELECT ON `apple5001` TO 'USER'@'%';

와일드카드 등의 명령어를 사용하여 프레픽스를 지정하는 여러 데이터베이스에 대한 솔루션 허가가 있습니까?%)의LIKE스테이트먼트?

GRANT SELECT ON `apple%`.* TO 'USER'@'192.168.0.227';

진짜 문제는 수천 개의 데이터베이스를 가지고 있다는 것입니다.(MySQL은 디렉토리를 통해 각 데이터베이스를 인스턴스화하기 때문에 OS의 문제)가 너무 많아서 속도가 느려질 수 있습니다.

조회할 저장 프로시저를 작성합니다.information_schema모든 데이터베이스를 검색(사용)LIKE생성(사용)SELECT ... CONCAT)의 목적)GRANT진술들.그런 다음 출력을 mysql 명령줄 도구에 수동으로 복사하여 실행합니다.

이것이 구글 검색에서 나왔기 때문에, 저는 결국 for loop을 하고 mysql에 연결했습니다.

for i in var1 var2 var3 ; do echo "grant all on db_$i.* to user@host;" | mysql ; done

숫자를 사용하면for i in 1..1000mycnf 파일에 로그인 정보가 없고 mysql에 로그인해야 하는 경우mysql -u user -password <Password>위의 유일한 문제는 비밀번호가 명령어 이력에 있다는 것입니다.

이것이 해결책을 찾는 사람들에게 도움이 되기를 바랍니다.

언급URL : https://stackoverflow.com/questions/31018331/grant-to-multiple-db-using-one-command

반응형