はじめに
インフラ周りを触ることが増えてきたので学習の備忘録として残しています
やり方
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
に登録したデータを表示できれば成功