
- 유저 생성 시 host 지정 → SQL 수준에서 로컬/원격 구분 가능
- 같은 이름이라도 로컬용과 원격용 계정 공존 가능
- 보안성: host 제한으로 접근 제어 가능
-- 직접 접속용 (로컬)
CREATE USER 'user_local'@'localhost' IDENTIFIED BY 'password';
-- 원격 접속용
CREATE USER 'user_remote'@'%' IDENTIFIED BY 'password';
CREATE USER 'user_specific'@'192.168.0.100' IDENTIFIED BY 'password';
- 로그인 > USER 매핑 (아래 설명)
- 원격/로컬 구분 없음 → 네트워크(TCP/IP), 방화벽 설정으로 제어
- 보안성: 서버/인스턴스 설정으로 접근 제어
CREATE LOGIN user_sql WITH PASSWORD = 'password';
USE mydb;
CREATE USER user_sql FOR LOGIN user_sql;
-- 추가: SQL Server 인스턴스에서 TCP/IP 활성화 및 포트 1433 열기
서버 수준 계정
SQL Server 인스턴스 전체에서 인증 가능한 ID.
CREATE LOGIN myLogin WITH PASSWORD = 'password';
로그인은 SQL Server 접속 자체를 허용하는 권한만 가진다.
로그인 자체로는 특정 데이터베이스에 접근할 수 없다.
데이터베이스 수준 계정
로그인과 연결(Mapping)되어야만 해당 DB에 접근 가능.
CREATE USER myUser FOR LOGIN myLogin;
DB 내에서 권한(SELECT, INSERT, UPDATE 등)을 부여받아야 실제 작업 가능.
로그인 없이 DB 사용자는 존재할 수 없고, DB 사용자는 반드시 로그인과 연결되어야 함
[SQL Server Instance] │ ├── Login1 ──> Database1.User1 (권한: SELECT, INSERT) ├── Login1 ──> Database2.User2 (권한: SELECT) └── Login2 ──> Database1.User3 (권한: UPDATE, DELETE)