在GCP上创建Cloud SQL的三种方式(Console,gcloud,Terraform)
1 简介
Cloud SQL 是GCP上的关系型数据库,常用的有三种方式来创建:
(1) 界面操作
(2) 命令行 gcloud
(3) Terraform
在开始之前,可以查看:《初始化一个GCP项目并用gcloud访问操作》。
2 GCP 操作界面
登陆GCP,选择SQL,可以创建MySQL、PostgreSQL和SQL Server:

以PostgreSQL为例,可以选择很多参数:

3 gcloud命令
通过命令行创建也很方便,可以自动化。命令如下:
$ gcloud sql instances create pkslow-testdb \
--database-version=POSTGRES_13 \
--region=us-west1 \
--cpu=1 \
--memory=3840MB \
--authorized-networks="0.0.0.0/0"
Creating Cloud SQL instance...done.
Created [https://sqladmin.googleapis.com/sql/v1beta4/projects/pkslow/instances/pkslow-testdb].
NAME DATABASE_VERSION LOCATION TIER PRIMARY_ADDRESS PRIVATE_ADDRESS STATUS
pkslow-testdb POSTGRES_13 us-west1-a db-custom-1-3840 34.83.146.214 - RUNNABLE
authorized-networks 这个参数很重要,它决定了哪些客户端可以连接上数据库。
设置密码:
$ gcloud sql users set-password postgres \
--instance=pkslow-testdb \
--password=pkpass
给实例创建数据库:
$ gcloud sql databases create billing --instance=pkslow-testdb
Creating Cloud SQL database...done.
Created database [billing].
instance: pkslow-testdb
name: billing
project: pkslow
创建完成后,就可以在本地连接了:

连上之后,我们来创建一张表和插入一些数据来测试一下:
CREATE TABLE pkslow_person (
name varchar not null,
age int not null,
city varchar not null
);
insert into pkslow_person(name, age, city) VALUES ('Larry', 1, 'GZ');
insert into pkslow_person(name, age, city) VALUES ('pkslow', 2, 'SZ');
insert into pkslow_person(name, age, city) VALUES ('Deng', 21, 'SZ');
insert into pkslow_person(name, age, city) VALUES ('Eason', 13, 'BJ');
insert into pkslow_person(name, age, city) VALUES ('JJ', 43, 'SH');
insert into pkslow_person(name, age, city) VALUES ('Mi', 28, 'HK');
查看数据:

4 Terraform
当然,更好的方式还是通过Terraform来创建:
provider "google" {
project = "pkslow"
}
resource "google_sql_database_instance" "instance" {
name = "pkslow-postgresql"
region = "us-west1"
database_version = "POSTGRES_13"
settings {
tier = "db-f1-micro"
ip_configuration {
ipv4_enabled = "true"
authorized_networks {
value = "0.0.0.0/0"
name = "allow-all"
expiration_time = "2099-01-01T00:00:00.000Z"
}
}
}
deletion_protection = "true"
}
resource "google_sql_database" "database" {
name = "billing"
instance = google_sql_database_instance.instance.name
}
resource "google_sql_user" "users" {
name = "larry"
instance = google_sql_database_instance.instance.name
password = "larry.pass"
}
这段代码为会我们创建三个资源:实例、数据库和用户。
准备好代码好,运行下面命令:
$ terraform init -plugin-dir=${TERRAFORM_PLUGIN}
$ terraform plan
$ terraform apply -auto-approve
Terraform还会自动在Bucket上创建文件来管理Terraform的状态:

创建完成后,检查就有两个数据库实例了:
$ gcloud sql instances list
NAME DATABASE_VERSION LOCATION TIER PRIMARY_ADDRESS PRIVATE_ADDRESS STATUS
pkslow-postgresql POSTGRES_13 us-west1-a db-f1-micro 34.127.53.161 - RUNNABLE
pkslow-testdb POSTGRES_13 us-west1-a db-custom-1-3840 34.83.146.214 - RUNNABLE

本地连接如下:

5 代码
代码请查看GitHub: https://github.com/LarryDpk/pkslow-samples
在GCP上创建Cloud SQL的三种方式(Console,gcloud,Terraform)的更多相关文章
- java核心知识点学习----创建线程的第三种方式Callable和Future CompletionService
前面已经指出通过实现Runnable时,Thread类的作用就是将run()方法包装成线程执行体,那么是否可以直接把任意方法都包装成线程执行体呢?Java目前不行,但其模仿者C#中是可以的. Call ...
- Java反射机制(创建Class对象的三种方式)
1:了解什么是反射机制? 在通常情况下,如果有一个类,可以通过类创建对象:但是反射就是要求通过一个对象找到一个类的名称: 2:在反射操作中,握住一个核心概念: 一切操作都将使用Object完成,类 ...
- JDBC 创建连接对象的三种方式 、 properties文件的建立、编辑和信息获取
创建连接对象的三种方式 //第一种方式 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/ ...
- Java反射机制(创建Class对象的三种方式)
1:SUN提供的反射机制的类: java.lang.Class<T> java.lang.reflect.Constructor<T> java.lang.reflect.Fi ...
- java核心知识点----创建线程的第三种方式 Callable 和 Future CompletionService
前面已经指出通过实现Runnable时,Thread类的作用就是将run()方法包装成线程执行体,那么是否可以直接把任意方法都包装成线程执行体呢?Java目前不行,但其模仿者C#中是可以的. Call ...
- spring中创建bean对象的三种方式以及作用范围
时间:2020/02/02 一.在spring的xml配置文件中创建bean对象的三种方式: 1.使用默认构造函数创建.在spring的配置文件中使用bean标签,配以id和class属性之后,且没有 ...
- JDBC 创建连接对象的三种方式 、 properties文件的建立、编辑和信息获取
创建连接对象的三种方式 //第一种方式 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/ ...
- 创建 Spring容器的三种方式
一.src路径下打包完在war包的classes层级下 1.Spring容器创建的三种方式 创建Bean容器之后创建对象: 其中第三种使用的是BeanFactory对象 2.spring通过配置文件用 ...
- django基础之day09,多对多创建数据表的三种方式
多对多三种创建方式 1.全自动(用在表关系不复杂的一般情况) class Book(models.Model): title=models.CharField(max_length=32) 多对多关系 ...
- hibernate执行sql的三种方式
方式一:直接使用HibernateTemplate的find()方法,find方法支持执行hql语句 List<T> list = this.getHibernateTemplate(). ...
随机推荐
- Vue中引入echarts。
1.安装 在终端vue项目的文件夹下运行npm install echarts --save安装依赖 可以使用npm install echarts@("这里可以写版本号") -- ...
- 23.mixin类源码解析
mixin类用于提供视图的基本操作行为,注意mixin类提供动作方法,而不是直接定义处理程序方法 例如.get() .post(),这允许更灵活的定义,mixin从rest_framework.mix ...
- 重新整理 .net core 实践篇 ———— linux 上线篇 [外篇]
前言 简单整理一个linux 简单上线. 这个是该系列的外篇,该系列继续更新.献给刚学的人. 正文 安装实例 dotnet new webapp -n AspNetCoreDemo -o firstw ...
- uni-app 配置MuMu手机模拟器 (2022-2-24)
(1)到官网"https://mumu.163.com/"下载,我选中的中间的那个 (2)下载完成后,默认安装即可,直接等待安装完成 (3)在uni-app里设置端口,在uni-a ...
- 如何判断多个url的状态 即是否能成功访问?
假设我们所有的url在excel种我们可以用loadwork 这个库 遍历所有的url 放入 列表 再通过request 或者 httpx 来判断 这个网址status_code 进而放入mongo种 ...
- ubuntu20.04修改静态ip不生效问题
一.前言 最近从头开始配置hadoop的时候,由于想切换到NAT模式下配置hadoop,但在修改ip的时候发现设置了静态ip,但ip不生效,查了很多资料,发现由于配置信息写错了. 二.解决问题 ifc ...
- MAUI新生-XAML语法基础:语法入门Element&Property&Event&Command
一.XAML(MAUI的XAML)和HTML 两者相似,都是标签语言(也叫标记)组成的树形文档.每个标签元素,可视为一个对象,通过"键=值"形式的标签属性(Attribute),为 ...
- 关于phalcon框架中DI的理解
DI(依赖注入) https://www.imooc.com/learn/867 https://www.imooc.com/learn/912
- Kubernetes安装GitLab
个人名片: 对人间的热爱与歌颂,可抵岁月冗长 Github:念舒_C.ying CSDN主页️:念舒_C.ying 个人博客 :念舒_C.ying Kubernetes安装GitLab Step 1 ...
- 线程(Thread)基本用法
一.线程的调用 1.无参 def run_01(): for i in range(6, 10): print("test01", i) time.sleep(1) th_01 = ...