MAC 초보자로서 MySQL을 brew
로 설치하는 것을 처음해보았다.
윈도우는 응용프로그램 설치 & 서버 ON/OFF 관리 등 신경쓸 것이 많았는데,
아직 brew
사용을 덜해서인지 아니면 MAC OS가 편해서인지는 모르겠지만 매우 간단함을 느끼고 있다.
> brew install mysql
설치 이후에 버전 확인이 올바르게 되면 잘 된 것!
> mysql -V
이후에 MySQL의 server를 사용 여부를 아래의 명령어로 컨트롤 할 수 있다.
> mysql.server start
> mysql.server stop
윈도우에서 설치하는 것처럼 MySQL 설치하는 사이트로 가서 다운받으면 된다.
다른 기본 Application을 설치하는 것과 다른 것은 없었다.
처음 설치를 하고 나면, 보안 관련 설정을 해주는게 좋지 않을까~?
터미널에서 아래의 명령어를 이용해 root 계정의 비밀번호를 설정해주었다.
> mysql_secure_installation
비밀번호의 강도를 높게할 것인지 낮게할 것인지?
→ 간단한 DB 개발이 목적이라 No
Annoymous 유저를 삭제할 것인지?
→ MySQL에서 유저를 생성하고 DB마다 유저 관리를 할 생각이라 Yes
root의 원격 접속을 허용할 것인지?
→ 다른 컴퓨터에서 접근할 일이 있을까 Yes를 했는데... (없다면 No를 하는게 좋아보인다.)
test 데이터 베이스를 삭제할 것인지?
→ Yes를 통해 사용할 일 없는 테스트 데이터를 삭제!
PRIVILEGES TABLE을 재시작 할 것인지?
→ Annoymous 유저, test 데이터 베이스 삭제를 진행했기 때문에 Yes!
위에서 MySQL 서버를 On 하는 명령어를 입력한 뒤,
터미널에서 아래와 같은 명령어로 MySQL 접속을 하면 관련 조작을 할 수 있다.
> mysql -u [유저ID] -p [?DB이름]
처음엔 DB와 user가 없는 상태임으로 root 계정으로 접속할 수 있도록 하자.
필자는 Express를 통해 간단한 테스트 DB 조작을 개발할 것이다.
토이 프로젝트마다 유저를 생성, 각자의 권한에 맞는 DB에만 접근할 수 있도록 할 예정이다.
그래서 유저와 데이터베이스를 생성하고 Express에서 잘 접근할 수 있는지 테스팅을 하였다.
해당 작업들은 mysql 데이터 베이스에 접근해서 User 값을 변경해야 한다.
// mysql 데이터 베이스에 접근
mysql> USE mysql;
// user 테이블의 값을 가져와 본다.
mysql> SELECT host, user FROM user;
// 유저를 생성
mysql> CREATE USER '[유저ID]' IDENTIFIED BY '[비밀번호]';
// 접근하는 곳을 제한시킨 유저 생성
mysql> CREATE USER '[유저ID]'@'[host]' IDENTIFIED BY '[비밀번호]';
mysql> DROP USER '[유저ID]'@'[host]'
mysql> SHOW databases;
mysql> CREATE DATABASE [DB이름]
// 한글 사용할 수 있는 UTF8로 설정할 수 있음
mysql> CREATE DATABASE [DB이름] default CHARACTER SET UTF8;
mysql> USE [DB이름]
mysql> GRANT ALL PRIVILEGES ON [database].* TO '[username]'@'[host]';
// 일종의 Reload
mysql> FLUSH PRIVILEGES;
Privileges는 유저에 관한 권한이다.
유저의 권한을 변경해도 현재 MySQL 서버에서 제공하고 있는 DBMS에서는 적용되지 않는다.
DBMS에 적용되기 위해 권한에 대한 새로운 로딩을 제공하는 명령어가 FLUSH PRIVILEGES
이다.
when we grant some privileges for a user, running the command flush privileges will reloads the grant tables in the mysql database enabling the changes to take effect without reloading or restarting mysql service.
이제부턴 DB SQL 명령어 관련인데... 간단하게 테이블 생성까지 적어보았다.
CREATE TABLE [테이블 이름] (
id INT PRIMARY KEY AUTO_INCREMENT,
[컬럼명] [데이터 형] [옵션들...],
// ...
);