Database 67

mysqlcheck

1. mysqlcheck mysqlcheck은 mysql의 테이블 등에 오류 분석 또는 해결 및 최적화를 해주는 프로그램입니다. 1) 사용법 mysqlcheck [옵션]--all-databases mysqlcheck [옵션] 데이터베이스 [테이블] 2) 주요 옵션 -c(기본 옵션) CHECK TABLE - 테이블에 오류가 있는지 확인합니다. -r REPAIR TABLE - 테이블의 오류를 수정합니다. -a ANALYZE TABLE - 테이블의 통계를 생성합니다. -o OPTIMIZE TABLE - 테이블 및 인덱스의 물리적 스토리지를 재구성하여 공간 확보 및 I/O 효율성을 증가 시킵니다. 옵션에 따라서 Lock이 발생하는 것이 있으므로 SQL 명령어의 레퍼런스를 참고해서 사용하여야 합니다.

Database/MySQL 2022.11.18

mysqladmin

1. mysqladmin mysqladmin은 mysql에서 관리자로 사용하는 명령어들을 실행시켜주는 프로그램입니다. 제가 가장 많이 사용하는 경우는 FLUSH LOGS; 명령으로 error.log 파일을 flush하고 log를 백업하는 스크립트에서 사용하였습니다. 1) 사용방법 $ mysqladmin -uroot -p [명령어] 2) 명령어 정리 create databasename - database를 생성한다. debug - 사용 안해 봄. drop databasename - 데이터베이스를 삭제한다. extended-status - SHOW GLOBAL STATUS; 명령어와 동일한 서버의 상태 값을 보여준다. flush-hosts - TRUNCATE TABLE performance_schema.ho..

Database/MySQL 2022.11.17

mysql_tzinfo_to_sql

1. mysql_tzinfo_to_sql mysql_tzinfo_to_sql 프로그램은 mysql에서 사용하는 time zone 을 설정 할 수 있는 정보를 mysql server에 제공합니다. 기본값은 시스템 타임 존(system_time_zone)을 따라가는 SYSTEM으로 설정이 되어 있습니다. mysql> show VARIABLES LIKE '%time_zone%'; +------------------+--------+ | Variable_name | Value | +------------------+--------+ | system_time_zone | KST | | time_zone | SYSTEM | +------------------+--------+ 서버의 time_zone은 서버에서 사..

Database/MySQL 2022.11.17

mysql_secure_installation

1. mysql_secure_installation mysql_secure_installation은 mysql에서 제공하는 보안 관리 프로그램입니다. 예전에는 mysql에서 익명 계정 및 test DB가 자동으로 설정되어서 설치 이후에 반드시 실행해서 익명 사용자 및 test DB를 제거 했지만 현재는 이런 계정 및 데이터베이스가 설치되지 않기 때문에 많이 사용되지는 않습니다. mysql_secure_installation은 다음의 기능을 포함하고 있습니다. 1) root password 변경 2) root 계정의 외부 액세스 계정 삭제(`root`@`localhost`를 제외한 계정) 3) 익명 사용자 계정 삭제 4) test 데이터베이스의 삭제

Database/MySQL 2022.11.17

mysql 8.x - mysql_config_editor

1. mysql_config_editor mysql을 사용하면서 백업이나 배치 등으로 서버에 접근해서 정보를 얻거나 작업을 진행해야 하는 경우가 발생합니다. 이런 경우 스크립트에 user, password 정보가 평문으로 들어가게 됩니다. 이런 경우 보안에 심각한 문제가 발생할 수 있습니다. 특히 시스템의 정보를 가져오거나 하는 경우는 계정의 권한이 root 또는 그에 상응하는 권한이 할당되어야 하는 경우가 많습니다. 이런 경우를 대비해서 mysql은 mysql의 권한 정보를 저장해 두고 사용 할 수 있는 방법을 제공하고 있습니다. 물론 이것도 문제가 없는 것은 아니지만 최소한의 보안으로 평문의 계정정보 노출을 막을 수 있습니다. # 계정 정보 생성 $ mysql_config_editor set --lo..

Database/MySQL 2022.11.16

mysql 8.x 관련 스크립트 파일

linux os : rocky linux 9 mysql : mysql 8.0.31 1. 서버에는 서버 시작 및 중지를 지원하는 여러 관련 스크립트 1) mysqld - mysql server의 데몬 프로그램, 실제 mysql server가 해당 프로그램으로 실행 됩니다. 2) mysqld_safe - mysqld를 시작합니다. mysqld_safe는 mysqld를 안전하게(?) 중복 실행 방지 등을 위해서 사용되었으나 systemd를 사용하는 linux os에서는 설치가 되지 않습니다. 3) mysql.server - unix 또는 unix 계열의 시스템에서 사용하는 스크립트 4) mysqld_multi - 다중 mysqld를 관리하기 위한 스크립트, systemd를 사용하는 linux os에서는 사용이..

Database/MySQL 2022.11.16

docker mysql lower_case_table_names

WSL2 docker로 mysql을 올려서 clone 테스트 중 문제가 발생하여 정리합니다. WSL2 docker로 mysql을 사용하며 data directory를 volume으로 연결하여 사용하였는데 mysql을 local clone 하고 해당 clone data directory(volume 설정 안함)로 mysql을 시작하였는데 다음과 같은 메세지와 함께 에러가 발생하였습니다. [ERROR] [MY-011087] [Server] Different lower_case_table_names settings for server ('0') and data dictionary ('2'). [ERROR] [MY-010020] [Server] Data Dictionary initialization failed..

Database/MySQL 2021.08.23

mysql 8.x root password 초기화

mysql 8 community를 설치하면 root 계정의 임시 패스워드가 mysqld.log에 기록되게 됩니다. grep 'temporary password' /var/log/mysqld.log 하지만 해당 파일이 사라지거나 dockerfile 설치시에는 mysqld.log이 남지 않습니다. root@localhost의 패스워드를 초기화 해야 합니다. 1. mysqld의 서비스를 중지합니다. systemctl stop mysqld 2. mysqld의 서비스에 옵션을 설정하여 실행합니다. mysqld --user=mysql --skip-grant-tables * --user=mysql : mysqld를 mysql 계정 권한으로 실행합니다. (보통 root나 다른 계정으로 로그인하므로 해당 권한을 할당하여..

Database/MySQL 2021.08.15