728x90
1.MySQL 이해 밎 실습 과정
들어가기전 다시한번 복습해보면
- MySQL은 세계에서 가장 많이 사용하고 있는 오픈 소스 관계형 데이터 베이스 관리 시스템
- MySQL은 오라클사가 소유하며, 불확실한 라이선스 정책으로 인해, 동일 소스를 기반으로 MariaDB(마리아DB)
가 파생되었다.(MySQL과 거의 유사 MariaDB가 오픈소스 라이센스를 따르고 있다고 보면 된다.)
MySQL 설치 - 실습1
sudo apt-get update
sudo apt-get install mysql-server
- 설치 중간 비밀번호 설정시 주의!!
- 만약 vi 명령이 없다면 다음과 같이 vi 설치 및 사용법 숙지
sudo apt-get install vim
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
그다음이 중요합니다.
- 다음 설정을 [mysqld] 부분에 추가
# 1. mysql 원격 접속 허용
- bind-address = 0.0.0.0 으로 변경
# 2. mysql 한글 설정 추가
- collation-server = utf8_unicode_ci
- character-set-server = utf8
- skip-character-set-client-handshake
# 3. sudo service mysql start
- mysql 서비스 시작
참고
Usage: /etc/init.d/mysql start|stop|restart|status
# 4. 모든 호스트에서 mysql 접속 허용
# sudo mysql -u root -p 입력후 비밀번호 입력
mysql 접속후
mysql > use mysql;
# GRANT 오류 발생시 권한 줘야함 : CREATE USER 'root'@'%'IDENTIFIED BY'root';
mysql > GRANT ALL PRIVILEGES ON *.* to 'root'@'%' IDENTIFIED BY 'korea123';
mysql > flush privileges;
mysql > exit
# sudo service mysql restart
/etc/mysql/mysql.conf.d/mysqld.cnf 파일 [mysqld] 설정 예
[mysqld]
#
# * Basic Settings
#
user = mysql
# pid-file = /var/run/mysqld/mysqld.pid
# socket = /var/run/mysqld/mysqld.sock
# port = 3306
# datadir = /var/lib/mysql
# * SQL Korean Patch
lc-messages-dir = /usr/share/mysql
skip-external-locking
collation-server = utf8_unicode_ci
character-set-server = utf8
skip-character-set-client-handshake
# If MySQL is running as a replication slave, this should be
# changed. Ref https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.>
# tmpdir = /tmp
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 0.0.0.0
mysqlx-bind-address = 127.0.0.1
use mysql;
-> use 데이터 베이스명; 으로 mysql 데이터베이스는 mysql 설정을 저장하고 있는 데이터베이스다.
해당 데이터베이스에서 작업한다는 뜻
mysql 접속 허용 관련 설정
1) 로컬에서만 허용
mysql> GRANT ALL PRIVILEGES ON DATABASE.TABLE to 'root'@localhost identified by "korea123";
2) 특정 호스트에만 적용
mysql> GRANT ALL PRIVILEGES ON DATABASE.TABLE to 'root'@www.blim.co.kr identified by "korea123";
3) 모든 호스트에서 접속 혀용
mysql > GRANT ALL PRIVILEGES ON DATABASE.TABLE to 'root'@'%' identified by "korea123";
옵션 상세
(1) ALL - 모든 권한 / SELECT, UPDATE - 조회, 수정 권한 등으로 권한 제한 가능
예) GRANT INSERT, UPDATE, SELECt ON *.* TO 'username'@'localhost' IDENTIFIED BY '비밀번호';
2) database.table - 특정 데이터베이스에 특정 테이블만 권한을 줄 수 있음 / *.* - 모든 데이터베이스에
모든 테이블 권한을 가짐
3) root - 계정명
4) korea123 - 계정 비밀 번호
참고3: flush privileges
- user, db 같은 grant table을 INSERT, UPDATE 등을 써서 직접 데이터 입력/수정할 경우
grant tables를 다시 읽어야 권한 설정이 적용됨
- 서버를 재가동하지 않고, grant table을 새로 읽으라는 명령이 flush privileges 이지만, INSERT, UPDATE
가 아닌 GRANT 명령을 사용했을 경우 명령 생략 가능 (허나 확실하게 하려고 일반적으로 사용)
MySQL 설치 - 실습2
- mysql 서버에 접속해 SQL 명령어를 통해, mysql 데이터베이스 조회 및 조작을 할 수 있는 클라이언트 소프트웨어
- 프로그래머들은 mysql workbench를 사용하기 보다 직접 CLI(Commend line interface)를 사용하는 경우가 많음
- workbench 사용법 및 CLI 사용법 둘다 익혀둘 것
- 다운로드 및 설치
workbench 사이트에서 해당 운영체제에 맞는 workbench 다운
설치 방법 및 서버 참고
MySQL 설치 - 실습3 - 데이터 베이스, 테이블 목록 보기
# mysql -u root -p
# show databases;
# use mysql;
# show tables;
# use information_schema;
# show tables;
# exit
참고 자료
'백엔드 > MySQL' 카테고리의 다른 글
[MySQL] RDBMS(Relational Database Management System) 이해 (0) | 2022.04.04 |
---|---|
[MySQL] DATABASE2 MySQL - 1. mySQL (0) | 2022.04.04 |
[MySQL] SQL과 NoSQL의 차이 (0) | 2022.02.03 |