'mysql'에 해당되는 글 3건

  1. 2023.03.15 AWS RDS - MySQL 구축
  2. 2021.02.26 MariaDB 한글 입력 및 깨짐 설정
  3. 2021.02.08 Golang+Angular+MariaDB #18 MariaDB 연동

AWS RDS - MySQL 구축

Info/AWS 2023. 3. 15. 16:13 |
728x90

※ 해당 글은 본인 참고용으로 작성한 글입니다.

 

1. 데이터베이스 생성

'데이터베이스 생성' 클릭

 

- 엔진 유형 : MySQL

- 엔진 버전 : (원하는 버전 선택)

- 템플릿 : 프리 티어

 

DB 인스턴스 식별자 : RDS Database 이름

마스터 사용자 이름 : (마스터 로그인 ID)

마스터 암호 : (마스터 비밀번호)

 

할당된 스토리지 : (저장소 용량)

스토리지 자동 조정 : (체크 해제)

 

컴퓨팅 리소스 : 연결 안함(차후에도 수정 가능)

네트워크 유형 : IPv4

퍼블릭 엑세스 : 예

VP 보안 그룹 : (사용자에 맞추어 지정)

추가 구성 - 데이터베이스 포트 : (사용자에 맞춰 지정)

 

데이터베이스 인증 옵션 : 암호 인증(차후 HeidiSQL에서 로그인을 위해)

 

최하단 추가설정 조정

초기 데이터베이스 이름 : (필요없을 경우, 미입력)

백업 : 체크 해제

유지 관리 : 체크 해제

 

모든 설정 지정 후 '데이터베이스 생성' 버튼 클릭

 

상태가 현재 '생성 중' 이며 이것이 '사용 가능'으로 변경되어야 이용이 가능함

(약 5~10분 소요)

 

 

728x90

 

2. 데이터베이스 조정

DB 식별자를 선택하여 대시보드로 이동

1) 엔드 포인트 확인(메모장 또는 별도 복붙)

2) '보안 그룹' 선택

 

우측 하단 '인바운드 규칙 편집' 버튼 선택

 

사용자 IP 등록 및 '규칙 저장' 버튼 선택

 

3. HeidiSQL 로그인

호스트명/IP : RDS 엔드 포인트

사용자 : 마스터 사용자 이름

암호 : 마스터 암호

위 내용 입력 후 '열기'

 

성공!

728x90

'Info > AWS' 카테고리의 다른 글

AWS EC2 - Golang 세팅  (0) 2023.03.15
AWS & VS Code 연동  (0) 2023.03.15
AWS EC2 - 인스턴스 생성 및 Putty 연결  (0) 2023.03.15
Posted by 게으른거북
:
728x90

MariaDB(MySQL)에서 데이터로 한글을 입력하였을때 사진과 같이 에러가 발생합니다.

HeidiSQL - 에러화면

 

MySQL Client를 실행 및 로그인하여

아래 명령 코드를 입력해주면 사진과 같이 표시됩니다.

show variables like 'c%'; 

MySQL Client 실행화면

설정들을 uft8로 변경하는 작업을 진행해보겠습니다.

먼저 my.ini를 찾아서 실행해줍니다.

다음 사진과 같이 표시 될텐데,

 

 

uft8에 대한 명령어를 추가해줍니다.

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

 

 

이후 설정 적용을 위해서는 MySQL을 재시작해야 합니다.
서비스에서 설치하신 Database를 찾으셔서 다시 시작을 눌러줍니다.

저의 경우, MariaDB를 설치했기에 다음과 같이 표시됩니다.

Windows Service

 

이미 UTF8로 설정된 기존 데이터베이스나 테이블이 있을 경우 
다음 쿼리문을 통해 설정을 변경해주셔야만 합니다.

ALTER DATABASE <데이터베이스 이름> CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
ALTER TABLE <테이블 이름> CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

 

설정이 잘 변경되었는지 확인해보겠습니다.

 

설정이 잘 변경이 되었다면,

위 사진과 같이 데이터가 들어가지게 됩니다.

728x90

'Info > MariaDB(MySQL)' 카테고리의 다른 글

명령어 모음  (0) 2023.08.03
Posted by 게으른거북
:
728x90

참고페이지 : Using Go with MariaDB (링크)

 

Using Go with MariaDB | MariaDB

2019 Webinar: Building Modern Applications with MariaDB Hybrid Transactional/Analytical Processing (HTAP) Watch Now _________________________ I have been using Google’s Go programming language for a…

mariadb.com

 

MariaDB 홈페이지에서도 mysql로 작업을 환경을 구축하도록 안내하기에

혼선이 없으시길 바랍니다.

 

데이터베이스를 연동하여,

user의 전체 데이터를 가져오는 내용으로 소스를 변경하겠습니다.

 

더보기

Database 세팅

데이터베이스, 테이블을 아래 이미지와 같이 미리 생성해 주세요.

테스트를 위해 2~3개정도의 데이터를 미리 입력하는 것이 좋습니다.

MariaDB - test_crud 데이터베이스 - users 테이블

Mysql 세팅

cmd에서 프로젝트 페이지로 이동 후, 라이브러리를 다운합니다.

cd workspace/go/src/api
go get github.com/go-sql-driver/mysql

 

main.go 수정

package main

import (
	...
    
	// 코드 추가
	"database/sql"
	_ "github.com/go-sql-driver/mysql"
)

type User struct {
	...
}

// Database 정보를 저장할 구조체
type DBInfo struct {
	user     string
	pwd      string
	url      string
	engine   string
	database string
}

// 주석 처리 or 제거
// Database에서 정보를 받아오기에, 더 이상 쓰지 않음
/*
var users = []User{
	User{Id: 1, Name: "David", Email: "test@gmail.com", Password: "123"},
	User{Id: 2, Name: "Nata", Email: "test@email.com", Password: "qwer"},
}
*/

// 코드 추가
var users = []User{} // 별도로 데이터를 저장
var user = User{}    // 별도로 데이터를 저장

// Database 연결 정보
var dbInfo = DBInfo{"아이디", "비밀번호", "localhost:3306", "mysql", "test_crud"}

type Response struct { ... }

func NewResponse(method, message string, status int) Response { ... }

func HttpInfo(r *http.Request) { ... }

// Content-Type을 "application/json"으로 설정하여 JSON 전달
func setJsonHeader(w http.ResponseWriter) {
	w.Header().Set("Content-Type", "application/json")
}

func main() { ... }

// 코드 추가 : sql.DB 객체 생성
func connetDatabase() *sql.DB {
	dataSource := dbInfo.user + ":" + dbInfo.pwd + "@tcp(" + dbInfo.url + ")/" + dbInfo.database
	db, err := sql.Open(dbInfo.engine, dataSource)

	checkErr(err)

	return db
}

// 코드 추가 : 에러 체크
func checkErr(err error) {
	if err != nil {
		log.Fatal(err)
	}
}

// 전체 user 정보 전달
func getUsers(w http.ResponseWriter, r *http.Request) {
	setJsonHeader(w)
	HttpInfo(r)

	// sql.DB 객체 생성
	db := connetDatabase()
	
	// 지연하여 닫는다(필수)
	defer db.Close()

	// User 전체 데이터를 불러오는 SQL 쿼리
	rows, err := db.Query("SELECT * FROM users")
	checkErr(err)

	// 지연하여 닫는다(필수)
	defer rows.Close() 

	users = []User{}
	for rows.Next() {
		user = User{}
		err := rows.Scan(&user.Id, &user.Name, &user.Email, &user.Password)
		checkErr(err)
		fmt.Println(user)
		users = append(users, user)
	}

	fmt.Println(len(users))

	json.NewEncoder(w).Encode(users)
}

...
728x90
Posted by 게으른거북
: