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配置方向
在开始之前我们大致确认一下配置方向
- 配置安全组
- ParameterGroupの作成
- 配置RDS的子网组(RDS用のSecurityGroupの作成)
- 建立数据库
- 测试数据库
3.正式配置
在正式创建RDS我们需要配置一些前置条件。
还有,パラメータグループ设置了参数组,就会默认使用它,就不需要每个都改参数组。
1.配置セキュリティグループ
- 打开VPC→セキュリティーグループ→セキュリティグループを作成
- 起个名字(qlite-dev-xxx-sg-rds)
- 入站规则(インバウンドルール)选择MYSQL/Aurora,当然也可以手动选择3306端口也行。
- ソース打开所有IP段0.0.0.0/0
- 创建
2.创建パラメータグループ(ParameterGroup)
- 来到网页搜索RDS进入
- 选择パラメータグループ→パラメータグループ作成
- 选择mysql5.7
- 选择DB Parameter Group
- 起一个名字qlite-dev-xxx-pmg
- 说明写for rds
3.创建サブネットグループ(SecurityGroup)
- 来到网页搜索RDS进入
- 选择サブネットグループ→DB サブネットグループ作成
- 起个名qlite-dev-oyb-sng
- 说明for rds
- 选择自己的VPC
- 然后选择自己的子网pri1a和pri1c如何分不清可以去我们的VPC的子网了查看IP段分辨
- 最后作成
4.创建一个データベース
- 来到网页搜索RDS进入
- 选择データベース→データベースの作成
- 选择標準作成
- MySQL
- MySQL 5.7.33版本
- 选择無料利用
- 都下面的设置
- DB インスタンス識別子填入名称qlite-dev-xxx-db
- admin
- 设置一个密码
- インスタンスの設定选择db-t2-micro
- 分配20G
- ストレージの自動スケーリングを有効にする取下勾选
- EC2 コンピューティングリソースに接続しない
- IPv4
- 选择自己的VPC
- 选择自己的DB サブネットグループ
- 选择自己创建的rds安全组
- 然后默认
- 点开追加设定
- 最初のデータベース名(database)注意⚠️这里如果不能作成那就换个名字。
- DB パラメータグループ选择自己的qlite-dev-xxx-pmg
- 最后default:mysql-5-7
- 选择作成
小插曲:发现选完之后不能创建到21步的最初のデータベース名换个名字应该就能创建。
注意点⚠️
データベース用完要自己和¥删掉他,如果只是关闭,7天后会自动重新启动造成扣费。
下载登录Mysql
-
来到我们的跳板机(bas)
-
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
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
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
我们要输入日语,所以我们先修改一下编码
查看字符编码)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
⚠️注意:创建表的时候有关键字比如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是收费项目
删库跑路( ・∇・)