우분투 mysql

MySQL 설치

BashCopy
sudo apt update
sudo apt install mysql-server
Bash

MySQL 방화벽 허용

sudo ufw allow mysql 명령어는 리눅스 우분투에서 ufw (Uncomplicated Firewall) 방화벽을 사용하여 MySQL 서비스에 대한 네트워크 접근을 허용하는 설정을 합니다. 이 명령어를 분석하면 다음과 같은 의미를 가집니다:

  • sudo: Superuser do의 약자로, 이 명령어를 사용하여 루트 사용자(슈퍼유저) 권한으로 명령을 실행합니다. 리눅스에서는 보안상의 이유로 일반 사용자가 민감한 시스템 설정을 변경할 수 없기 때문에, sudo를 통해 임시로 높은 권한을 얻어 이런 작업을 수행할 수 있습니다.
  • ufw: Uncomplicated Firewall의 약자로, 우분투에서 기본적으로 제공하는 사용하기 쉬운 방화벽 관리 도구입니다. ufw는 iptables의 복잡성을 추상화하여 사용자가 더 간단하게 방화벽 규칙을 관리할 수 있게 해줍니다.
  • allow: 이 옵션은 지정된 서비스, 포트, 또는 IP 범위로의 네트워크 접근을 허용하도록 ufw에 지시합니다.
  • mysql: 이 부분은 허용하려는 서비스의 이름입니다. 여기서는 MySQL 데이터베이스 서버를 의미합니다. ufw/etc/services 파일을 참조하여 mysql이라는 이름에 해당하는 포트 번호(기본적으로 TCP 3306)를 찾아 그 포트로의 접근을 허용합니다.

결론적으로, sudo ufw allow mysql 명령어는 우분투 시스템에서 MySQL 서버로의 네트워크 접근을 허용하도록 방화벽 규칙을 설정하는 것입니다. 이 설정은 원격 위치에서 MySQL 데이터베이스에 접근하려는 경우 필요합니다.

BashCopy
sudo ufw allow mysql
Bash

MySQL 실행

BashCopy
sudo systemctl start mysql
Bash

sudo systemctl enable mysql 명령어는 시스템 부팅 시 자동으로 MySQL 서비스를 시작하도록 설정하는 데 사용됩니다. 이 명령어의 각 부분은 다음과 같은 의미를 가집니다:

  • sudo: 이 명령어는 슈퍼유저 권한으로 다른 명령을 실행할 수 있게 해줍니다. 시스템 서비스 설정을 변경하는 것은 일반적으로 높은 권한을 요구하기 때문에 sudo를 사용합니다.
  • systemctl: systemctl은 systemd 시스템과 서비스 매니저의 커맨드라인 인터페이스입니다. Linux 시스템에서 서비스(데몬)를 관리하고 시스템 상태를 검사하는 데 사용됩니다.
  • enable: 이 옵션은 지정된 서비스가 시스템 부팅 시 자동으로 시작되도록 설정합니다. 이것은 서비스의 심볼릭 링크를 생성하여 해당 서비스가 부팅 시에 시작되도록 systemd의 구성에 추가합니다.
  • mysql: 이 부분은 명령어가 적용될 서비스의 이름입니다. 여기서는 MySQL 데이터베이스 서버를 의미합니다.

sudo systemctl enable mysql 명령어를 실행하면, 시스템이 부팅될 때 MySQL 서비스가 자동으로 시작되도록 systemd에 등록됩니다. 이는 MySQL을 사용하는 애플리케이션이 시스템 시작 시 바로 데이터베이스에 접근할 수 있도록 해줍니다. MySQL 서비스가 이 명령어로 활성화되면, 수동으로 서비스를 시작할 필요 없이 시스템이 자동으로 MySQL 서버를 실행시킵니다.

BashCopy
sudo systemctl enable mysql
Bash

sudo systemctl stop mysql 명령어는 현재 실행 중인 MySQL 서비스를 중지하는 데 사용됩니다. 이 명령어의 각 부분은 다음과 같은 의미를 가집니다:

  • sudo: 이 명령어는 높은 권한(슈퍼유저 권한)으로 다른 명령을 실행할 수 있게 해주며, 시스템 서비스를 중지시키는 작업은 일반적으로 높은 권한을 요구합니다.
  • systemctl: systemctl은 systemd, 시스템 및 서비스 매니저의 커맨드라인 인터페이스로, Linux 시스템에서 서비스(또는 데몬)를 관리하는 데 사용됩니다.
  • stop: 이 옵션은 지정된 서비스를 중지합니다. 서비스가 현재 실행 중인 경우, 이 명령어는 그 서비스의 실행을 멈추게 합니다.
  • mysql: 이 부분은 명령어의 대상이 되는 서비스의 이름입니다. 여기서는 MySQL 데이터베이스 서버를 의미합니다.

따라서, sudo systemctl stop mysql 명령어를 실행하면, 시스템은 MySQL 서비스를 안전하게 중지시킵니다. 이 작업은 유지보수를 위해 MySQL 서버를 임시로 중지시키거나, 시스템 리소스를 확보하기 위해, 또는 서버 구성을 변경하기 전에 실행되는 서비스를 멈추고자 할 때 유용합니다. MySQL 서비스를 다시 시작하려면, sudo systemctl start mysql 명령어를 사용하면 됩니다.

BashCopy
sudo systemctl stop mysql
Bash

sudo mysql -u root 명령어는 Linux 시스템에서 슈퍼유저 권한으로 MySQL 데이터베이스 서버에 root 사용자로 로그인하기 위해 사용됩니다. 각 부분의 의미는 다음과 같습니다:

  • sudo: 이 명령어는 높은 권한(슈퍼유저 또는 루트 권한)으로 다른 명령을 실행할 수 있게 해줍니다. MySQL 서버에 root 사용자로 접속하는 것은 시스템 또는 데이터베이스의 중요한 설정을 변경할 수 있는 민감한 작업이기 때문에, 높은 권한을 요구할 수 있습니다.
  • mysql: 이 부분은 MySQL 클라이언트 프로그램을 실행하는 명령어입니다. MySQL 클라이언트는 사용자가 MySQL 서버에 명령어를 보내 데이터베이스를 관리할 수 있게 해주는 터미널 기반의 인터페이스입니다.
  • -u root: 이 옵션은 MySQL 서버에 로그인할 때 사용할 사용자 이름을 지정합니다. -u는 “user”의 약자이며, root는 MySQL에서 가장 높은 권한을 가진 사용자 계정입니다.

이 명령어를 실행하면, 시스템은 사용자를 MySQL 서버의 root 계정으로 로그인하게 해줍니다. 이를 통해 사용자는 데이터베이스 생성, 사용자 권한 변경, 데이터베이스 설정 변경 등 MySQL 서버 관리와 관련된 거의 모든 작업을 수행할 수 있게 됩니다.

보안상의 이유로, root 계정으로 MySQL에 접속할 때 비밀번호 입력을 요구할 수 있습니다. MySQL 5.7 이상에서는 초기 설치 시 root 사용자의 인증 방식이 auth_socket 또는 비슷한 메커니즘으로 설정될 수 있어, sudo를 사용하여 로그인하는 경우 비밀번호 없이 접속이 가능합니다. 하지만 이는 설정에 따라 다를 수 있으며, 일부 환경에서는 root 계정의 비밀번호를 설정하고 사용해야 할 수도 있습니다.

BashCopy
sudo mysql -u root
Bash

ALTER USER 'root'@'localhost' IDENTIFIED BY '비밀번호'; 명령어는 MySQL에서 root 사용자의 비밀번호를 변경하는 데 사용됩니다. 이 명령어의 구조를 분석하면 다음과 같습니다:

  • ALTER USER: 이 명령은 MySQL에서 사용자 계정의 속성을 변경하는 데 사용됩니다. 여기서는 특히 사용자의 비밀번호를 변경하는 작업에 적용됩니다.
  • ‘root’@’localhost’: 이 부분은 변경하려는 사용자 계정을 지정합니다. 'root'@'localhost'localhost에서 연결하는 root 사용자를 의미합니다. MySQL에서는 사용자 이름과 그 사용자가 연결되는 호스트를 조합하여 계정을 식별합니다. 따라서, 같은 사용자 이름이라도 다른 호스트에서 연결하는 경우 다른 계정으로 취급될 수 있습니다.
  • IDENTIFIED BY ‘비밀번호’: 이 구문은 해당 사용자 계정의 새 비밀번호를 설정합니다. '비밀번호' 자리에는 사용자가 원하는 실제 비밀번호를 입력합니다. 비밀번호는 안전성을 고려하여 충분히 복잡하게 설정하는 것이 좋습니다.

이 명령어를 실행하기 전에는 MySQL 데이터베이스 서버에 root 사용자로 로그인해 있어야 하며, 이를 위해서는 앞서 언급한 sudo mysql -u root 명령어를 사용할 수 있습니다. 비밀번호 변경 후에는 새 비밀번호를 사용하여 root 사용자로 MySQL에 로그인해야 합니다.

비밀번호를 변경하는 작업은 중요한 보안 관련 작업이므로, 변경 후에는 새 비밀번호를 안전하게 보관하고 필요한 경우만 공유해야 합니다. 또한, 비밀번호를 주기적으로 변경하여 계정 보안을 유지하는 것이 좋습니다.

BashCopy
ALTER USER 'root'@'localhost' IDENTIFIED BY '비밀번호';
Bash

비밀번호 변경 적용

BashCopy
FLUSH PRIVILEGES;
Bash

UPDATE user SET host='%' WHERE user='root' and host='localhost'; 명령어는 MySQL의 user 테이블에서 root 사용자 계정의 host 값을 localhost에서 %로 변경하는 SQL 문입니다. 이 명령어를 통해 변경되는 설정은 다음과 같습니다:

  • UPDATE user: user 테이블의 레코드를 업데이트합니다. MySQL에서 user 테이블은 시스템 데이터베이스인 mysql 데이터베이스에 존재하며, MySQL 서버에 접속할 수 있는 사용자 계정과 그 권한을 저장하고 있습니다.
  • SET host=’%‘: 이 구문은 host 열의 값을 '%'로 변경합니다. 여기서 '%'는 모든 호스트를 의미하는 와일드카드입니다. 즉, 이 변경을 통해 root 사용자 계정은 어떤 호스트에서든 MySQL 서버에 접속할 수 있게 됩니다.
  • WHERE user=’root’ and host=’localhost’: 이 조건은 변경할 레코드를 특정합니다. 여기서는 사용자 이름이 root이고 호스트가 localhost인 계정을 찾아 그 host 값을 변경하라는 의미입니다.

이 명령어를 실행하기 전에 몇 가지 중요한 점을 고려해야 합니다:

  1. 보안 위험: root 계정에 대해 모든 호스트에서의 접속을 허용하는 것은 매우 위험할 수 있습니다. root 계정은 MySQL 서버의 모든 데이터베이스와 테이블에 대한 권한을 가지고 있으므로, 이 계정의 접속을 제한하지 않으면 무단 접근이나 해킹의 위험이 커집니다.
  2. 적절한 사용: 특정 상황에서, 예를 들어 개발 환경에서 여러 호스트에서의 접속이 필요하거나, 원격 관리가 필요한 경우에 한해 이런 설정을 적용할 수 있습니다. 그러나 이 경우에도 VPN 같은 안전한 접속 방법을 사용하거나, 가능하다면 IP 주소를 제한하는 방법으로 접근을 제어하는 것이 좋습니다.
  3. 실행 전 주의사항: 이 명령어는 MySQL의 시스템 데이터베이스에 직접 변경을 가하므로, 실행 전에는 해당 변경이 시스템에 미칠 영향을 충분히 이해하고 있어야 합니다. 또한, 변경 사항을 적용하기 위해서는 MySQL 서버를 재시작하거나, FLUSH PRIVILEGES; 명령어를 실행하여 권한 변경 사항을 적용해야 할 수도 있습니다.

위 명령어는 실제 작업 환경에서는 매우 신중하게 사용해야 하는 명령어입니다. 가능하면, 보다 안전한 방법으로 필요한 접속 제어를 설정하는 것이 좋습니다.

BashCopy
UPDATE user SET host='%' WHERE user='root' and host='localhost';
Bash

우분투(Ubuntu)에서 SQL 파일을 실행하는 방법은 주로 MySQL이나 MariaDB와 같은 데이터베이스 관리 시스템을 사용합니다. SQL 파일에는 데이터베이스 구조를 생성하거나, 데이터를 삽입하거나, 데이터베이스를 업데이트하는 등의 SQL 명령문이 포함될 수 있습니다. 이 파일을 실행하는 가장 일반적인 방법은 명령줄 인터페이스를 사용하는 것입니다. 다음은 MySQL을 예로 들어 SQL 파일을 실행하는 방법을 설명합니다:

  1. 터미널 열기: 우분투에서는 Ctrl+Alt+T를 눌러 터미널을 열 수 있습니다.
  2. MySQL 데이터베이스 서버에 로그인하기: 다음 명령어를 사용하여 MySQL 데이터베이스 서버에 로그인합니다. 여기서 root는 사용자 이름이며, 해당 사용자의 비밀번호가 필요할 수 있습니다. mysql -u root -p
  3. SQL 파일 실행하기: 데이터베이스에 로그인한 후, SQL 파일을 실행하려는 데이터베이스를 선택하고 SQL 파일을 실행합니다. SQL 파일을 실행하는 명령어는 다음과 같습니다. 여기서 database_name은 SQL 파일을 실행하려는 데이터베이스의 이름이며, /path/to/your/file.sql은 실행하려는 SQL 파일의 경로입니다.
BashCopy
USE database_name; 
Bash
BashCopy
SOURCE /path/to/your/file.sql; 
Bash

데이터베이스에 로그인하지 않고 직접 SQL 파일을 실행하는 다른 방법도 있습니다. 터미널에서 다음과 같은 명령어를 사용할 수 있습니다

BashCopy
mysql -u username -p database_name < /path/to/your/file.sql
Bash

이 명령어는 username이라는 사용자로 database_name 데이터베이스에 로그인하여 /path/to/your/file.sql 경로의 SQL 파일을 실행합니다. -p 옵션을 사용하면 명령어 실행 후 비밀번호를 입력하라는 메시지가 나타납니다.

이러한 방법을 통해 우분투에서 SQL 파일을 MySQL 또는 MariaDB 데이터베이스에 적용할 수 있습니다. SQL 파일을 실행하기 전에 해당 파일이 올바른 SQL 문법을 포함하고 있는지, 그리고 실행하려는 데이터베이스에 적합한지 확인하는 것이 중요합니다.

BashCopy
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password';
FLUSH PRIVILEGES;
Bash


게시됨

카테고리

작성자

태그:

댓글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다