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 <DB名>;      #创建一个数据库
​
USE <DB名>;              #USE和linux的cd有点像
​
SHOW TABLES;            #显示表
​
show variables like 'char%';        #查看字符编码
​
CREATE TABLE <テーブル名> (<field1名> <data type>,<field2名> <data type> );  #创建一个表并写入表头

常用数据类型

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 <テーブル名> (<field1名> <data type>,<field2名> <data type> );
CREATE TABLE CartTable(id int,user_id int,item_id int,num int);
​
#输入内容 INSERT INTO <テーブル名> (<field1名>,<field2名> ) 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是收费项目

删库跑路( ・∇・)

文章作者: tutu
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 TutuのBlog
AWS AWS AWS学习 RDS
喜欢就支持一下吧