개발바닥 아방수

MySQL 권한 제어, 사용자 생성, 패스워드 변경 본문

데이터베이스/MySQL

MySQL 권한 제어, 사용자 생성, 패스워드 변경

앙큼아기 2022. 6. 29. 09:34

지난 Centos 설치하면서 MariaDB 접속

▶ MySQL ⇒ MariaDB

▶ yum -y install mariadb-server

▶ mariadb secure installation 해서 root의 패스워드 rootoor를 지정하고, 기타 설정을 해주고

▶ mysql -u root -prootoor OR mysql -u root -p(엔터 후) rootoor 입력

(참고, mysql -u root -p (한칸띄면) DB_name이 들어온다.)


✅ 터미널 접속

▶ [centos@CentOS7 ~]$ su

  • 우선 리눅스에서는 아래와 같은 두 주요 개념이 있습니다.

리눅스는 Multi-User System OS / 다중 유저 접속 시스템이다. 리눅스에서는 각 유저들에 대한 권한의 중요성이 높다.

  • 리눅스에는 다중 유저 접속 시스템으로써 동시에 여러 사용자들이 접속할 수 있습니다. 그리고 이는 어떤 서비스를 위한 서버의 기능으로 작동하기 때문에 각각의 유저들에 대한 권한(읽기, 쓰기, 실행 등)의 범위 관리가 매우 중요합니다.
  • 리눅스에서 최고의 권한을 가지고 있는 계정은 슈퍼 유저 / Root 입니다.
  • Root 계정은 리눅스 상의 모든 명령을 실행할 수 있고 이 권한이 있을 때만 실행이 가능한 프로그램들도 있습니다.
  • 때문에 리눅스 유저들은 Root의 권한을 빌려야 하는 순간들이 필요하기에 이를 가능하게 하는게 su 명령어입니다

(참고출처) su / su - / sudo 의 비교 및 차이점 https://youngswooyoung.tistory.com/57

 

 

❇️ ’#’은 관리자, ‘$’는 유저입니다.

▶ Password: ▶ [root@CentOS7 centos]# mysql -V mysql Ver 15.1 Distrib 5.5.68-MariaDB, for Linux (x86_64) using readline 5.1

▶ [root@CentOS7 centos]# service mariadb start Redirecting to /bin/systemctl start mariadb.service

▶ [root@CentOS7 centos]# systemctl start mariadb

 

 

❇️ systemctl과 service 명령어 차이점

  • 결론은CentOS 7이후 버전은 systemctl~ 구문으로 제어한다.Redirecting to /bin/systemctl start xxxx.service 라며(참고출처) https://heni.tistory.com/22
  • 어차피 systemctl로 redirecting되어 찾는다.
  • 7버전에서 service~ 구문을 수행하면
  • CentOS 6이전 버전은 service~구문으로,
  • systemctl 옵션 서비스명.service~ (.service는 생략가능)

 

❇️ Centos 7 systemctl 서비스 명령어

▶ [root@CentOS7 centos]# systemctl enable mariadb

▶ [root@CentOS7 centos]# mysql -u root -p ▶ Enter password:

▶ [root@CentOS7 centos]# mysqladmin -h localhost -u root password 'rootoor’

외와 같이 root 사용자의 패스워드를 별도로 설정할 수 있다.

여기서 localhost의 오류가 뜨면 mysql로 들어가서 설정해준다.

 

 

✅ 데이터베이스(스키마) 권한 제어

  • SQL 명령어중 DCL(Data Control Language)이 사용된다.(참고출처) https://www.funyphp.com/archive/mysql/2 ‘CentOS7 mysql 접속, 계정 생성, 권한 설정’
  • *DCL 종류에는 GRANT와 REVOKE가 있다. (둘다 유효하다)

▶ grant all privileges on (모든 데이터베이스).(모든테이블) to ‘root’@’localhost’ indentified by ‘rootoor’;

⇒ 데이터베이스가 있고, 그 아래에 테이블들이 들어있게 된다.

⇒ localhost에 root 사용자를 생성하고 rootoor로 패스워드를 지정해서 모든 데이터베이스와 그 아래의 테이블들에게 모든 작업의 권한을 준다.

▶ grant all privileges on (모든 데이터베이스).(모든테이블) to ‘root’@’%’ indentified by ‘rootoor(password)’;

⇒ 외부에서 들어올 수 있게 하는 것이다. 원격에서 root가 rootoor로 들어올 수 있다.

▶ MariaDB [(none)]> flush privileges; (권한을 갱신한다)

▶ exit(나온다)

 

 

사용자 생성과 패스워드 변경

▶ [root@CentOS7 centos]# mysql -u root -p

▶ 사용자 생성은 create user ‘centos’@’localhost’ identified by ‘centos’; 로컬에서 접속

▶ 여기서 create user ‘centos’@’%’ identified by ‘centos’; 는 원격에서 접속가능이다

▶ 사용자 패스워드 변경은 update user set password=PASSWORD(’centos’) where user=’centos’; 식으로 해준다.

 

 

💻 실습1

▶ mysql -u root -p 입력후 패스워드

d. paul 사용자 생성과 삭제는

▶ mysql> create user 'paul'@''localhost' identified by 'rootoor'; 해서 생성해주고

▶ mysql> **drop user 'paul'@'localhost';**식으로 해서 삭제한다.

e. 사용자 root의 패스워드 변경은

▶ mysql> update user set password=PASSWORD('rootoor') where user='root'; 해준다.

f. root가 로컬로 로그인하는 것을 허용하고, 모든 DB와 Table(.)에 모든 권한을 준다면

▶ mysql> grant all privileges on . to 'root'@'localhost' identified by 'rootoor';

▶mysql> grant all privileges on . to 'root'@'%' identified by 'rootoor'; 해서 로컬과 원격 호스트에서도 root로 들어오게 해준다.

g. 권한을 갱신한다면

▶ mysql> flush privileges; 해주고,

▶ quit; 해서 mysql> 프롬프트를 벗어난다.

 


알아두면 좋은 개념

🔎 SQL

  • SQL(Structured Query Language)은 C, C++, Java, Python처럼 프로그래밍 언어다.
  • SQL은 데이터베이스가 아님!!! 데이터베이스에 들어있는 데이터들을 쿼리(문의)해서 결과를 사용자에게 알려주는 언어다.
  • 프로그래밍이 가능하다(Oracle DB에서는 PL/SQL이라고 한다).

🔎 데이터베이스

  • 데이터가 모여있는 곳 Date Ware House에서 귀중한 정보를 추출하는 것을 데이터 마이닝이라고 한다.
  • 데이터베이스 안에는 테이블들이 있다. 테이블은 행(row)과 열(column)로 이뤄져있다. 행과 열이 만나는 지점에 들어가 있는 데이터를 튜플(tuple)이라고 한다.
  • 데이터베이스를 잘 알아야 BigData로 간다. BigData에서는 데이터가 정형화 되어있지 않은 경우가 많다.
  • schema 스키마가 정의되어있다 = 데이터의 정형화 (Name, Size, Data type) 되어있다.
  • 사용자는 SQL이라는 언어를 통해서 데이터베이스에 있는 자료를 끄집어내고 넣는 작업을 하는 것이다.
  • No Schema 노스키마. SNS 내용을 한 시간동안 모은다고 하자. 타깃을 서울 20대 여성으로 모으면 데이터 정형화가 되어있지 않을 것이다. 단순한 텍스트부터 그림, 사진, 동영상등 여러가지 패턴이 있다. 그렇기에 저장될 공간을 정할 스키마를 정의할 수 없는 것이다. 스키마를 정의하지 않고 저장하는 걸 No Schema 노스미카, No SQL이라고 한다.