MySQL

Paikwiki
Paikwiki (토론 | 기여)님의 2020년 6월 10일 (수) 04:57 판 (MySQL 설치 과정 작성)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
이동: 둘러보기, 검색

MySQL은 오라클에서 제공하는 데이터베이스로, 가장 널리 쓰이는 데이터베이스 중 하나이다.

설치[ ]

root@paikwiki:~# sudo apt install mysql-server

MySQL 서버가 잘 설치됐는지 확인한다.

root@paikwiki:~# mysql -V
mysql  Ver 14.14 Distrib 5.7.30, for Linux (x86_64) using  EditLine wrapper
root@paikwiki:~#

다음으로 root 계정의 패스워드를 설정한다.

root@paikwiki:~# sudo mysql_secure_installation

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No: y

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1
Please set the password for root here.

New password:

Re-enter new password:

Estimated strength of the password: 50
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done!
root@paikwiki:~#

기본 명령어[ ]

시작/종료[ ]

  • 종료
 $ mysqladmin -uroot -p shutdown
  • 시작
 $ mysqld_safe &

사용자 관련[ ]

  • 사용자 관련, 작업을 위해서는 먼저 아래의 명령어로 mysql 데이터베이스를 선택해줘야 한다.
 $ mysql -u아이디 -p
 mysql> use mysql;
  • 사용자 조회
 mysql> USE mysql;
 mysql> SELECT User, Host from user;
  • 로컬호스트에 사용자 추가
mysql> create user 'userId'@'localhost' identified by 'userpassword';
  • 사용자에게 모든 권한 주기
mysql> grant all privileges on *.* to 'userid'@'localhost';
  • 사용자에게 특정 데이터베이스 관리 권한 주기
mysql> grant all privileges on dbname.* to 'userid'@'localhost';
  • 사용자 삭제
mysql> delete from user where user = 'userid';
  • 사용자 비밀번호 변경
 mysql> update user set password=PASSWORD('변경할비밀번호') where user = '사용자계정';
 mysql> flush privileges;

접속[ ]

  • 설치 경로로 이동 후 접속하기
$ cd /usr/local/mysql/bin
$ ./mysql -u root -p

비밀번호 입력 후 접속 완료

데이터베이스 생성, 사용 및 삭제[ ]

mysql> CREATE DATABASE dbName; // 데이터베이스 생성
mysql> USE dbName;  // 데이터베이스 사용. 테이블을 생성하는 등 데이터베이스를 쓰기 위해선 반드시 해야 한다.
mysql> DROP DATABASE database;  // 데이터베이스 삭제

테이블 생성, 조회 및 삭제[ ]

mysql> CREATE TABLE tableName ( fieldName fieldProperty, fieldName fieldProperty, fieldName fieldProperty... ) ;  // 테이블 생성
  • 테이블 필드 속성
속성 의미
NOT NULL 반드시 입력
AUTO_INCREMENT 자동으로 숫자 증가
PRIMARY KEY 기본키 지정
mysql> DESCRIBE tableName; // 테이블 필드 정보 조회
mysql> DROP TABLE table;  // 테이블 삭제
mysql> ALTER TABLE 테이블 이름 convert to charset utf8; //테이블 인코딩 utf8로 변경

데이터 저장[ ]

mysql> INSERT INTO table (field, field) VALUE (data, data); // 데이터 저장

데이터 선택[ ]

mysql> SELECT field, field FROM table;
mysql> SELECT field, field FROM table WHERE condition; // 특정 조건을 이용한 데이터 선택
mysql> SELECT field, field FROM table WHERE (condition) OR(또는 AND) (condition); // 두 가지 이상의 조건으로 선택
mysql> SELECT field, field FROM table WHERE field LIKE 'condition' // 특정 부분이 일치하는 데이터 선택
// 010으로 시작하는 데이터를 모두 선택할 경우 '011%' 입력 '
// 010으로 시작하는 다섯 자리 숫자일 경우 '010__' 입력
mysql> SELECT * FROM table LIMIT n; // 상위 n 개의 데이터 조회
mysql> SELECT * FROM tabel LIMIT n, n' // n부터 n'개의 데이터 조회

데이터 선택 명령어를 복합적으로 사용할 때는 다음의 순서를 반드시 지켜야 한다.

SELECT FROM WHERE ORDER BY LIMIT

데이터 정렬[ ]

mysql> SELECT field, field, field FROM table WHERE ORDER BY field;
// 정렬 순서를 바꾸려면 명렁어 뒤에 오름차순 ASC, 내림차순 DESC


데이터 수정[ ]

mysql> UPDATE table SET field=value WHERE field2 = value2;  // field2의 값이 value2인 데이터의 field 값을 value로 수정

데이터 삭제[ ]

mysql> DELETE FROM table WHERE field = value;  // field의 값이 value인 데이터 삭제
  • 데이터를 수정하거나 삭제할 때, WHERE 명령어를 쓰지 않으면 전체가 삭제될 수 있다.

자료형[ ]

자료형 의미
INT 정수
DOUBLE 실수(8바이트, 유효숫자 17자리)
FLOAT 실수(4바이트, 유효숫자 10자리)
VARCHAR 문자열

연산자[ ]

관계 연산자[ ]

연산자 의미
= 두 값이 같다.
!=, <> 두 값이 다르다.
< 우변이 좌변보다 크다.
> 좌변이 우변보다 크다.
<= 우변이 좌변보다 크거나 같다.
>= 좌변이 우변보다 크거나 같다.

논리 연산자[ ]

연산자 의미
OR 논리합 연산자
AND 논리곱 연산자

백업 및 복구[ ]

덤프백업파일 복구하기[ ]

$ mysqldump -u user -p db_name < 파일명

OSX에서 MySQL 인코딩 설정(utf8)[ ]

1. /usr/local/mysql*/support-files/my-default.cnf 파일을 /etc/로 복사 후 my.cnf로 파일 이름 변경

[support-files]$ cp my-default.cof /etc/
[support-files]$ cd /etc/
[etc]$ my my-default.cnf my.cnf

2. 설정에 아래 내용 포함

[client]
default-character-set = utf8
[mysqld]
character-set-server = utf8
collation-server = utf8_general_ci
init_connect = set collation_connection = utf8_general_ci
init_connect = set names utf8
character-set-client-handshake=TRUE
skip-character-set-client-handshake

3. 저장 후 my.cnf의 퍼미션(RW-R--R--) 확인

$ ls -al

4. 아닐 경우 퍼미션 수정

$ chmod 644 my.cnf

5. mysql 접속 후 인코딩 확인

mysql> show variables like 'c%';

마지막 편집: 2020년 6월 10일 (수) 04:57