Cloud SQL이란?
Cloud SQL은 구글 Compute Engine에서 호스팅, 관리되며, MYSQL을 실행하는 VM이다. MYSQL과 완벽히 호환된다고 한다.
클라우드 콘솔과 클라우드 SDK를 이용해서 Cloud SQL을 활용해볼것이기 때문에
인스턴스를 먼저 만든다.
연결 - 네트워크 추가도 잊지 말아야 한다(0.0.0.0/0 은 모든 접근 허용)
MySQL은 비밀번호 인증을 사용하기 때문에 추가 접근 권한을 부여하려면 새로운 사용자가 필요하다. mysql.sys추가
Linux 사용을 위해서 구글 클라우드로 로그인
gcloud auth login
Cloud SQL 인스턴스가 구동되어 실행되는지 확인하자
gcloud sql instances list
mysql 클라이언트 설치 및 연결을 시도한다.
mysql이 잘 안될 경우는 mariadb도 좋다.
sudo apt-get install mysql-client
MySQL명령줄 인터페이스를 사용해 연결을 시도한다.
mysql -h sql인스턴스의IP -u 생성한사용자ID -p
이렇게뜨면 sql 접속에 성공한 것!! 무려 구글의 sql서버와 통신하고 있는 것이다.
mysql -h 호스트IP -u -사용자id \
--password=암호
이렇게 해도되지만 이러면 명령줄 인터페이스에 비밀번호가 노출된다.
Create database를 이용해 데이터베이스를 만들자
todolist 테이블을 정의해야한다.
!! use todo; 를 쓰지 않으면 아래처럼 no databse selected 가 뜬다.
CREATE TABLE `todolists` (
`id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(255) NOT NULL
) ENGINE = InnoDB;
할 일 목록 예제 추가하기
INSERT INTO todolists (`name`) VALUES ("Groceries"),
("Christmas shopping"),
("Vacation plans");
select 쿼리를 이용해서 확인해볼 수 있다.
SELECT * FROM todolists;
todoitems 테이블 만들기
CREATE TABLE `todoitems` (
`id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`todolist_id` INT(11) NOT NULL REFERENCES `todolists`.`id`,
`name` varchar(255) NOT NULL,
`done` BOOL NOT NULL DEFAULT '0'
) ENGINE = InnoDB;
todoitems 테이블에 예제 항목 추가하기
INSERT INTO todoitems (`todolist_id`, `name`, `done`) VALUES (1, "Milk", 0), (1, "Eggs", 0), (1, "Orange juice", 1), (1, "Egg salad", 0);
egg와 발음이 유사한 식료품에 대한 쿼리를 보기
SELECT `todoitems`.`name` from `todoitems`, `todolists` WHERE `todolists`.`name` = "Groceries" AND `todoitems`.`todolist_id` = `todolists`.`id` AND `todoitems`.`done` = 0 AND SOUNDEX(`todoitems`.`name`) LIKE CONCAT(SUBSTRING(SOUNDEX("egg"), 1,2), "%");
작동된것이다!!