Day10 AWS RDS入门
Day10 AWS RDS入门

Day10 AWS RDS入门

内容纲要

Day10 AWS RDS入门

目标

  • [ ] 了解RDS的基本运作
  • [ ] 学会配置RDS
  • [ ] 简单使用RDS

1.什么是 Amazon Relational Database Service (Amazon RDS)?

Amazon Relational Database Service (Amazon RDS) 是一项 Web 服务,让用户能够在 AWS Cloud 云中更轻松地设置、操作和扩展关系数据库。可为用户提供一个经济有效、容量可调的符合行业标准的关系数据库,并承担常见的数据库管理任务。

https://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/Welcome.html

他的优势就在于

  • 轻松部署

  • 高可靠性

  • 低成本

  • 高安全

    提供白名单访问策略;可自行设置允许访问的IP及IP段,有效防止黑客扫描端口进行服务器攻击等等。不同厂商的安全策略不同。

2.RDS配置方向

在开始之前我们大致确认一下配置方向

  1. 配置安全组
  2. ParameterGroupの作成
  3. 配置RDS的子网组(RDS用のSecurityGroupの作成)
  4. 建立数据库
  5. 测试数据库

3.正式配置

在正式创建RDS我们需要配置一些前置条件。

还有,パラメータグループ设置了参数组,就会默认使用它,就不需要每个都改参数组。

1.配置セキュリティグループ

  1. 打开VPC→セキュリティーグループ→セキュリティグループを作成
  2. 起个名字(qlite-dev-xxx-sg-rds)
  3. 入站规则(インバウンドルール)选择MYSQL/Aurora,当然也可以手动选择3306端口也行。
  4. ソース打开所有IP段0.0.0.0/0
  5. 创建

2.创建パラメータグループ(ParameterGroup)

  1. 来到网页搜索RDS进入
  2. 选择パラメータグループ→パラメータグループ作成
  3. 选择mysql5.7
  4. 选择DB Parameter Group
  5. 起一个名字qlite-dev-xxx-pmg
  6. 说明写for rds

3.创建サブネットグループ(SecurityGroup)

  1. 来到网页搜索RDS进入
  2. 选择サブネットグループ→DB サブネットグループ作成
  3. 起个名qlite-dev-oyb-sng
  4. 说明for rds
  5. 选择自己的VPC
  6. 然后选择自己的子网pri1a和pri1c如何分不清可以去我们的VPC的子网了查看IP段分辨
  7. 最后作成

4.创建一个データベース

  1. 来到网页搜索RDS进入
  2. 选择データベース→データベースの作成
  3. 选择標準作成
  4. MySQL
  5. MySQL 5.7.33版本
  6. 选择無料利用
  7. 都下面的设置
  8. DB インスタンス識別子填入名称qlite-dev-xxx-db
  9. admin
  10. 设置一个密码
  11. インスタンスの設定选择db-t2-micro
  12. 分配20G
  13. ストレージの自動スケーリングを有効にする取下勾选
  14. EC2 コンピューティングリソースに接続しない
  15. IPv4
  16. 选择自己的VPC
  17. 选择自己的DB サブネットグループ
  18. 选择自己创建的rds安全组
  19. 然后默认
  20. 点开追加设定
  21. 最初のデータベース名(database)注意⚠️这里如果不能作成那就换个名字。
  22. DB パラメータグループ选择自己的qlite-dev-xxx-pmg
  23. 最后default:mysql-5-7
  24. 选择作成

小插曲:发现选完之后不能创建到21步的最初のデータベース名换个名字应该就能创建。

注意点⚠️

データベース用完要自己和¥删掉他,如果只是关闭,7天后会自动重新启动造成扣费。

下载登录Mysql

  1. 来到我们的跳板机(bas)

  2. sudo su
    
    yum -y install mysql         #下载mysql
    
    mysql -u admin -h qlite-dev-xxx-rds-database.cudmtjxim8f6.ap-northeast-1.rds.amazonaws.com -P 3306 -p
    
    #如果没有问题就可以看到下面的字,输入密码登录即可
    [root@bas ec2-user]# mysql -u admin -h qlite-dev-oyb-rds-database.cudmtjxim8f6.ap-northeast-1.rds.amazonaws.com -P 3306 -p
    Enter password: 
    Welcome to the MariaDB monitor.  Commands end with ; or \g.

    然后我们再来看看这条命令

    mysql -u admin -h qlite-dev-xxx-rds-database.cudmtjxim8f6.ap-northeast-1.rds.amazonaws.com -P 3306 -p

    mysql -u admin为指定用户名为admin

    qlite-dev-xxx-rds-database.cudmtjxim8f6.ap-northeast-1.rds.amazonaws.com -P

    这里的-h 之后是エンドポイントとポート我们进入刚刚自己创建的データベース详情页面可以找到

    3306 -p 是指定数据库的端口号。

Mysql实践

MySQL [(none)]> show datebase
    -> show datebase;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'datebase
show datebase' at line 1
MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| dataname           |
| innodb             |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.00 sec)

MySQL [(none)]> 

这里我输入了show datebase很明显出现了输入错误,所以提示了我42000

常用命令

SHOW DATABASES;             #显示数据库 和ls 类似

CREATE DATABASE ;      #创建一个数据库

USE ;              #USE和linux的cd有点像

SHOW TABLES;            #显示表

show variables like 'char%';        #查看字符编码

CREATE TABLE <テーブル名> ( ,  );  #创建一个表并写入表头

常用数据类型

INT( 全是数字用)

CHAR (到255为止字符串)

文本一定要用双引号

⚠️注意:char(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储 30 个字符。

⚠️注意:创建表的时候有关键字比如describe就是关键字,在写入表头的时候需要加入 符号

describe

1.创建一个数据库

CREATE DATABASE 0118DB;

2.创建一个数据表

练习1

2023-01-18-14.44.34.png

USE 0118DB;     #进入0118DB数据库

#创建表格式 CREATE TABLE <テーブル名> ( ,  );
CREATE TABLE CartTable(id int,user_id int,item_id int,num int);

#输入内容 INSERT INTO <テーブル名> (, ) VALUES (<任意>,<任意>);
MySQL [0118DB]> INSERT INTO CartTable(id,user_id,item_id,num)VALUES(1,1,3,2);
Query OK, 1 row affected (0.01 sec)

MySQL [0118DB]> INSERT INTO CartTable(id,user_id,item_id,num)VALUES(2,1,5,1);
Query OK, 1 row affected (0.01 sec)

MySQL [0118DB]> INSERT INTO CartTable(id,user_id,item_id,num)VALUES(3,1,6,1);
Query OK, 1 row affected (0.01 sec)

MySQL [0118DB]> INSERT INTO CartTable(id,user_id,item_id,num)VALUES(4,1,8,1);
Query OK, 1 row affected (0.00 sec)

MySQL [0118DB]> INSERT INTO CartTable(id,user_id,item_id,num)VALUES(5,2,1,3);
Query OK, 1 row affected (0.01 sec)

MySQL [0118DB]> INSERT INTO CartTable(id,user_id,item_id,num)VALUES(6,3,2,2);
Query OK, 1 row affected (0.00 sec)

MySQL [0118DB]> INSERT INTO CartTable(id,user_id,item_id,num)VALUES(7,3,6,2);
Query OK, 1 row affected (0.01 sec)

MySQL [0118DB]> INSERT INTO CartTable(id,user_id,item_id,num)VALUES(8,3,5,1);
Query OK, 1 row affected (0.01 sec)

MySQL [0118DB]> INSERT INTO CartTable(id,user_id,item_id,num)VALUES(9,4,8,2);

#查看表内容语法
SELECT * FROM <テーブル名>;

MySQL [0118DB]> SELECT * FROM CartTable;
+------+---------+---------+------+
| id   | user_id | item_id | num  |
+------+---------+---------+------+
|    1 |       1 |       3 |    2 |
|    2 |       1 |       5 |    1 |
|    3 |       1 |       6 |    1 |
|    4 |       1 |       8 |    1 |
|    5 |       2 |       1 |    3 |
|    6 |       3 |       2 |    2 |
|    7 |       3 |       6 |    2 |
|    8 |       3 |       5 |    1 |
|    9 |       4 |       8 |    2 |
+------+---------+---------+------+
9 rows in set (0.00 sec)

练习2

2023-01-18-14.51.08.png

MySQL [0118DB]> CREATE TABLE UserTable (id int,name char(5),age int,gender char);
Query OK, 0 rows affected (0.02 sec)
#上面的char(5)里面的5是指定字符长度默认为1
MySQL [0118DB]> INSERT INTO UserTable (id,name,age,gender)VALUES(1,"Sato",21,"F");
Query OK, 1 row affected (0.01 sec)

MySQL [0118DB]> INSERT INTO UserTable (id,name,age,gender)VALUES(2,"Wang",43,"M");
Query OK, 1 row affected (0.01 sec)

MySQL [0118DB]> INSERT INTO UserTable (id,name,age,gender)VALUES(3,"Li",24,"M");
Query OK, 1 row affected (0.00 sec)

MySQL [0118DB]> INSERT INTO UserTable (id,name,age,gender)VALUES(4,"Kim",27,"F");
Query OK, 1 row affected (0.26 sec)

#查看数据表
MySQL [0118DB]> SELECT * FROM UserTable
    -> ;
+------+------+------+--------+
| id   | name | age  | gender |
+------+------+------+--------+
|    1 | Sato |   21 | F      |
|    2 | Wang |   43 | M      |
|    3 | Li   |   24 | M      |
|    4 | Kim  |   27 | F      |
+------+------+------+--------+
4 rows in set (0.00 sec)

根据条件修改表中的数据

【实例 2】在 tb_courses 表中,更新 course_id 值为 2 的记录,将 course_grade 字段值改为 3.5,将 course_name 字段值改为“DB”,输入的 SQL 语句和执行结果如下所示。

mysql> UPDATE tb_courses_new
    -> SET course_name='DB',course_grade=3.5
    -> WHERE course_id=2;
Query OK, 1 row affected (0.13 sec)

修改某一列数据长度

1)alter table [表名] change [字段] [新字段] [数据类型]([数据最大长度]);
     alter table APPLE change BANANA BANANA int;
     alter table APPLE change BANANA MANGO varchat(12);

2)alter table [表名] modify [列名] [数据类型]([数据最大长度]);
     alter table APPLE modify BANANA int;
     alter table APPLE modify BANANA char(12);

练习3

2023-01-18-14.53.06.png

我们要输入日语,所以我们先修改一下编码

查看字符编码)show variables like ‘char%’;

修改字符编码)set character_set_database = utf8;

修改库字符编码)alter database [库名] character set utf8;

修改完成就可以创建表了

MySQL [0118DB]> CREATE TABLE StoreTable (id int,name char(10),address char(15));
Query OK, 0 rows affected (0.03 sec)

MySQL [0118DB]> INSERT INTO StoreTable (id,name,address)VALUES(1,"FruitSale","千葉県XX町");
Query OK, 1 row affected (0.01 sec)

MySQL [0118DB]> INSERT INTO StoreTable (id,name,address)VALUES(2,"VegetSale","埼玉県XX町");
Query OK, 1 row affected (0.00 sec)

MySQL [0118DB]> INSERT INTO StoreTable (id,name,address)VALUES(3,"EggSale","東京都XX町");
Query OK, 1 row affected (0.01 sec)

MySQL [0118DB]> select * from StoreTable;
+------+-----------+----------------+
| id   | name      | address        |
+------+-----------+----------------+
|    1 | FruitSale | 千葉県XX町     |
|    2 | VegetSale | 埼玉県XX町     |
|    3 | EggSale   | 東京都XX町     |
+------+-----------+----------------+
3 rows in set (0.01 sec)

练习4

2023-01-18-14.53.10.png

⚠️注意:创建表的时候有关键字比如describe就是关键字,在写入表头的时候需要加入 符号

describe

⚠️注意:创建表的时候有关键字比如describe就是关键字,在写入表头的时候需要加入 符号

describe
MySQL [0118DB]> CREATE TABLE ItemTable (id int,name char(10),store_id int,remain int,describe char(15));
Query OK, 0 rows affected (0.02 sec)

MySQL [0118DB]> INSERT INTO ItemTable (id,name,store_id,remain,describe)VALUES(1,"りんご",1,782,"aaaaaa");
Query OK, 1 row affected (0.01 sec)

MySQL [0118DB]> INSERT INTO ItemTable (id,name,store_id,remain,describe)VALUES(2,"ピーチ",1,1233,"bbbbb");
Query OK, 1 row affected (0.01 sec)

MySQL [0118DB]> INSERT INTO ItemTable (id,name,store_id,remain,describe)VALUES(3,"ゆず",1,343,"cccccc");
Query OK, 1 row affected (0.01 sec)

MySQL [0118DB]> INSERT INTO ItemTable (id,name,store_id,remain,describe)VALUES(4,"いちご",1,0,"ddddd");
Query OK, 1 row affected (0.00 sec)

MySQL [0118DB]> INSERT INTO ItemTable (id,name,store_id,remain,describe)VALUES(5,"トマト",2,323,"eeeee");
Query OK, 1 row affected (0.01 sec)

MySQL [0118DB]> INSERT INTO ItemTable (id,name,store_id,remain,describe)VALUES(6,"ポテト",2,1122,"ffffffff");
Query OK, 1 row affected (0.00 sec)

MySQL [0118DB]> INSERT INTO ItemTable (id,name,store_id,remain,describe)VALUES(7,"玉ねぎ",2,2432,"ggggg");
Query OK, 1 row affected (0.06 sec)

MySQL [0118DB]> INSERT INTO ItemTable (id,name,store_id,remain,describe)VALUES(8,"たまご",3,1123,"hhhhh");
Query OK, 1 row affected (0.01 sec)

#查看表
MySQL [0118DB]> SELECT * FROM ItemTable
    -> ;
+------+-----------+----------+--------+----------+
| id   | name      | store_id | remain | describe |
+------+-----------+----------+--------+----------+
|    1 | りんご    |        1 |    782 | aaaaaa   |
|    2 | ピーチ    |        1 |   1233 | bbbbb    |
|    3 | ゆず      |        1 |    343 | cccccc   |
|    4 | いちご    |        1 |      0 | ddddd    |
|    5 | トマト    |        2 |    323 | eeeee    |
|    6 | ポテト    |        2 |   1122 | ffffffff |
|    7 | 玉ねぎ    |        2 |   2432 | ggggg    |
|    8 | たまご    |        3 |   1123 | hhhhh    |
+------+-----------+----------+--------+----------+
8 rows in set (0.01 sec)

练习结束

RDS是收费项目

删库跑路( ・∇・)

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注