MySQL Parameters 데이터 제작 방법
MySQL Parameters 데이터 제작 방법
MySQL Advent Calendar 2020 25일째 보도다.
MySQL Parameters 페이지 유지 관리.
MySQL Paramers는 MySQL 버전 간의 차이를 표시할 수 있습니다.
이제 다음 버전을 비교할 수 있습니다.
노란색 셀은 왼쪽 셀과 다른 값을 나타냅니다.
원래 블루였는데.js를 배우기 위해 한 것은 기본적으로 이렇다. 앞부분은 너무 했다.다시 하고 싶어요.
앞머리를 만지고 싶지 않으니 데이터를 어떻게 만드는지 설명해 주세요.
mysqld 명령행 매개 변수
기본적으로
mysqld --no-defaults --user mysql --help -v
출력의 후반부에서부터 파라미터 이름과 값을 수집한다.Variables (--variable-name=value)
and boolean options {FALSE|TRUE} Value (after reading options)
------------------------------------------------------------ -------------
abort-slave-event-count 0
activate-all-roles-on-login FALSE
admin-address (No default value)
admin-port 33062
admin-ssl TRUE
admin-ssl-ca (No default value)
admin-ssl-capath (No default value)
admin-ssl-cert (No default value)
admin-ssl-cipher (No default value)
admin-ssl-crl (No default value)
admin-ssl-crlpath (No default value)
...
--plugin-load
에는 가능한 한 플러그인을 많이 불러와서 값을 표시하기 때문에 example 메모리 엔진과 비슷한 매개 변수를 보여 줍니다.mysql 명령행 매개 변수
mysqld와 같이
mysql --no-defaults --help -v
출력의 후반부를 사용합니다.Variables (--variable-name=value)
and boolean options {FALSE|TRUE} Value (after reading options)
--------------------------------- ----------------------------------------
auto-rehash TRUE
auto-vertical-output FALSE
bind-address (No default value)
binary-as-hex FALSE
character-sets-dir (No default value)
column-type-info FALSE
comments FALSE
compress FALSE
database (No default value)
default-character-set auto
delimiter ;
...
시스템 변수
mysqld --help -v
출력된 매개 변수와 mysqld가 시작된 후SHOW VARIABLES
에 표시된 변수는 미묘한 차이가 있기 때문에 추가되었습니다.부팅 후 모든 플러그인과 구성 요소를 불러온 후
SHOW GLOBAL VARIABLES
의 출력을 사용합니다.activate_all_roles_on_login OFF
admin_address
admin_port 33062
admin_ssl_ca
admin_ssl_capath
admin_ssl_cert
admin_ssl_cipher
admin_ssl_crl
admin_ssl_crlpath
admin_ssl_key
admin_tls_ciphersuites
admin_tls_version TLSv1,TLSv1.1,TLSv1.2,TLSv1.3
auto_generate_certs ON
auto_increment_increment 1
auto_increment_offset 1
autocommit ON
...
상태 변수
SHOW GLOBAL STATUS
출력의 첫 번째 열만 사용합니다.Aborted_clients 0
Aborted_connects 0
Acl_cache_items_count 0
Audit_null_authorization_column 0
Audit_null_authorization_db 0
Audit_null_authorization_procedure 0
Audit_null_authorization_proxy 0
Audit_null_authorization_table 0
Audit_null_authorization_user 0
Audit_null_called 2222
Audit_null_command_end 8
Audit_null_command_start 9
Audit_null_connection_change_user 0
Audit_null_connection_connect 2
Audit_null_connection_disconnect 1
...
문자 세트
mysql --no-defaults -e 'SHOW CHARSET'
출력의 첫 번째 열을 사용합니다.Charset Description Default collation Maxlen
armscii8 ARMSCII-8 Armenian armscii8_general_ci 1
ascii US ASCII ascii_general_ci 1
big5 Big5 Traditional Chinese big5_chinese_ci 2
binary Binary pseudo charset binary 1
cp1250 Windows Central European cp1250_general_ci 1
cp1251 Windows Cyrillic cp1251_general_ci 1
cp1256 Windows Arabic cp1256_general_ci 1
cp1257 Windows Baltic cp1257_general_ci 1
cp850 DOS West European cp850_general_ci 1
cp852 DOS Central European cp852_general_ci 1
cp866 DOS Russian cp866_general_ci 1
...
섞다
mysql --no-defaults -e 'SHOW COLLATION'
출력의 첫 번째 열을 사용합니다.Collation Charset Id Default Compiled Sortlen Pad_attribute
armscii8_bin armscii8 64 Yes 1 PAD SPACE
armscii8_general_ci armscii8 32 Yes Yes 1 PAD SPACE
ascii_bin ascii 65 Yes 1 PAD SPACE
ascii_general_ci ascii 11 Yes Yes 1 PAD SPACE
big5_bin big5 84 Yes 1 PAD SPACE
big5_chinese_ci big5 1 Yes Yes 1 PAD SPACE
binary binary 63 Yes Yes 1 NO PAD
cp1250_bin cp1250 66 Yes 1 PAD SPACE
cp1250_croatian_ci cp1250 44 Yes 1 PAD SPACE
cp1250_czech_cs cp1250 34 Yes 2 PAD SPACE
cp1250_general_ci cp1250 26 Yes Yes 1 PAD SPACE
cp1250_polish_ci cp1250 99 Yes 1 PAD SPACE
cp1251_bin cp1251 50 Yes 1 PAD SPACE
cp1251_bulgarian_ci cp1251 14 Yes 1 PAD SPACE
...
사용 권한
DESC mysql.user
의 열 이름*_priv
에서 권한을 얻습니다.Field Type Null Key Default Extra
Host char(255) NO PRI
User char(32) NO PRI
Select_priv enum('N','Y') NO N
Insert_priv enum('N','Y') NO N
Update_priv enum('N','Y') NO N
Delete_priv enum('N','Y') NO N
Create_priv enum('N','Y') NO N
Drop_priv enum('N','Y') NO N
Reload_priv enum('N','Y') NO N
...
열명과 권한명은 미묘한 차이Create_tmp_table
→CREATE TEMPORARY TABLES
등)로 수정되었다.그리고 8.0의 권한은
PROXY
이지만 이것은 mysql.user
에 포함되지 않기 때문에 보고 있습니다mysql.proxies_priv
.Field Type Null Key Default Extra
Host char(255) NO PRI
User char(32) NO PRI
Proxied_host char(255) NO PRI
Proxied_user char(32) NO PRI
...
나머지 8.0은 동적 권한(Dynamic Privileges)(개인적으로 이름이 좋지 않다고 생각), 플러그인과 구성 요소에 추가된 권한이 있습니다.ALL 권한이 있는 사용자
SHOW GRANTS FOR ユーザー名
출력을 만들었기 때문에 그것을 사용했다.Grants for test@%
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON *.* TO `test`@`%` WITH GRANT OPTION
GRANT APPLICATION_PASSWORD_ADMIN,AUDIT_ADMIN,BACKUP_ADMIN,BINLOG_ADMIN,BINLOG_ENCRYPTION_ADMIN,CLONE_ADMIN,CONNECTION_ADMIN,ENCRYPTION_KEY_ADMIN,GROUP_REPLICATION_ADMIN,INNODB_REDO_LOG_ARCHIVE,INNODB_REDO_LOG_ENABLE,PERSIST_RO_VARIABLES_ADMIN,REPLICATION_APPLIER,REPLICATION_SLAVE_ADMIN,RESOURCE_GROUP_ADMIN,RESOURCE_GROUP_USER,ROLE_ADMIN,SERVICE_CONNECTION_ADMIN,SESSION_VARIABLES_ADMIN,SET_USER_ID,SHOW_ROUTINE,SYSTEM_USER,SYSTEM_VARIABLES_ADMIN,TABLE_ENCRYPTION_ADMIN,XA_RECOVER_ADMIN ON *.* TO `test`@`%` WITH GRANT OPTION
실제로 이 출력에는 모든 권한mysql.user
이 포함되어 있어 보지 않아도 되지만 이런 출력은 8.0에 불과하다. 5.7 이하면 아래처럼 출력되기 때문에 모르겠다.Grants for test@%
GRANT ALL PRIVILEGES ON *.* TO 'test'@'%' WITH GRANT OPTION
함수/연산자
mysql에서
help Functions
클래스를 표시하고 help에서 함수 이름의 일람표를 표시합니다.mysql> help Functions;
You asked for help about help category: "Functions"
For more information, type 'help <item>', where <item> is one of the following
categories:
Aggregate Functions and Modifiers
Bit Functions
Cast Functions and Operators
Comparison Operators
Control Flow Functions
Date and Time Functions
Encryption Functions
Enterprise Encryption Functions
...
mysql> help Aggregate Functions and Modifiers;
You asked for help about help category: "Aggregate Functions and Modifiers"
For more information, type 'help <item>', where <item> is one of the following
topics:
AVG
BIT_AND
BIT_OR
BIT_XOR
COUNT
COUNT DISTINCT
GROUP_CONCAT
JSON_ARRAYAGG
JSON_OBJECTAGG
MAX
...
는 처음에 이걸 사용했지만 출력된 퍼스가 귀찮아서 현재mysql.help_category
와mysql.help_topic
표에서 이름을 얻었다.mysql> select help_category_id,name,parent_category_id from mysql.help_category;
+------------------+---------------------------------+--------------------+
| help_category_id | name | parent_category_id |
+------------------+---------------------------------+--------------------+
| 0 | Contents | 0 |
| 1 | Help Metadata | 0 |
| 2 | Data Types | 0 |
| 3 | Administration | 0 |
| 4 | Functions | 0 |
...
mysql> select help_topic_id,name,help_category_id from mysql.help_topic;
+---------------+----------------------------+------------------+
| help_topic_id | name | help_category_id |
+---------------+----------------------------+------------------+
| 0 | HELP_DATE | 1 |
| 1 | HELP_VERSION | 1 |
| 2 | AUTO_INCREMENT | 2 |
| 3 | HELP COMMAND | 3 |
| 4 | ASYMMETRIC_DECRYPT | 5 |
| 5 | ASYMMETRIC_DERIVE | 5 |
| 6 | ASYMMETRIC_ENCRYPT | 5 |
| 7 | ASYMMETRIC_SIGN | 5 |
...
에서 함수/연산자 클래스 아래name
에서 아래 조회를 통해 추출한다.select t.name from mysql.help_topic t join mysql.help_category c using (help_category_id)
where c.name rlike "functions|operators|geometry (constructors|relations)|properties|mbr|wkt|wkb|xml|gtid"
and c.name != "user-defined functions" and t.name not rlike "definition"
order by t.name
information_schema 데이터베이스의 표 이름과 열 이름
SELECT TABLE_NAME,COLUMN_NAME FROM COLUMNS WHERE TABLE_SCHEMA='information_schema'
의 출력을 사용합니다.ADMINISTRABLE_ROLE_AUTHORIZATIONS GRANTEE
ADMINISTRABLE_ROLE_AUTHORIZATIONS GRANTEE_HOST
ADMINISTRABLE_ROLE_AUTHORIZATIONS HOST
ADMINISTRABLE_ROLE_AUTHORIZATIONS IS_DEFAULT
ADMINISTRABLE_ROLE_AUTHORIZATIONS IS_GRANTABLE
ADMINISTRABLE_ROLE_AUTHORIZATIONS IS_MANDATORY
ADMINISTRABLE_ROLE_AUTHORIZATIONS ROLE_HOST
ADMINISTRABLE_ROLE_AUTHORIZATIONS ROLE_NAME
ADMINISTRABLE_ROLE_AUTHORIZATIONS USER
APPLICABLE_ROLES GRANTEE
APPLICABLE_ROLES GRANTEE_HOST
APPLICABLE_ROLES HOST
APPLICABLE_ROLES IS_DEFAULT
...
performance_schema 데이터베이스의 표 이름과 열 이름
SELECT TABLE_NAME,COLUMN_NAME FROM COLUMNS WHERE TABLE_SCHEMA='performance_schema'
의 출력을 사용합니다.accounts CURRENT_CONNECTIONS
accounts HOST
accounts TOTAL_CONNECTIONS
accounts USER
binary_log_transaction_compression_stats COMPRESSED_BYTES_COUNTER
binary_log_transaction_compression_stats COMPRESSION_PERCENTAGE
binary_log_transaction_compression_stats COMPRESSION_TYPE
binary_log_transaction_compression_stats FIRST_TRANSACTION_COMPRESSED_BYTES
binary_log_transaction_compression_stats FIRST_TRANSACTION_ID
binary_log_transaction_compression_stats FIRST_TRANSACTION_TIMESTAMP
binary_log_transaction_compression_stats FIRST_TRANSACTION_UNCOMPRESSED_BYTES
binary_log_transaction_compression_stats LAST_TRANSACTION_COMPRESSED_BYTES
binary_log_transaction_compression_stats LAST_TRANSACTION_ID
binary_log_transaction_compression_stats LAST_TRANSACTION_TIMESTAMP
binary_log_transaction_compression_stats LAST_TRANSACTION_UNCOMPRESSED_BYTES
...
오류 메시지
오류 메시지는
perror
명령을 통해 출력됩니다.% perror 1022
MySQL error code MY-001022 (ER_DUP_KEY): Can't write; duplicate key in table '%-.192s'
, 잘못된 번호의 일람표를 몰라서 원본 코드만 볼 수 있을 줄 알았는데include/mysqld_error.h
에서 꺼낼 수 있어요.//#define OBSOLETE_ER_HASHCHK 1000
//#define OBSOLETE_ER_NISAMCHK 1001
#define ER_NO 1002
#define ER_YES 1003
#define ER_CANT_CREATE_FILE 1004
#define ER_CANT_CREATE_TABLE 1005
#define ER_CANT_CREATE_DB 1006
#define ER_DB_CREATE_EXISTS 1007
#define ER_DB_DROP_EXISTS 1008
//#define OBSOLETE_ER_DB_DROP_DELETE 1009
#define ER_DB_DROP_RMDIR 1010
//#define OBSOLETE_ER_CANT_DELETE_FILE 1011
이것을 사용하여 실행perror
만 하고 출력을 받습니다.끝맺다
네, 저는 3개월에 한 번씩 MySQL이 발표되는 일입니다.
처음 제작을 시작한 것은 8.0GA가 발매되기 전이었고, 덕분에 패치 레벨로 나왔지만 왠지 마이SQL8.0이 많이 변경됐다.x의 차이를 확인하는 것이 간단해졌다.(GA란 대체...?)
투자금은 이 페이지 오른쪽의'엔화 지원'부터 접수한다.
Reference
이 문제에 관하여(MySQL Parameters 데이터 제작 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/tmtms/articles/031079d690379b6913a6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)