mysql 사용법 및 명령어 총정리 하려 합니다. 실무적인 내용을 직접 정리함으로 앞으로 꾸준히 업데이트 하겠습니다. 제가 mysql을 좋아하는 이유는 많은 사람들이 사용함으로 구글링에 최적화 되어 있고, 아주 오래전부터 지금까지도 꾸준히 발전하고 업그레이드 되고 있기에 매우 좋습니다. 또 우분투 리눅스에서도 쉽게 설치 후 사용이 가능합니다. 장점이 많은 mysql 사용법, 한번 같이 공부해 볼까요?
1. mysql – DB
MySQL은 가장 인기있는 데이터베이스 관리 시스템 중 하나입니다. MySQL은 오픈 소스 소프트웨어로, 다른 데이터베이스 관리 시스템과 비교했을 때 높은 성능과 안정성을 제공합니다. 이러한 이유로 MySQL은 다양한 웹 응용 프로그램에서 사용되고 있습니다.
– mysql 장점
MySQL은 많은 이점을 제공합니다. 그중에서도 가장 눈에 띄는 것은 무료로 사용할 수 있다는 것입니다. 또한, MySQL은 사용하기 쉽고, 확장성이 뛰어나다는 것도 장점 중 하나입니다. MySQL은 많은 사용자와 개발자들이 사용하고 있으므로, 다양한 지원 및 문서를 찾을 수 있습니다.
– mysql 단점
MySQL은 높은 안정성과 성능을 제공하지만, 몇 가지 단점도 있습니다. MySQL은 대규모 데이터베이스에는 적합하지 않을 수 있습니다. 사용자가 많아지면 MySQL의 속도가 느려질 수 있습니다. MySQL은 또한 다른 데이터베이스 관리 시스템에 비해 보안이 취약할 수 있습니다.
2. mysql 계정 생성 및 권한 설정
mysql 접속을 위해선 첫번째로 mysql 서버에서 받은 계정이 필요합니다. 정확히 말하면 우분투 리눅스 서버에서 mysql 서버를 세팅하고, 그 후 root로 접속하여 사용자계정을 추가하여 새로운 계정을 만드는 것입니다. 이를 위해 윈도우에서는 putty라는 ssh 접속 프로그램이 필요 합니다. 처음 들으시는 분은 어렵게 느낄 수 있지만, 사실상 putty는 원격접속 프로그램이라고 보시면 됩니다. 대신, 윈도우 처럼 화면을 보는 것이 아닌, 윈도우 command 창과 같은 화면으로 서버에 접속을 한다고 생각하면 됩니다.
putty 프로그램 설치 및 세팅 방법은 다른 글에서 소개 하고 링크 걸어두겠습니다. 이제 putty를 이용해서 ssh 서버에 접속해서 mysql서버로 커넥팅 해보겠습니다.
– 우분투 리눅스 서버 접속
뿌띠 (putty)를 실행하고 HostName에 서버 도메인 또는 ip 주소를 작성해 줍니다. ssh의 기본 포트는 22로 약속되어 있습니다. open을 눌러서 서버에 접속해 보겠습니다.
putty 프로그램을 통해서 ssh화면을 볼 수 있습니다.
로그인 하겠습니다.
sudo -i
최고 관리자 권한을 받기 위해 sudo -i 명령어를 사용해 줍니다. 굳이 안해도 크게 문제는 없으나, 개인적으로 명령어를 작성할때 마다 sudo를 붙이는건 너무 번거롭기에 처음부터 최고 관리자 권한을 받습니다. 개인 성향에 맞게 하면 됩니다.
– mysql 서버 접속
자 이제 mysql 관리자 계정인 root로 접속 후 새로운 계정 아이디 생성 및 데이터베이스(database)를 생성해 보겠습니다. 명령어는 -u는 userid, -p는 password 입니다. 현재 root를 통해서 mysql에 접속을 하지만, 실제 계정운영을 위해서는 새로운 사용자를 만들어 주어야 합니다. 혼자 쓰시는 경우 root로 쓰셔도 상관없지만, 보안적으로 위험 할 수 있으니, 신규 계정에 관리자 권한을 주어서 사용하시는 것이 좋습니다. 전 root는 아이디 생성용으로만 사용합니다.
자 그럼 mysql -u root -p 를 작성해서 mysql 서버에 접속해 줍니다.
mysql -u root -p (enter)
mysql을 접속하면 “welcome to the MySQL monitor” 문구가 뜨면서 mysql> 명령어 탭을 볼 수 있 됩니다. 여기서 mysql 명령어 및 내용을 작성해서 여러가지 액션을 취할 수 있습니다.
– mysql 사용자 추가, DB 생성, 권한 설정
MySQL 사용자를 추가하기 위해서는 다음과 같은 명령어를 사용합니다. create user ‘아이디’@’호스트명’ identified by ‘패스워드’; 이렇게 sql문을 작성해주는데요, 여기서 따옴표를 생략하지 마시고, 꼭 예시와 같이 작성해주세요, 그리고 아이디에는 dot(.)이 들어가도 사용에 지장이 없음으로 저는 사이트 주소를 아이디로 지정하였습니다.
create user ‘아이디’@’호스트명’ identified by ‘패스워드’;
여기서 호스트명 부분이 중요한데요, 사용자가 접속할 수 있는 호스트명으로 지정합니다. 예를 들어, 로컬에서만 접속 가능한 사용자를 추가하고 싶다면 호스트명을 ‘localhost’로 지정하면 됩니다. ‘%’를 사용하면 모든 호스트 접속이 가능합니다. 저의 경우는 여러 컴퓨터를 사용해 putty 접속하기 원하기 때문에 늘 ‘%’로 설정해서 사용자를 생성 합니다. 잠시 ‘localhost’와 ‘%’애 대해 설명을 하겠습니다.
localhost
localhost는 MySQL이 설치된 서버에서만 접속이 가능한 호스트를 의미합니다. 즉, 동일한 컴퓨터에서 실행 중인 MySQL 서버에만 접속이 가능합니다.
%
%는 MySQL 서버에 접속하는 모든 호스트를 의미합니다. 이 설정을 사용하면 어디서든 MySQL 서버에 접속할 수 있습니다.
localhost와 %의 장단점
localhost와 %는 각각 장단점이 있습니다. localhost는 보안 측면에서 매우 안전한 설정이지만, 서버가 설치된 컴퓨터에서만 접속이 가능하기 때문에 외부에서 접속이 필요한 경우에는 이용할 수 없습니다. 반면, %는 외부에서 어디서든 접속이 가능하지만, 보안 측면에서 매우 취약한 설정입니다.
database 개념
데이터베이스는 데이터를 저장, 관리, 검색할 수 있는 구조를 제공하는 시스템입니다. 데이터베이스는 여러 테이블로 구성되며, 각 테이블은 여러 열(Column)과 행(Row)으로 구성됩니다. 열은 데이터의 속성을 나타내며, 행은 실제 데이터를 나타냅니다. MySQL 데이터베이스는 SQL(Structured Query Language)을 사용하여 데이터를 검색, 추가, 수정, 삭제할 수 있습니다.
이제 새로운 계정이 컨트롤 할 databae를 1개 생성해 보겠습니다. 저의 경우 db이름에는 늘 id가 들어가도록 설정 후 _db를 같이 작성합니다. 차후 관리가 편리하기 때문입니다.
create database ‘신규db이름’;
create databases mysql 문을 작성해 줍니다. 뒤에 꼭 ‘;’ 세미콜론을 붙여줘야 실행이 됩니다.
database 사용자 권한 설정
사용자에게 생성한 데이터베이스 권한을 지정해줘야 합니다. 지금 새로 만든 신규 계정이 컨트롤 할 Database라고 보시면 됩니다.
grant all privileges on 데이터베이스이름.*to ‘사용자id’@’%’;
grant all privileges on 명령어는 사용자에게 모든 권한을 부여합니다. 이 명령어를 사용하면, 사용자가 모든 데이터베이스, 테이블, 및 컬럼을 수정, 삭제, 생성, 조회 등의 작업을 수행할 수 있게 됩니다. 이러한 권한을 부여하기 전에, 사용자가 어떤 작업을 수행할 수 있는지 정확히 파악하고, 권한을 최소한의 범위로 설정하는 것이 좋습니다.
grant all privileges on 사용 시 주의 사항
grant all privileges on 명령어를 사용할 때는, 사용자가 접근할 수 있는 범위를 신중하게 설정해야 합니다. 모든 권한을 부여하는 것은 보안에 매우 취약하며, 사용자가 불필요한 데이터에 접근하는 것을 막을 수 없습니다. 따라서, 사용자가 필요한 권한만 부여하는 것이 좋습니다.
또한, grant all privileges on 명령어를 사용한 후에는, 해당 사용자에게 권한을 부여한 것을 확인하고, 불필요한 권한이 없는지 정기적으로 검토해야 합니다. 만약 보안 상의 이유로 권한을 취소해야 하는 경우, 다음 명령어를 사용하여 해당 사용자의 권한을 취소할 수 있습니다.
REVOKE ALL PRIVILEGES ON *.* FROM ‘사용자명’@’호스트명’;
– 설정 마무리 flush privileges
mysql 세팅 완료 후 꼭 flush 명령문을 작성해야 설정이 반영 됩니다.
flush privileges;
exit
4. 실제 활용 – 워드프레스 생성시 db정보 입력
이제 생성한 mysql 계정의 database를 사용해 보겠습니다. 데이터 베이스 이름, 사용자명, 이름은 생성한 내용을 작성하시면 되고요, 여기서 데이터베이스 호스트는 localhost로 지정해 줍니다. 웹호스팅 개념으로 생각하시면 되는데요, 내가 사용하는 하나의 웹하드 정도로 여기시면 됩니다. 1개의 웹하드 사용시 db에 접속하는 방식임으로 localhost 지정이면 됩니다.
테이블 접두어는 database 안에 필요한 table들이 생성될때 앞에 붙여지는 글자 입니다. 예를 들어 자유게시판(freeboard)를 사용하기위 free_board 테이블을 생성할 수 있습니다. 이때 free_board 앞에 wp_free_board로 설정해주는 겁니다. wp_가 붙은 테이블은 전부 워드프레스에서 사용한 db table임을 쉽게 알 수 있습니다.
database설정에 문제가 없으면 아래와 같이 설치 실행이 뜹니다.
지금까지 제대로 따라오셨으면 쉽게 볼 수 있는 화면이지만, 조금이라도 틀리거나 헷갈리면 다시 돌아가서 mysql을 세팅해야 하는 번거로움이 있습니다. 서두르지 마시고 천천히 이해하면서 공부하시기 바랍니다.
5. 결론 및 의견
mysql 사용법 및 명령어를 알아 보았는데요, 결국 활용을 어떻게 하냐에 따라 이 database를 잘 사용할 수 있습니다. 명령어는 꾸준히 업데이트 하며 실무적으로 작성해 나아가겠습니다. 도움이 되셨으면 좋겠고요, 감사합니다.
[관련글]