📔
【GCP】CloudSQLの作成〜GCEとの連携を行う備忘録
はじめに
インフラ周りを触ることが増えてきたので学習の備忘録として残しています
やり方
CloudSQL構築
任意のDBエンジンを選択する

インスタンスを作成

DBを作成

Cloud SQL Admin APIを有効にする

有効にしていない場合はエラーが発生します
https://console.developers.google.com/apis/api/sqladmin.googleapis.com/overview?project=640010116609 then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.
CLOUD SHELLを開く

DBに接続
gcloud sql connect demo --user=root --quiet
Allowlisting your IP for incoming connection for 5 minutes...done.
Connecting to database with SQL user [root].Enter password:
mysql>
DBを操作する
-- DB一覧を表示
show databases;
+--------------------+
| Database |
+--------------------+
| demo |
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.04 sec)
-- DBを切り替え
use demo;
Database changed
-- テーブルを作成
CREATE TABLE users (id int NOT NULL PRIMARY key AUTO_INCREMENT,name VARCHAR(255));
-- データをテーブルに登録
INSERT INTO users(name) VALUES('hoge');
-- テーブルデータを取得
mysql> SELECT * FROM users;
+----+------+
| id | name |
+----+------+
| 1 | hoge |
+----+------+
1 row in set (0.03 sec)
GCEからCloud SQLに接続する
VMインスタンスの外部IPアドレスをネットワークに追加する


GCEにmysql-clientをインストール
sudo su -
# mariadb-clientをインストール(mysql-clientが統合されている)
apt-get -y install mariadb-client
# SQLのパブリックIPアドレスを入力しSQLに接続
mysql -u root -h パブリック IP アドレス -p
# 接続成功
MySQL [(none)]>

GCEからCloudSQLのデータを取得する
php-mysqlライブラリをインストールする
sudo su -
# パッケージ一覧を更新
apt-get -y update
# ライブラリをインストール
apt-get -y install php-mysql
# Apacheを再起動
systemctl restart httpd.service
CloudSQLのデータを取得・表示する
<?php
try {
$pdo = new PDO('mysql:host='パブリックIPアドレス名';dbname='DB名';charset=utf8','ユーザ名','パスワード',
[(PDO::ATTR_EMULATE_PREPARES => false)];
echo "成功";
} catch (PDOException $e) {
echo "失敗";
}
?>
<?php
$stmt = $pdo->query("SELECT * FROM users");
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "<p>";
echo $row["name"];
echo "</p>";
}
?>
CloudSQLに登録したデータを表示できれば成功

Discussion