MySQL - ynjch97/YNJCH_WIKI GitHub Wiki

1. MySQL 8.0.28 μ„€μΉ˜

  • https://downloads.mysql.com/archives/installer/ > mysql-installer-community-8.0.28.0.msi
  • μ‹€ν–‰ν•˜μ—¬ κΈ°λ³Έ μ„€μ •μœΌλ‘œ MySQL Server, MySQL Workbench μ„€μΉ˜
  • ν™˜κ²½ λ³€μˆ˜ μ„€μ • > μ‹œμŠ€ν…œ λ³€μˆ˜ > Path : C:\Program Files\MySQL\MySQL Server 8.0\bin

1-1. MySQL Server

  • μ•„λž˜ 기재된 λ‚΄μš©λ§Œ μ„€μ • ν›„ Next λ²„νŠΌ 클릭
  • Type and Networking
    • Config Type : Development Computer
    • Connectivity : κΈ°λ³Έ 포트 3306
  • Authentication Method
    • RECOMMENDED μ„€μ •μœΌλ‘œ 체크
  • Accounts and Roles
    • root 계정(μ΅œμƒμœ„ κΆŒν•œ 계정)의 νŒ¨μŠ€μ›Œλ“œ μ„€μ • -> 1111
  • Window Service
    • Window Service Name : MySQL
    • Start the MySQL Server at System Startup ν•­λͺ© 체크 (OS λΆ€νŒ… ν›„ μžλ™μœΌλ‘œ MySQL이 μž¬μ‹œμž‘ν•˜λ„λ‘)
  • MySQL Workbench μ—μ„œ 접속 ν…ŒμŠ€νŠΈ

1-2. cmd μ°½μ—μ„œ 접속

  • 사전에 ν™˜κ²½ λ³€μˆ˜ μ„€μ • ν•„μš”
    • μ‹œμŠ€ν…œ λ³€μˆ˜ > Path : C:\Program Files\MySQL\MySQL Server 8.0\bin
C:\Users\ynjch> mysql -u root --port 3306 -p
Enter password: 

2. MySQL Workbench

2-1. Public key retrieval is not allowed 였λ₯˜

  • Mysql 8.0 버전이라면 μ•„λž˜ μ˜΅μ…˜μ„ 확인해야 함
    • useSSL: DB에 SSL둜 μ—°κ²°
    • allowPublicKeyRetrieval: μ„œλ²„μ—μ„œ RSA κ³΅κ°œν‚€λ₯Ό κ²€μƒ‰ν•˜κ±°λ‚˜ 가져와야 ν•˜λŠ”μ§€
  • URL 에 μ•„λž˜ 섀정을 ν•΄μ£Όμ§€ μ•ŠμœΌλ©΄ μ—λŸ¬κ°€ λ°œμƒ
  • jdbc:mysql://localhost:3306/[DBλͺ…]?useSSL=false&allowPublicKeyRetrieval=true

2-2. MariaDB κ°€ MySQL Workbench μ—μ„œ Export λ˜μ§€ μ•Šμ„ λ•Œ

  • C:\Program Files\MariaDB 10.4\bin\mysqldump.exe μ—λŸ¬ λ°œμƒ
  • MariaDB μ„€μΉ˜ ν›„ C:\Program Files\MariaDB 10.4\bin\mysqldump.exe 파일 확인
  • Workbench > Edit > Preferences > Administration > Path to mysqldump Tool 에 ν•΄λ‹Ή exe 파일 μ„€μ •
  • Export 정상 싀행됨

2-3. MariaDB κ°€ MySQL Workbench μ—μ„œ Import λ˜μ§€ μ•Šμ„ λ•Œ

  • Operation failed with exitcode 1 / ERROR 1049 (42000): Unknown database
  • μŠ€ν‚€λ§ˆ 생성을 ν•΄μ•Ό 함
CREATE DATABASE [μŠ€ν‚€λ§ˆ 이름];

3. 생성

3-1. λ°μ΄ν„°λ² μ΄μŠ€ 생성

mysql> CREATE DATABASE ynjch;
Query OK, 1 row affected (0.00 sec)

3-2. μ‚¬μš©μž 생성

mysql> CREATE USER 'ynjch'@'%' IDENTIFIED BY 'ynjch';
Query OK, 0 rows affected (0.01 sec)
mysql> GRANT ALL PRIVILEGES ON ynjch.* TO 'ynjch'@'%';
Query OK, 0 rows affected (0.01 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

# μ•„λž˜μ™€ 같이 λ‘œκ·ΈμΈν•˜μ—¬ 성곡 μ—¬λΆ€ 확인
C:\Users\YNJCH>mysql -u ynjch -p
Enter password: *****

9. λ¬Έμžμ—΄ 처리

9-1. Text Length

  • MySQL 의 varchar(n) νƒ€μž… : MySQL 4.1 μ΄μ „μ—λŠ” n λ°”μ΄νŠΈλ₯Ό, 4.1 μ΄ν›„μ—λŠ” 문자 수λ₯Ό λ‚˜νƒ€λƒ„
  • varcher(30) : ascii 문자, ν•œκΈ€ 상관 없이 30자 만큼 μž…λ ₯ κ°€λŠ₯

9-1-1. 문자 인코딩 방식

πŸ”Ά euc-kr

  • euc-kr λ˜λŠ” ksc5601
  • ascii μ½”λ“œ + ν•œκΈ€
  • 영문/숫자/κΈ°ν˜ΈλŠ” 1λ°”μ΄νŠΈ, ν•œκΈ€κ³Ό ν•œμžλŠ” 2λ°”μ΄νŠΈ
  • μ›ΉνŽ˜μ΄μ§€ μž‘μ„±μ— μ‚¬μš© κ°€λŠ₯
  • νŠΉμˆ˜ν•œ μ™Έκ΅­μ–΄ λ¬Έμžλ‚˜ 일본식/쀑ꡭ식 ν•œμžλŠ” ν‘œν˜„ λΆˆκ°€

πŸ”Ά unicode

  • λͺ¨λ“  κΈ€μžλ₯Ό 2λ°”μ΄νŠΈλ‘œ ν‘œν˜„
  • 전세계 λͺ¨λ“  κΈ€μžλ“€μ„ ν•œκΊΌλ²ˆμ— ν‘œν˜„ κ°€λŠ₯
  • μ›ΉνŽ˜μ΄μ§€ μž‘μ„±μ— μ‚¬μš© λΆˆκ°€

πŸ”Ά utf-8

  • 영문/숫자/κΈ°ν˜ΈλŠ” 1λ°”μ΄νŠΈ, ν•œκΈ€κ³Ό ν•œμž 등은 3λ°”μ΄νŠΈ
  • 전세계 λͺ¨λ“  κΈ€μžλ“€μ„ ν•œκΊΌλ²ˆμ— ν‘œν˜„ κ°€λŠ₯
  • μ›ΉνŽ˜μ΄μ§€ μž‘μ„±μ— μ‚¬μš© κ°€λŠ₯

9-1-2. 문자 크기 계산

  • charater_length(char_length) : 문자수λ₯Ό κ³„μ‚°ν•˜λŠ” μ—°μ‚°
  • octet_length : λ°”μ΄νŠΈ 수λ₯Ό κ³„μ‚°ν•˜λŠ” μ—°μ‚°
  • 인코딩 방식을 μ£Όμ˜ν•˜μ—¬ μ‚¬μš©ν•΄μ•Ό 함
    • MySQL 4.1 μ΄ν›„λ‘œλŠ” char_length() μ‚¬μš©

10. 기타

10-1. MySQL 에 scv 파일둜 데이터 μ‚½μž…ν•˜κΈ°

LOAD DATA INFILE 'C:/ynjch/01_DB.csv' INTO TABLE [ν…Œμ΄λΈ”λͺ…] FIELDS TERMINATED BY ',';
  • MySQL 5.1.17 이후뢀터 λ³΄μ•ˆμ„ μœ„ν•΄ 파일 μž…/좜λ ₯ μ „μš© 경둜λ₯Ό μ§€μ •ν•  수 있음
  • μ„œλ²„μ˜ secure-file-priv 값을 톡해 μ„€μ • κ°€λŠ₯ (이곳에 μ„€μ •λœ 경둜 μ΄μ™Έμ—λŠ” νŒŒμž… μž…μΆœλ ₯이 λΆˆκ°€λŠ₯)
  • λ§Œμ•½ κ·Έ λ°–μ˜ 경둜둜 μž…μΆœλ ₯을 μ‹œλ„ν•˜κ²Œ λ˜λŠ” 경우 λ‹€μŒκ³Ό 같은 였λ₯˜κ°€ λ°œμƒν•¨
  • Error Code: 1290. The MySQL server is running with the --secure-file-priv option so it cannot execute this statement 0.016 sec
SHOW VARIABLES LIKE 'secure_file%';
  • μž…μΆœλ ₯ 경둜 확인 ν›„ ν•΄λ‹Ή 경둜둜 μ„€μ • ν›„ μ‹€ν–‰ν•΄μ•Ό 함
LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/01_DB.csv' INTO TABLE [ν…Œμ΄λΈ”λͺ…] FIELDS TERMINATED BY ',';
  • 정상 μž‘λ™

10-2. MySQL μž…μΆœλ ₯ 경둜 λ³€κ²½ν•˜κΈ°

  • MySQL μ„€μ •νŒŒμΌμΈ my.ini 파일 을 톡해 μˆ˜μ •ν•  수 있음
  • C:\ProgramData\MySQL\MySQL Server 8.0\my.ini
  • ν•΄λ‹Ή νŒŒμΌμ„ μ—΄μ–΄ secure-file μ΄λΌλŠ” ν‚€μ›Œλ“œλ‘œ 검색
  • λ‹€μŒκ³Ό 같은 뢀뢄이 λ‚˜νƒ€λ‚˜λ©΄ μ›ν•˜λŠ” 경둜둜 λ³€κ²½ κ°€λŠ₯ (λ§Œμ•½ μ˜΅μ…˜μ„ μ—¬λŸ¬ 번 μ“°λŠ” 경우 κ°€μž₯ λ§ˆμ§€λ§‰μ˜ 경둜만 적용됨)
# Secure File Priv.
secure-file-priv="C:/ProgramData/MySQL/MySQL Server 5.7/Uploads"
  • my.ini νŒŒμΌμ„ μ €μž₯ν•˜κ³  MySQL μ„œλ²„(μ„œλΉ„μŠ€)λ₯Ό μž¬μ‹œμž‘
  • cmdλ₯Ό κ΄€λ¦¬μž λͺ¨λ“œλ‘œ μ—΄κ³  λ‹€μŒμ˜ λͺ…λ Ήμ–΄λ₯Ό 톡해 μž¬μ‹œμž‘ κ°€λŠ₯
net stop MySQL
net start MySQL

10-3. MySQL SELECT 쿼리 μ‹€ν–‰ μˆœμ„œ

  • FROM > ON > JOIN > WHERE > GROUP BY > CUBE | ROLLUP > HAVING > SELECT > DISTINCT > ORDER BY