Loading...
MySQL 9.5 Reference Manual 9.5의 8.2.1 Account User Names and Passwords의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
MySQL은 account를 mysql 시스템 데이터베이스의
user 테이블에 저장합니다. account는 user name과,
user가 서버에 접속할 수 있는 클라이언트 호스트 또는 호스트들의
관점에서 정의됩니다. user 테이블에서 account가
어떻게 표현되는지에 대한 정보는
Section 8.2.3, “Grant Tables”를 참조하십시오.
account에는 password와 같은 인증 자격 증명이 있을 수 있습니다. 자격 증명은 account 인증 플러그인에 의해 처리됩니다. MySQL은 여러 인증 플러그인을 지원합니다. 일부는 내장 인증 메서드를 사용하고, 다른 것들은 외부 인증 메서드를 사용한 인증을 가능하게 합니다. Section 8.2.17, “Pluggable Authentication”를 참조하십시오.
user name과 password가 MySQL과 운영 체제에서 사용되는 방식 사이에는 몇 가지 차이가 있습니다:
MySQL에서 인증 목적에 사용되는 user name은
Windows나 Unix에서 사용되는 user name(로그인 이름)과는
아무 관련이 없습니다. Unix에서 대부분의 MySQL 클라이언트는
기본적으로 현재 Unix user name을 MySQL user name으로
사용하여 로그인 시도를 하지만, 이는 단지 편의를 위한
것일 뿐입니다. 기본값은 손쉽게 변경할 수 있는데,
클라이언트 프로그램에서 -u 또는
--user 옵션으로 임의의 user name을
지정할 수 있기 때문입니다. 이는 누구든지 어떠한
user name을 사용해서라도 서버에 연결을 시도할 수
있다는 것을 의미하므로, 모든 MySQL account에
password가 설정되어 있지 않다면 데이터베이스를 어떤 방식으로도
안전하게 만들 수 없습니다. password가 없는 account의
user name을 지정하는 누구든지 서버에 성공적으로
연결할 수 있습니다.
MySQL user name은 최대 32자까지 가능합니다. 운영 체제 user name은 다른 최대 길이를 가질 수 있습니다.
주의
MySQL user name 길이 제한은 MySQL 서버와 클라이언트에
하드코딩되어 있으며, mysql 데이터베이스의
테이블 정의를 수정하여 이를 우회하려는 시도는
작동하지 않습니다.
mysql 데이터베이스의 테이블 구조는
Chapter 3, Upgrading MySQL에 설명된 절차를
통하는 경우를 제외하고는 어떠한 방식으로도 변경해서는
안 됩니다. MySQL 시스템 테이블을 다른 방식으로 재정의하려는
시도는 정의되지 않았으며 지원되지 않는 동작을
야기합니다. 서버는 이러한 수정의 결과로 잘못된 형식이
된 row를 자유롭게 무시할 수 있습니다.
user 테이블에
저장된 password를 사용합니다. 이들 password는 운영
체제 로그인에 사용되는 password와는 구별됩니다. Windows
또는 Unix 머신에 로그인할 때 사용하는 “외부”
password와 그 머신의 MySQL 서버에 접속하는 데
사용하는 password 사이에는 필연적인 연관성이
없습니다.서버가 다른 플러그인을 사용하여 클라이언트를 인증하는 경우,
해당 플러그인이 구현하는 인증 메서드는
user 테이블에 저장된 password를 사용할 수도,
사용하지 않을 수도 있습니다. 이 경우, 외부 password가
MySQL 서버 인증에도 사용될 가능성이 있습니다.
user 테이블에 저장된 password는 플러그인별
알고리즘을 사용하여 암호화됩니다.
user name과 password가 ASCII 문자만을 포함한다면,
문자 집합 설정에 상관없이 서버에 연결할 수
있습니다. user name이나 password에 non-ASCII 문자가
포함되는 경우에도 연결을 가능하게 하려면, 클라이언트
애플리케이션은 MYSQL_SET_CHARSET_NAME 옵션과
적절한 문자 집합 이름을 인수로 하여
mysql_options() C API 함수를 호출해야
합니다. 이렇게 하면 지정된 문자 집합을 사용하여
인증이 수행됩니다. 그렇지 않으면, 서버
기본 문자 집합이 인증 기본값의 인코딩과
동일한 경우가 아니라면 인증에 실패합니다.
표준 MySQL 클라이언트 프로그램은
--default-character-set 옵션을 지원하는데,
이는 앞에서 설명한 방식으로
mysql_options()가 호출되도록 합니다. 추가로,
Section 12.4, “Connection Character Sets and Collations”에
설명된 대로 문자 집합 자동 감지도 지원됩니다. C API를
기반으로 하지 않는 커넥터를 사용하는 프로그램의
경우, 해당 커넥터는 대신 사용할 수 있는
mysql_options()와 동등한 기능을 제공할 수
있습니다. 커넥터 문서를 확인하십시오.
앞의 내용은 클라이언트 문자 집합으로 허용되지 않는
ucs2, utf16, utf32에는
적용되지 않습니다.
MySQL 설치 과정은 grant 테이블을 초기 root account로
채웁니다. 이는 Section 2.9.4, “Securing the Initial MySQL Account”에
설명되어 있으며, password를 어떻게 부여하는지도
다룹니다. 이후에는 일반적으로
CREATE USER,
DROP USER,
GRANT,
REVOKE 등의 statement를 사용하여
MySQL account를 설정, 수정, 삭제합니다.
Section 8.2.8, “Adding Accounts, Assigning Privileges, and Dropping Accounts” 및
Section 15.7.1, “Account Management Statements”를
참조하십시오.
command-line 클라이언트로 MySQL 서버에 연결하려면, 사용하려는 account에 대해 필요한 user name과 password 옵션을 지정하십시오:
1$> mysql --user=finley --password db_name
short 옵션을 선호한다면, 명령은 다음과 같습니다:
1$> mysql -u finley -p db_name
command line에서 방금처럼
--password 또는 -p 옵션 뒤에
password 값을 생략하면, 클라이언트는 password 입력을
요구합니다. 또는, password를 command line에서 지정할 수도
있습니다:
1$> mysql --user=finley --password=password db_name 2$> mysql -u finley -ppassword db_name
-p 옵션을 사용할 때에는, -p와 그 뒤를
따르는 password 값 사이에 공백이 있어서는
안 됩니다.
command line에 password를 지정하는 것은 보안상 안전하지 않은 것으로 간주해야 합니다. Section 8.1.2.1, “End-User Guidelines for Password Security”를 참조하십시오. command line에서 password를 제공하지 않으려면, 옵션 파일 또는 로그인 경로 파일을 사용하십시오. Section 6.2.2.2, “Using Option Files” 및 Section 6.6.7, “mysql_config_editor — MySQL Configuration Utility”를 참조하십시오.
user name, password 및 기타 연결 매개변수 지정과 관련된 추가 정보는 Section 6.2.4, “Connecting to the MySQL Server Using Command Options”를 참조하십시오.
8.2 Access Control and Account Management
8.2.2 Privileges Provided by MySQL