• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 1. 일반적인 설치 가이드
    2. 일반적인 바이너리를 사용하여 MySQL의 Unix / Linux에 설치
    3. Microsoft Windows에 MySQL 설치
    4. OS X에 MySQL 설치
    5. Linux에 MySQL 설치
    6. Unbreakable Linux Network (ULN)를 사용한 MySQL 설치
    7. Solaris 및 OpenSolaris에 MySQL을 설치
    8. FreeBSD에 MySQL 설치
    9. Installing MySQL from Source
    10. 설치 후 설정 및 테스트
    1. Unix 시스템에서 설치 후 단계
    2. MySQL 슈퍼 계정 보안 설정
    11. MySQL 업그레이드 및 다운 그레이드
    12. 환경 변수
    13. Perl 설치에 대한 설명
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

2.10.2 MySQL 슈퍼 계정 보안 설정

MySQL 설치 과정의 일환으로 부여 테이블을 포함 mysql 데이터베이스를 설정합니다.

  • Windows 배포는 사전에 초기화 된 부여 테이블을 포함합니다.

  • Unix에서는 mysql_install_db 프로그램이 부여 테이블에 채 웁니다. 일부 설치 방법은이 프로그램이 자동으로 실행됩니다. 그 외에 수동으로 실행해야합니다. 자세한 내용은 섹션 2.10.1 "Unix 유사 시스템에서 설치 후 절차" 를 참조하십시오.

mysql.user 부여 테이블은 초기 MySQL 사용자 계정 및 액세스 권한을 정의합니다.

  • 일부 계정은 사용자 이름이 root 입니다. 이들은 모든 권한을 가지며 어떤 수 슈퍼 사용자 계정입니다. root 계정의 초기 암호는 비어 있습니다. 따라서 누군가 암호없이 root 로 MySQL Server에 연결하여 모든 권한을 부여 할 수 있습니다.

    • Windows에서는 로컬 호스트로부터의 접속 만 허용 root 계정이 생성됩니다. 호스트 이름 localhost IP 주소 127.0.0.1 또는 IPv6 주소 ::1 을 지정하여 연결할 수 있습니다. 사용자가 설치 중에 "Enable root access from remote machines"옵션을 선택한 경우 Windows Installer는에 짐을 호스트로부터의 접속을 허용하는 다른 root 계정을 만듭니다.

    • Unix에서는 각 root 계정은 로컬 호스트로부터의 접속을 허용합니다. 호스트 이름 localhost IP 주소 127.0.0.1 또는 IPv6 주소 ::1 또는 실제 호스트 이름 또는 IP 주소를 지정하여 연결할 수 있습니다.

    호스트 127.0.0.1 로 접속을 시도하면 보통 localhost 계정에 해결합니다. 그러나 서버가 --skip-name-resolve 옵션을 사용하여 실행되는 경우,이 실패합니다. 따라서이 경우에는 127.0.0.1 계정이 편리합니다. ::1 계정은 IPv6 연결에 사용됩니다.

  • 일부 계정은 익명 사용자 용입니다. 이들은 하늘의 사용자 이름을가집니다. 익명의 계정에 암호가 없기 때문에 누군가 그 계정을 사용하여 MySQL 서버에 연결할 수 있습니다.

    • Windows에서는 로컬 호스트로부터의 접속을 허용 익명 계정이 하나 있습니다. localhost 의 호스트 이름을 지정하여 연결할 수 있습니다.

    • Unix에서는 각 익명 계정은 로컬 호스트로부터의 접속을 허용합니다. 계정 중 하나의 호스트 이름 localhost 를 지정하거나 다른 계정의 실제 호스트 이름 또는 IP 주소를 지정하여 연결할 수 있습니다.

mysql.user 테이블에 어떤 계정이 존재하는지, 그 암호가 비어 있는지 여부를 표시하려면 다음 문을 사용합니다.

 mysql> SELECT User, Host, Password FROM mysql.user;
+------+--------------------+----------+
| User | Host               | Password |
+------+--------------------+----------+
| root | localhost          |          |
| root | myhost.example.com |          |
| root | 127.0.0.1          |          |
| root | ::1                |          |
|      | localhost          |          |
|      | myhost.example.com |          |
+------+--------------------+----------+

이 출력은 몇 가지 root 계정과 익명 사용자 계정이 있고, 어느 것에도 암호가 없음을 보여줍니다. 사용하는 시스템에서는 출력이 다를 수 있지만 빈 암호 계정이 존재한다는 것은 어떤 대처를 할 때까지 MySQL 설치가 보호되지 않는다는 것을 의미합니다.

  • 각각의 MySQL root 계정에 암호를 지정해야합니다.

  • 클라이언트가 익명 사용자로 패스워드없이 접속하는 것을 방지하기 위해 각 익명 계정에 패스워드를 할당하거나 해당 계정을 삭제하면 좋을 것입니다.

또한 mysql.db 테이블에는 모든 계정이 test 데이터베이스 및 test_ 로 시작하는 이름을 가진 다른 데이터베이스에 액세스하는 것을 허용하는 행이 포함됩니다. 이것은 기본 익명 계정처럼, 그렇지 않으면 특별한 권한이없는 계정에 적용됩니다. 이 테스트에는 유용​​하지만 프로덕션 서버에서는 권장되지 않습니다. 데이터베이스에 대한 액세스를 그 목적으로 명시 적으로 권한을 부여 된 계정에만 제한하려면 관리자가 mysql.db 테이블의 해당 행을 삭제하면 좋을 것입니다.

다음 단계에서는 초기 MySQL 계정에 암호를 설정하는 방법을 먼저 root 계정 다음 익명 계정의 순으로 설명합니다. 이 단계에서는 익명 액세스를 전혀 허용하지 않는 경우 익명 계정을 삭제하는 방법에 대해서도 언급 데이터베이스를 테스트하기위한 관대 한 액세스를 제거하는 방법도 설명합니다. 예제의 newpwd 사용하는 암호로 대체하십시오. host_name 은 서버의 호스트 이름으로 대체합니다. 이 이름은 위의 SELECT 문의 출력에서 확인할 수 있습니다. 표시된 출력은 host_name 은 myhost.example.com 입니다.

참고

비밀번호 자세한 내용은 섹션 6.3.5 "계정 암호 할당" 을 참조하십시오. root 암호를 설정 한 후에 그것을 잊어 버린 경우, 섹션 B.5.4.1 "root 암호를 재설정하는 방법" 을 참조하십시오.

추가 설치 및 테스트를 실행하는 동안 암호를 지정해야 피하기 위해 암호 설정을 늦추고 싶은 경우가 있습니다. 그러나 설치를 생산 용으로 사용하기 전에 그들을 잊지 않고 설정하십시오.

추가 계정을 설정하려면 섹션 6.3.2 "사용자 계정 추가" 를 참조하십시오.

root 계​​정의 암호 지정

root 계정의 비밀번호는 여러 가지 방법으로 설정할 수 있습니다. 다음의 설명에서는 세 가지 방법을 보여줍니다.

  • SET PASSWORD 문을 사용하여

  • UPDATE 문을 사용하여

  • mysqladmin 명령 행 클라이언트 프로그램을 사용하는

SET PASSWORD 를 사용하여 암호를 할당하려면 서버에 root 로 연결하고 SET PASSWORD 문을 mysql.user 테이블에 나열되어있는 각 root 계정에 게시합니다. PASSWORD() 함수를 사용하여 암호를 잊지 않고 암호화합니다.

Windows에서는 다음과 같이합니다.

 shell> mysql -u root
 mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD(' newpwd ');
 mysql> SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD(' newpwd ');
 mysql> SET PASSWORD FOR 'root'@'::1' = PASSWORD(' newpwd ');
 mysql> SET PASSWORD FOR 'root'@'%' = PASSWORD(' newpwd ');

mysql.user 테이블에 호스트 값이 % 인 root 계정이없는 경우는 마지막 문장은 필요하지 않습니다.

Unix에서는 다음과 같이합니다.

 shell> mysql -u root
 mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD(' newpwd ');
 mysql> SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD(' newpwd ');
 mysql> SET PASSWORD FOR 'root'@'::1' = PASSWORD(' newpwd ');
 mysql> SET PASSWORD FOR 'root'@' host_name ' = PASSWORD(' newpwd ');

UPDATE 를 사용하여 mysql.user 테이블을 직접 수정하여 모든 root 계정에 암호를 할당 단일 문을 사용할 수 있습니다. 이 방법은 모든 플랫폼에서 작동합니다.

 shell> mysql -u root
 mysql> UPDATE mysql.user SET Password = PASSWORD(' newpwd ')
     -> WHERE User = 'root';
 mysql> FLUSH PRIVILEGES;

FLUSH 문은 서버가 부여 테이블을 다시 읽습니다. 그것이 없으면 암호 변경은 서버를 다시 시작할 때까지 서버에 인식되지 않습니다.

비밀번호를 root 계정에 mysqladmin을 사용하여 할당하려면 다음 명령을 실행합니다.

 shell> mysqladmin -u root password " newpwd "
 shell> mysqladmin -u root -h host_name password " newpwd "

이 명령은 Windows 및 Unix 모두에 해당합니다. 비밀번호를 둘러싼 큰 따옴표는 반드시 항상 필요한 것은 아니지만, 암호에 공백 다른 명령 인터프리터에게 특수 문자가 포함 된 경우 사용한다.

mysqladmin을 사용하여 root 계정의 비밀번호를 설정하는 방법은 'root'@'127.0.0.1' or 'root'@'::1' 계정에서는 작동하지 않습니다. 위의 SET PASSWORD 를 사용합니다.

root 설정 후에는 root 로 서버에 연결할 때마다 해당 암호를 제공해야합니다. 예를 들어, mysqladmin에서 서버를 종료하려면 다음 명령을 사용합니다.

 shell> mysqladmin -u root -p shutdown
 Enter password : (enter root password here)

익명 계정의 암호 지정

다음 단계 mysql 명령은 이전 단계를 사용하여 root 암호를 설정하고 서버에 연결할 때 암호를 지정해야한다는 것을 전제로 -p 옵션을 포함합니다.

익명 계정에 암호를 할당하려면 서버에 root 로 접속 한 후 SET PASSWORD 또는 UPDATE 를 사용합니다. PASSWORD() 함수를 사용하여 암호를 잊지 않고 암호화합니다.

Windows에서 SET PASSWORD 를 사용하려면 다음과 같이합니다.

 shell> mysql -u root -p
 Enter password : (enter root password here)
 mysql> SET PASSWORD FOR ''@'localhost' = PASSWORD(' newpwd ');

Unix에서 SET PASSWORD 를 사용하려면 다음과 같이합니다.

 shell> mysql -u root -p
 Enter password : (enter root password here)
 mysql> SET PASSWORD FOR ''@'localhost' = PASSWORD(' newpwd ');
 mysql> SET PASSWORD FOR ''@' host_name ' = PASSWORD(' newpwd ');

단일 UPDATE 문에서 익명 사용자 계정의 암호를 설정하려면 다음과 같이합니다 (모든 플랫폼에서).

 shell> mysql -u root -p
 Enter password : (enter root password here)
 mysql> UPDATE mysql.user SET Password = PASSWORD(' newpwd ')
     -> WHERE User = '';
 mysql> FLUSH PRIVILEGES;

FLUSH 문은 서버가 부여 테이블을 다시 읽습니다. 그것이 없으면 암호 변경은 서버를 다시 시작할 때까지 서버에 인식되지 않습니다.

익명 계정 삭제

익명 계정에 암호를 지정하지 않고 제거 할 경우 Windows에서는 다음과 같이합니다.

 shell> mysql -u root -p
 Enter password : (enter root password here)
 mysql> DROP USER ''@'localhost';

Unix에서는 다음과 같이 익명 계정을 삭제합니다.

 shell> mysql -u root -p
 Enter password : (enter root password here)
 mysql> DROP USER ''@'localhost';
 mysql> DROP USER ''@' host_name ';

테스트 데이터베이스의 보안 설정

기본적으로 mysql.db 테이블에는 모든 사용자가 test 데이터베이스 및 test_ 로 시작하는 이름을 가진 다른 데이터베이스에 대한 액세스를 허용하는 행이 포함됩니다. (이 라인은 빈 User 컬럼 값이 액세스 검사를 위해 임의의 사용자 이름과 일치합니다.) 이것은 그렇지 않으면 아무런 권한도없는 계정조차도 이러한 데이터베이스 를 사용할 수 있음을 의미합니다. 테스트 데이터베이스에 모든 사용자의 액세스를 제거하려면 다음과 같이합니다.

 shell> mysql -u root -p
 Enter password : (enter root password here)
 mysql> DELETE FROM mysql.db WHERE Db LIKE 'test%';
 mysql> FLUSH PRIVILEGES;

FLUSH 문은 서버가 부여 테이블을 다시 읽습니다. 그것이 없으면 권한의 변경은 서버를 다시 시작할 때까지 서버에 인식되지 않습니다.

전술의 변경으로 인해 글로벌 데이터베이스 권한 또는 test 데이터베이스에 명시 적으로 부여 된 권한을 가진 사용자 만이 그것을 사용할 수 있습니다. 그러나 데이터베이스가 전혀 필요하지 않은 경우 드롭합니다.

 mysql> DROP DATABASE test;
참고

Windows에서 MySQL Installer ( 섹션 2.3.3 "MySQL Installer를 사용하여 MySQL의 Microsoft Windows에 설치" 를 참조하십시오)에서 설치 중에이 섹션에 설명 된 단계를 수행 할 수 있습니다. 모든 플랫폼에서 MySQL 배포판에는 MySQL 설치를 보안하는 과정의 대부분을 자동화하는 명령 행 유틸리티 mysql_secure_installation가 포함되어 있습니다. 또한 MySQL Workbench는 모든 플랫폼에서 사용 가능하며, 사용자 계정 관리 기능을 제공합니다 ( 제 26 장 "MySQL Workbench" 를 참조하십시오).


서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved