벤자민의 블로그 2기 시작
2023년 6월 13일 갑작스러운 부친상을 격고나서 무언가를 한다라는 것에서 거의 손을 대지 않고 있었네요. 슬프다거나 그런 감정보다는 그냥 무언가 빠져버린
이 mysql.user
표에는 MariaDB 서버에 대한 액세스 권한이있는 사용자 및 전역 권한에 대한 정보가 들어 있습니다. 테이블을 쿼리 할 수는 있지만 직접 업데이트 할 수는 있지만 사용자 및 권한을 추가 하기 위해 GRANT 및 CREATE USER 를 사용하는 것이 가장 좋습니다 .
MariaDB 권한은 여러 수준에서 발생합니다. 사용자는 create
사용자 수준에서 권한을 부여받지 못할 수도 있지만 create
예를 들어 특정 테이블이나 데이터베이스에 대한 권한을 여전히 가질 수 있습니다 . MariaDB 권한 시스템에 대한보다 완전한 뷰는 권한 을 참조하십시오 .
에서 MariaDB 10.4.1 의 mysql.global_priv 테이블을 교체했다 mysql.user
테이블을, 그리고 mysql.user
지금이다 보기 .
이 mysql.user
테이블에는 다음 필드가 들어 있습니다.
Field | Type | NULL | Key | Default | Description | introduced |
---|---|---|---|---|---|---|
Host |
char(60) |
NO | PRI | 호스트 (와 User 함께이 계정의 고유 식별자를 구성합니다. |
||
User |
char(80) |
NO | PRI | 사용자 ( Host 이 계정의 고유 식별자를 구성 함). |
||
Password |
longtext (> =MariaDB 10.4.1), char(41) (<=MariaDB 10.4.0) |
NO | PASSWORD () 함수에 의해 생성 된 해시 된 암호 입니다. | |||
Select_priv |
enum('N','Y') |
NO | N | SELECT 문을 수행 할 수 있습니다. | ||
Insert_priv |
enum('N','Y') |
NO | N | INSERT 문을 수행 할 수 있습니다. | ||
Update_priv |
enum('N','Y') |
NO | N | UPDATE 문을 수행 할 수 있습니다. | ||
Delete_priv |
enum('N','Y') |
NO | N | DELETE 문을 수행 할 수 있습니다. | ||
Create_priv |
enum('N','Y') |
NO | N | CREATE DATABASE 또는 CREATE TABLE을 작성할 수 있습니다. | ||
Drop_priv |
enum('N','Y') |
NO | N | DROP DATABASE 또는 DROP TABLE을 삭제할 수 있습니다. | ||
Reload_priv |
enum('N','Y') |
NO | N | FLUSH 문 또는 동등한 mysqladmin 명령을 실행할 수 있습니다. | ||
Shutdown_priv |
enum('N','Y') |
NO | N | SHUTDOWN 또는 mysqladmin shutdown을 사용하여 서버를 종료 할 수있습니다. | ||
Process_priv |
enum('N','Y') |
NO | N | SHOW PROCESSLIST 또는mysqladmin processlist 를 통해 활성 프로세스에 대한 정보를 표시 할 수 있습니다. | ||
File_priv |
enum('N','Y') |
NO | N | LOAD DATA INFILE 과 같은 명령문을 사용 하거나 LOAD_FILE () 과 같은 함수를사용하여 서버에서 파일을 읽고 씁니다 .또한 CONNECT 외부 테이블 을 작성해야합니다 . MariaDB 서버에는 해당 파일에 액세스 할 수있는 권한이 있어야합니다. | ||
Grant_priv |
enum('N','Y') |
NO | N | 사용자는 소유 한 권한을 부여 할 수 있습니다. | ||
References_priv |
enum('N','Y') |
NO | N | 미사용 | ||
Index_priv |
enum('N','Y') |
NO | N | CREATE INDEX .을 사용하여 테이블에 인덱스를 작성할 수 있습니다 . INDEX 권한이 없으면 사용자는 권한 이있는 경우CREATE TABLE 문을 사용하여 테이블을 만들 때 인덱스를 만들 수 있으며 사용자는 CREATE 권한 이있는 경우 ALTER TABLE 문을 사용하여 인덱스를 만들 수 있습니다 ALTER . |
||
Alter_priv |
enum('N','Y') |
NO | N | ALTER TABLE 문을 수행 할 수 있습니다. | ||
Show_db_priv |
enum('N','Y') |
NO | N | SHOW DATABASES 문을 사용하여 모든 데이터베이스를 나열 할 수 있습니다. SHOW DATABASES 권한이 없으면 사용자는 여전히 SHOW DATABASES 명령문을 발행 할 수 있지만 특권이있는 테이블을 포함하는 데이터베이스 만 나열합니다. |
||
Super_priv |
enum('N','Y') |
NO | N | 수퍼 유저 명령문을 실행할 수 있습니다 :MUST TO , KILL (이 권한이없는 사용자는 KILL 자신의 스레드 만 가능 ),PURGE LOGS , SET 전역 시스템 변수또는 mysqladmin debug 명령. 또한이 사용 권한은 read_only 시작 옵션이 설정되어 있어도 사용자가 데이터를 쓸 수있게하고 , 로깅을 활성화 또는 비활성화하고, 슬레이브에 대한 복제를 활성화 또는 비활성화하고, DEFINER 해당 절을 지원 하는 for 문을 지정하고 , 연결 후 한 번 연결합니다 MAX_CONNECTIONS . init-connectmysqld 옵션에 대한 명령문이 지정 되면 SUPER 권한이 있는 사용자가 서버에 연결할 때 해당 명령이 실행되지 않습니다 . |
||
Create_tmp_table_priv |
enum('N','Y') |
NO | N | CREATE TEMPORARY TABLE . 으로 임시 테이블을 작성할 수 있습니다 . | ||
Lock_tables_priv |
enum('N','Y') |
NO | N | LOCK TABLES 문을 사용하여 명시 적 잠금을 획득 합니다. 또한 사용자는 SELECT 테이블을 잠그기 위해 테이블에 대한 특권 을 가져야 합니다. |
||
Execute_priv |
enum('N','Y') |
NO | N | 저장 프로 시저 또는 함수를 실행할 수 있습니다. | ||
Repl_slave_priv |
enum('N','Y') |
NO | N | 마스터에서 슬레이브 서버가 사용하는 계정에는이 권한이 필요합니다. 이는 마스터에 대한 업데이트를 얻는 데 필요합니다. | ||
Repl_client_priv |
enum('N','Y') |
NO | N | SHOW MASTER STATUS 및 SHOW SLAVE STATUS 문을 실행할 수 있습니다. | ||
Create_view_priv |
enum('N','Y') |
NO | N | CREATE_VIEW 문을 사용하여보기를 작성할 수 있습니다 . | ||
Show_view_priv |
enum('N','Y') |
NO | N | SHOW CREATE VIEW 문을 사용하여 뷰를 생성하는 CREATE VIEW 문을 표시 할 수 있습니다 . | ||
Create_routine_priv |
enum('N','Y') |
NO | N | CREATE PROCEDURE 및 CREATE FUNCTION 문을 사용하여 저장된 프로그램을 작성할 수 있습니다 . | ||
Alter_routine_priv |
enum('N','Y') |
NO | N | ALTER FUNCTION 문을 사용하여 저장된 함수의 특성을 변경할 수 있습니다 . | ||
Create_user_priv |
enum('N','Y') |
NO | N | (가)를 사용하여 사용자가 만들 수있는 사용자 CREATE 문을, 또는 암시 적있는 사용자 생성 GRANT의 문을. | ||
Event_priv |
enum('N','Y') |
NO | N | 이벤트를 생성, 삭제 및 변경 합니다 . | ||
Trigger_priv |
enum('N','Y') |
NO | N | 실행할 수 트리거 실행 테이블 사용자 업데이트와 관련된를 트리거를 생성 하고트리거 DROP 문을. | ||
Create_tablespace_priv |
enum('N','Y') |
NO | N | |||
Delete_history_priv |
enum('N','Y') |
NO | N | 시스템 버전 관리를 통해 생성 된 행을 삭제할 수 있습니다. | MariaDB 10.3.5 | |
ssl_type |
enum('', 'ANY', 'X509', 'SPECIFIED') |
NO | TLS 유형 - TLS 옵션을 참조하십시오 . | |||
ssl_cipher |
blob |
NO | NULL | TLS 암호 - TLS 옵션을 참조하십시오 . | ||
x509_issuer |
blobNO |
NO | NULL | X509 암호 - TLS 옵션을 참조하십시오 . | ||
x509_subject |
blob |
NO | NULL | SSL 제목 - TLS 옵션을 참조하십시오 . | ||
max_questions |
int(11) unsigned |
NO | 0 | 사용자가 시간당 수행 할 수있는 쿼리 수입니다. 0은 무제한입니다. 계정 별 리소스 제한을 참조하십시오 . | ||
max_updates |
int(11) unsigned |
NO | 0 | 사용자가 시간당 수행 할 수있는 업데이트 수입니다. 0은 무제한입니다. 계정 별 리소스 제한을 참조하십시오 . | ||
max_connections |
int(11) unsigned |
NO | 0 | 시간당 계정이 시작할 수있는 연결 수입니다. 0은 무제한입니다. 계정 별 리소스 제한을 참조하십시오 . | ||
max_user_connections |
int(11) |
NO | 0 | 계정이 가질 수있는 동시 연결 수입니다.0은 무제한입니다. 계정 별 리소스 제한을참조하십시오 . | ||
plugin |
char(64) |
NO | 연결시 사용되는 인증 플러그인. 비어있는 경우 기본값을 사용합니다 . | MariaDB 5.5 | ||
authentication_string |
text |
NO | NULL | 인증 플러그 인의 인증 문자열입니다. | MariaDB 5.5 | |
password_expired |
enum('N','Y') |
NO | N | MySQL 호환 옵션. MariaDB에는 구현되어 있지 않습니다. | ||
is_role |
enum('N','Y') |
NO | N | 사용자가 역할 인지 여부 . | MariaDB 10.0.5 | |
default_role |
char(80) |
NO | N | 사용자 로그인시 자동으로 활성화 될 역할. | MariaDB 10.1.1 | |
max_statement_time |
decimal(12,6) |
NO | 0.000000 | 0이 아니면 자동으로 죽기 전에 실행되는 쿼리의 기간입니다. | MariaDB 10.1.1 | |
들 | 유형 | 없는 | 키 | 태만 | 기술 | 도입 된 |
Acl_roles의 추가 상태 변수, MariaDB 10.1.4 의 행 수를 나타내는 mysql.user
표는 어디에 포함 is_role='Y'
.
Acl_users의 상태 변수는 추가 MariaDB 10.1.4 의 행 수를 나타내는 mysql.user
표는 어디에 포함 is_role='N'
.
때 plugin
열 중 하나에 계정을 인증하는 MariaDB 기본적으로 비어 mysql_native_password
또는 mysql_old_password
플러그인. Password
열의 값에 사용 된 해시를 기반으로 결정합니다 . 암호가 설정되지 않았거나 4.1 암호 해시가 사용되면 (41 자 길이) MariaDB는 mysql_native_password
플러그인을 사용합니다 . mysql_old_password
플러그인 (16 자 길이) 4.1 이전 암호 해시와 함께 사용된다.
MariaDB는 또한 대체 인증 플러그인 의 사용을 지원합니다 . 때 plugin
열이 주어진 계정에 대한 비어 있지, MariaDB는 연결 시도를 인증하는 데 사용합니다. 그런 다음 특정 플러그인은 Password
열 또는 열의 값을 사용 authentication_string
하여 사용자를 인증합니다.
특정 인증 플러그인이 제공 계정을 사용할 수 있습니다 IDENTIFIED VIA authentication_plugin
에 절을 CREATE USER
, ALTER USER
또는 GRANT
문.
예를 들어, 다음 명령문은 PAM 인증 플러그인으로 인증하는 계정을 작성합니다 .
CREATE USER 에서는 foo2의 @의 테스트 IDENTIFIED VIA 팸 ;
특정 인증 플러그 인에서 authentication_string
열을 사용하는 경우 계정에 대한이 값은 a USING
또는 AS
키워드 뒤에 지정할 수 있습니다 . 예를 들어, PAM 인증 플러그인 은 계정 의 열로 이동 하는 서비스 이름 을 허용 authentication_string
합니다.
CREATE USER 에서는 foo2의 @의 테스트 IDENTIFIED VIA PAM 사용 'mariadb를' ;