PROGRAMMING/DataBase

[mysql/mac]계정생성, 계정권한부여, database생성, table생성

seulda 2021. 5. 26. 12:05
728x90

 

MySQL CLI 에서 MySQL의 계정 생성 방법, 만든 계정에 권한 부여 방법, database 생성 방법, table 생성 방법을 알아봅니다.

아래 글의 실습 환경은 mac환경 입니다. m1 mac을 사용하였으며, m1의 mysql환경 셋팅에 어려움이 있으신 분들은 댓글 남겨주시면 확인 후에 답변 드리겠습니다.  

 

 


1. MySQL 계정 생성 방법

   terminal에서 root 계정으로 mysql을 접속합니다.

mysql -u root -p
(password)

   접속 후 계정 목록을 확인해볼 수 있습니다.

select user, host from mysql.user;

mysql의 계정(user) 목록

   계정을 생성하는 명령어를 입력하여 계정을 만들어봅니다.  아래 사진에 보면, 각각 계정 id와 passwordf를 ('')로 묶지 않아 오류가 발생한 모습입니다.  입력시 주의가 필요합니다. 🥲

create user 'USERID'@'%' identified by 'PASSWORD';

   USERID 에는 만들 계정의 이름을, PASSWORD에는 만들 계정에 대한 비밀번호를 입력합니다.  %는 해당 계정에 대한 접속 권한입니다.  계정의 사용 용도에 맞게  %, localhost 를 입력할 수 있습니다.

   명령어가 성공적으로 수행되었다면, 다시 계정 목록을 조회해서 계정이 생성되었음을 확인해봅니다.

   select user, host from mysql.user;

mysql 계정의 생성 및 확인

 

 


 

2. DATABASE 생성

   아래 명령어로 현재 만들어진 database의 목록을 확인할 수 있습니다.  

show databases;

   NAME 에 만들고자 하는 database의 이름을 입력하여 database를 생성해봅니다.  생성 후 다시 database 목록을 조회하여 성공적으로 만들어졌는지 확인해줍니다.

create database NAME;
show databases;

database 조회 및 생성

 

 


 

3. TABLE 생성 및 데이터 추가

   먼저 만들어준 database에 접속해줍니다.  NAME 의 위치에는 만들어준 database의 이름을 씁니다.

use NAME;

   table을 생성할 때에는 table의 이름, 각 column(열)의 이름/데이터타입/크기, 테이블의 기본키 정도 가 기본적으로 필요하고, not null, default 등의 옵션을 추가적으로 사용할 수 있습니다.  만들고자 하는 table의 이름을 TABLENAME 에, 컬럼과 그  속성을 column1 type(size) 에 맞게 명령어를 입력해줍니다.

create table TABLENAME (
    column1 type(size),
    column2 type(size),
    column3 type(size),
    primary key(column1)
    );

   table 생성 후 아래 명령어를 입력하여 각각 table의 목록, table의 구조를 확인할 수 있습니다.

show tables;
desc TABLENAME;

table의 생성 및 확인(1)
table의 생성 및 확인(2)

 

   insert문을 사용하여 table에 대한 데이터 쿼리를 추가할 수 있습니다.

insert into TABLENAME values ('column1_value', 'column2_value', 'column3_value');

   TABLENAME 에는 데이터를 추가하고자 하는 table의 이름을, 괄호 안의 column_value 에는 해당 table의 컬럼 순서와 동일하게 매치시켜서 추가하고자 하는 값(value)을 넣어 입력합니다.  입력 후에는 table의 조회를 통해 table의 데이터 목록을 조회할 수 있습니다.

select * from TABLENAME;

table에 데이터 추가

 

 


 

4. MySQL 계정 권한 부여하기

   1단계 에서 만든 계정에서 3, 4단계 에서 만든 database와 table을 사용하려면 권한을 부여해주어야합니다.

mysql -u root -p
(password)

   먼저 root 계정으로 mysql에 접속해줍니다. 

grant all on DATABASE_NAME.TABLE_NAME to 'USERID'@'% or localhost';

   grant는 권한을 부여하는 명령어입니다.  grant 뒤에는 주고자 하는 권한을 입력합니다.  select, update 등 여러 권한을 선택하여 입력하면 입력한 명령어에 대한 권한만을 갖게되어 그 명령어들만 사용 가능합니다.  모든 명령어에 대한 권한을 주고자 한다면 all 을 입력해줍니다.

   DATABASE_NAME.TABLE_NAME 에서 DATABASE_NAME 에는 만든 계정에서 사용하려는 database의 이름을 입력해줍니다.  TABLE_NAME 에는 만든 계정에서 사용하려는 table의 이름을 입력해줍니다.  저는 database 전체를 해당 계정에서 사용할 것이기 때문에 TABLE_NAME 의 위치에 * 을 입력하여 전체 테이블에 권한을 줄 것을 알려줍니다.

   'USERID' 에는 권한을 부여하고자 하는 계정의 이름을, '% or localhost' 에는 해당 계정을 생성할 당시에 입력한 localhost를 입력해줍니다.  생성 당시에 %를 입력했다면 'USERID'@'%' 를, localhost를 입력했다면 'USERID'@'localhost' 를, 이외의 내용을 입력했다면 그에 맞게 작성하면 됩니다.

flush privileges;

   환경설정을 변경했기 때문에 위 명령어를 입력하여 변경된 부분이 mysql에 적용될 수 있도록 합니다.

mysql 계정 권한 부여

   만약 위의 명령어를 실행 한 다음 mysql을 종료 후 재접속할 때 로그인이 안된다면mysql_secure_installation 부분을 재설정해주면 됩니다.  >>   Access denied for user 'USER'@'localhost' (using password: YES) 

   이후 권한이 잘 부여되었는지 확인하기 위하여 해당 계정으로 접속하여 데이터베이스와 테이블을 조회해봅니다.

mysql -u USERID -p
(password)
show databases;
use DATABASE_NAME;
show tables;
desc TABLE_NAME;

   USERID 에는 계정의 이름을,  (password) 에는 계정의 비밀번호를,  DATABASE_NAME 에는 database의 이름을,  TABLE_NAME 에는 table의 이름을 각각 입력해서 확인할 수 있습니다.

권한이 부여되었는지를 확인하기 위해 해당 계정에서 database, table 조회 (1)
권한이 부여되었는지를 확인하기 위해 해당 계정에서 database, table 조회 (2)

 

   잘 조회됨을 확인하였으니 이제는 열심히 공부, 실습하시면 됩니다. 😌  열공!

 

 

 

728x90