MariaDB의 mysqlshow 명령어
MariaDB의 mysqlshow 명령어는 데이터베이스, 테이블, 컬럼에 대한 정보를 보여주는 유틸리티다. MySQL에도 동일한 이름의 명령어가 존재하며, MariaDB와 MySQL 모두에서 거의 동일하게 작동한다. mysqlshow는 데이터베이스 스키마 정보를 간략하게 확인하는 데 유용하며, SQL 쿼리를 직접 실행하지 않고도 데이터베이스 구조를 파악하는 데 도움이 된다.
기본 사용법:
mysqlshow [옵션] [데이터베이스명 [테이블명 [컬럼명]]]
옵션:
- -u, --user=사용자: 데이터베이스에 접속할 사용자 계정을 지정한다.
- -p, --password[=비밀번호]: 사용자 계정의 비밀번호를 지정합니다. 비밀번호를 지정하지 않으면 프롬프트에서 입력해야 한다.
- -h, --host=호스트명: 데이터베이스 서버의 호스트 이름을 지정합니다. 기본값은 localhost
- -P, --port=포트번호: 데이터베이스 서버의 포트 번호를 지정합니다. 기본값은 3306.
- -v, --verbose: 자세한 정보를 출력한다.
- -s, --silent: 에러 메시지를 제외한 출력을 최소화한다.
- -V, --version: mysqlshow 버전 정보를 출력한다.
- -C, --compress: 클라이언트와 서버 간의 통신을 압축한다.
- --count: 테이블의 행 수를 출력한다.
- --no-defaults: 기본 옵션을 사용하지 않고 명시적으로 설정된 옵션만 사용한다.
- --help: 도움말을 출력한다.
사용 예시:
- 모든 데이터베이스 목록 보기:이 명령어는 root 사용자로 접속하여 모든 데이터베이스의 이름을 출력한다.
mysqlshow -u root -p
- 특정 데이터베이스의 테이블 목록 보기: mydatabase라는 데이터베이스의 모든 테이블 이름을 출력합니다.
mysqlshow -u root -p mydatabase
- 특정 테이블의 컬럼 정보 보기: mydatabase 데이터베이스의 mytable 테이블의 모든 컬럼 정보 (이름, 데이터 유형, NULL 허용 여부, 키 정보 등)를 출력한다.
mysqlshow -u root -p mydatabase mytable
- 특정 컬럼 정보 보기: mydatabase 데이터베이스의 mytable 테이블의 mycolumn 컬럼의 세부 정보를 출력합니다.
mysqlshow -u root -p mydatabase mytable mycolumn
- 테이블의 행 수 출력: mydatabase 데이터베이스의 mytable 테이블의 행 수를 출력합니다.
mysqlshow -u root -p --count mydatabase mytable
출력 정보:
mysqlshow는 다양한 수준에서 정보를 제공한다.
- 데이터베이스: 데이터베이스 이름 목록을 출력한다.
- 테이블: 테이블 이름 목록 또는 테이블의 컬럼 정보(이름, 유형, NULL 여부, 키 정보 등)를 출력한다.
- 컬럼: 컬럼의 자세한 정보를 출력한다.
주의 사항:
- mysqlshow는 데이터베이스에 직접 접근하여 정보를 가져오므로, 데이터베이스 서버에 접속할 수 있는 적절한 권한을 가진 사용자로 실행해야 한다.
- 비밀번호를 직접 명령줄에 입력하는 것은 보안상 좋지 않습니다. 가능한 한 -p 옵션만 사용하고 비밀번호 입력 프롬프트에서 입력하거나, .my.cnf 파일을 사용하여 인증 정보를 관리하는 것이 좋다.
- mysqlshow의 출력은 기본적으로 간결하게 제공되므로, 더 자세한 정보를 확인하려면 SQL 쿼리(예: SHOW DATABASES;, SHOW TABLES;, DESCRIBE 테이블명;)를 사용하는 것이 좋다.
- mysqlshow의 결과는 터미널에 출력되므로, 필요한 경우 결과를 파일로 리다이렉트하여 저장할 수 있다 (예: mysqlshow ... > output.txt).
mysqlshow 명령어는 데이터베이스 구조를 빠르게 파악하고 간략한 정보를 얻는 데 유용하다. 하지만 더 상세한 정보나 복잡한 쿼리 결과는 SQL 쿼리를 통해 확인하는 것이 좋다.
#!/bin/bash
MYSQL_USER="your_username"
MYSQL_PASS="your_password"
mysql -u "$MYSQL_USER" -p"$MYSQL_PASS" -e "SHOW DATABASES" | grep -v ^Database | while read db; do
echo "--- Database: $db ---"
mysql -u "$MYSQL_USER" -p"$MYSQL_PASS" -D "$db" -e "SHOW TABLES" | grep -v ^Tables_in | while read table; do
echo " Table: $table"
mysql -u "$MYSQL_USER" -p"$MYSQL_PASS" -D "$db" -e "SELECT COUNT(*) FROM \`$table\`;"
echo "--------------------"
done
done