2017-09-17 4 views

답변

0
  1. 각 테너에게 고유 한 MySQL 사용자 이름과 암호를 제공하십시오.
  2. 그런 다음 각 세입자에게 자체 데이터베이스를 하나 이상 제공하십시오.
  3. 그런 다음 각 테넌트의 사용자 이름 액세스 권한을 자신이 소유 한 데이터베이스에만 부여하십시오.

이러한 다중 점유 방식은 호스팅 제공 업체의 수백만 건의 WordPress 설치에서 사용되므로 현장 테스트를 거쳐 입증 된 것입니다.

사용자를 만들려면 다음과 같이하십시오.

CREATE USER 'userid'@'localhost' IDENTIFIED BY 'password'; 
    CREATE USER 'userid'@'%' IDENTIFIED BY 'password'; 

다음이 데이터베이스를 사용자와 동일한 이름을 제공합니다 (데이터베이스를 만들어 사용자의 컴퓨터 주소 부여,. 그 여러 임차에 대한 편리 할 수 ​​있습니다

CREATE DATABASE userid; 

가 그런 다음에 사용자 권한을 부여 데이터베이스 전용.

GRANT ALL PRIVILEGES ON userid.* TO 'userid'@'localhost'; 
    GRANT ALL PRIVILEGES ON userid.* TO 'userid'@'%'; 

그런 다음 그들이 할 권한을 플러시 '가라.'

FLUSH PRIVILEGES; 

모든 데이터베이스에 대한 읽기 전용 액세스 권한을 가진 글로벌보고 사용자를 원하는 경우이를 다음과 같이 설정할 수 있습니다.

GRANT SELECT ON *.* TO 'globalreportid'@'localhost'; 
    GRANT SELECT ON *.* TO 'globalreportid'@'%'; 
    GRANT SHOW DATABASES TO 'globalreportid'@'localhost'; 
    GRANT SHOW DATABASES TO 'globalreportid'@'%'; 

주의 각 행에 대해 관련 세입자를 식별하는 하나의 데이터베이스를 사용하고, 다양한 테이블의 열이있는 멀티 테넌트 응용 프로그램을 디자인 할 수 있습니다. 그것이 대부분의 다중 사용자 웹 응용 프로그램이 작동하는 방식입니다. 다양한 세입자가 서로의 데이터를 보지 말아야한다는 규칙을 적용하는 것은 그 경우 귀하의 신청서에 달려 있습니다. 그러나 데이터베이스 수준에서는 다중 소유가 아닙니다. 당신이 당신의 시스템을 사용하는 다스 이상의 세입자 정도를 기대하는 경우 멀티 테넌트 응용 프로그램의 각 세입자를위한 별도의 데이터베이스를 생성

일반적으로 좋은 생각이 아니다.

데이터베이스 보안은 복잡한 주제입니다. 여기서 MySQL 보안에 관해 읽을 수 있습니다. https://dev.mysql.com/doc/refman/5.7/en/security.html

+0

는하지만 내가 어떻게 tanant ID에 또한 내가 어떻게 모든 세입자의 데이터를 볼 수 있습니다 슈퍼 사용자에게보고를 달성 할 수에 따라 데이터를 저장하는 자바 스프링을 사용하여 런타임에 세입자를 전환 할 수 있습니다. –

+0

질문을 명확하게하려면 의견을 사용하지 말고 질문을 편집하십시오. –