2月14日 动手实战-MySQL数据库快速部署实践
本实验提供一个Linux系统。首先,安装mysql;然后,执行mysql的常用操作;最后,学习基本的SQL语句。
- 创建资源
MySQL安装与配置
MySQL是一个关系型数据库管理系统,本步骤指导您如何在ECS实例上安装MySQL。
执行如下命令,更新YUM源。
[root@iZuf638xyasua2twjq2zgqZ ~]# rpm -Uvh http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm Retrieving http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm warning: /var/tmp/rpm-tmp.QjzROW: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY Preparing... ################################# [100%] Updating / installing... 1:mysql57-community-release-el7-9 ################################# [100%] [root@iZuf638xyasua2twjq2zgqZ ~]#
执行如下命令,安装MySQL。
yum -y install mysql-community-server --nogpgcheck
执行mysql -V命令,查看MySQL版本号。
# 返回结果如下,表示已成功安装MySQL。 [root@iZuf638xyasua2twjq2zgqZ ~]# mysql -V mysql Ver 14.14 Distrib 5.7.37, for Linux (x86_64) using EditLine wrapper
执行如下命令,启动MySQL服务。
systemctl start mysqld
执行如下命令,设置MySQL服务开机自启动。
systemctl enable mysqld
配置MySQL的root用户密码。
执行如下命令,查看/var/log/mysqld.log文件,获取root用户的初始密码。
[root@iZuf638xyasua2twjq2zgqZ ~]# grep 'temporary password' /var/log/mysqld.log 2022-02-14T05:19:56.998888Z 1 [Note] A temporary password is generated for root@localhost: arFqke-5AfJr [root@iZuf638xyasua2twjq2zgqZ ~]#
执行以下命令,使用root用户登录数据库。
# 返回结果如下所示,输入root用户的初始密码。 [root@iZuf638xyasua2twjq2zgqZ ~]# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.37 Copyright (c) 2000, 2022, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
- 执行以下命令,修改MySQL的root用户的初始密码。
set global validate_password_policy=0; #修改密码安全策略为低(只校验密码长度,至少8位)。
ALTER USER 'root'@'localhost' IDENTIFIED BY '00000000';
执行以下命令,授予root用户远程管理权限。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '00000000';
输入exit退出数据库。
exit
执行以下命令,使用root用户登录数据库。
mysql -uroot -p00000000
执行如下命令,创建test数据库。
mysql> create database test; Query OK, 1 row affected (0.00 sec)
执行如下命令,查看当前数据库列表。此时,可以看到三个数据库:information_schema ,mysql,performance_schema,sys,test 。
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | | test | +--------------------+ 5 rows in set (0.00 sec)
注意:进入 mysql 之后,每条命令结尾都要有分号。
执行命令 use mysql;,连接 mysql 数据库。然后执行命令 show tables; ,查看 mysql 数据库中的数据表。使用命令 exit ,退出 MySQL 界面。
mysql> use mysql; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> show tables; +---------------------------+ | Tables_in_mysql | +---------------------------+ | columns_priv | | db | | engine_cost | | event | | func | | general_log | | gtid_executed | | help_category | | help_keyword | | help_relation | | help_topic | | innodb_index_stats | | innodb_table_stats | | ndb_binlog_index | | plugin | | proc | | procs_priv | | proxies_priv | | server_cost | | servers | | slave_master_info | | slave_relay_log_info | | slave_worker_info | | slow_log | | tables_priv | | time_zone | | time_zone_leap_second | | time_zone_name | | time_zone_transition | | time_zone_transition_type | | user | +---------------------------+ 31 rows in set (0.00 sec) mysql> exit Bye
返回 Linux 界面,执行如下命令,将名为 test 的数据库备份到当前目录的 test.sql。界面显示 Enter password,输入 MySQL 数据库的登录密码 00000000 。根据备份的数据库大小,等待时间长短不同。完成后,使用命令 ll 查看备份文件,界面查看到备份文件 test.sql ,完成备份。
[root@iZuf638xyasua2twjq2zgqZ ~]# mysqldump -uroot -p test >test.sql Enter password: [root@iZuf638xyasua2twjq2zgqZ ~]# ll total 4 -rw-r--r-- 1 root root 1245 Feb 14 13:42 test.sql
返回 Linux 界面,执行如下命令,将 test.sql 导入数据库。界面显示 Enter password ,输入 MySQL 数据库的登录密码 00000000 。
说明:其中参数 -D 是指定数据库为test。[root@iZuf638xyasua2twjq2zgqZ ~]# mysql -uroot -p -Dtest<test.sql Enter password: [root@iZuf638xyasua2twjq2zgqZ ~]#
还有一种导入方法:输入命令:mysql -uroot -p12345678 ,进入 MySQL 数据库。输入 use test; ,连接数据库 test ,输入 source /root/test.sql; ,将 test.sql 导入数据库 test ,全部出现 Query OK ,则表示数据库导入成功。
mysql -uroot -p00000000 use test; source /root/test.sql;
常用SQL
本小节将主要介绍基本的 SQL 语句,数据的增删查改等。
若当前不是在 Mysql 数据库的命令界面,请执行命令:mysql -uroot -p00000000,登录到 Mysql 数据库命令行界面。否则,请忽略此操作。
# mysql -uroot -p00000000
然后,在Mysql中,执行命令 use test; ,连接 test 数据库。界面提示 Database changed ,表示现在使用的数据库为 test 数据库。
mysql> use test; Database changed
执行命令 create table test1 (id int,name char(20)); ,创建一张表,表名为 test1 。test1 表有两列:id 和 name。其中,id 的数据类型为 int,name 的数据类型为 char,且字符长度为 20。
说明:mysql 命令执行完成,页面会提示 Query OK 。mysql> create table test1 (id int,name char(20)); Query OK, 0 rows affected (0.01 sec)
执行命令 insert into test1 values(1,"zhangsan"); ,插入一条数据:此条数据的第一列 id 的值为1,第二列 name 的值为zhangsan。
语法:INSERT INTO 表名称 VALUES (值1, 值2,....);mysql> insert into test1 values(1,"zhangsan"); Query OK, 1 row affected (0.01 sec)
执行命令 select * from test1; ,查看 test1 表中的全部数据信息。此时,用户可以查看到新插入的一行数据: id 的值为 1 , name 的值为 zhangsan 。
mysql> select * from test1; +------+----------+ | id | name | +------+----------+ | 1 | zhangsan | +------+----------+ 1 row in set (0.00 sec) mysql> select name from test1; +----------+ | name | +----------+ | zhangsan | +----------+ 1 row in set (0.00 sec)
- 语法1:SELECT * FROM 表名称; //查询表中的所有列的数据信息
- 语法2:SELECT 列名称 FROM 表名称; //查询表中的指定列的数据信息
执行命令 update test1 set name = "lisi" where id =1; ,更新 test1 表中的数据,也就是,将所有 id 为 1 的 name 值均修改为 lisi 。
mysql> update test1 set name = "lisi" where id =1; Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from test1; +------+------+ | id | name | +------+------+ | 1 | lisi | +------+------+ 1 row in set (0.00 sec) mysql>
语法:UPDATE 表名称 SET 列名 = 值 WHERE 表名称 = 值;
执行命令 delete from test1 where id =1; ,删除 test1 表中,所有 id 值为 1 的数据。
mysql> delete from test1 where id =1; Query OK, 1 row affected (0.00 sec) mysql> select * from test1; Empty set (0.00 sec) mysql>
执行命令 drop table test1; 删除名为 test1 的数据表。
语法:DROP TABLE 表名称mysql> drop table test1; Query OK, 0 rows affected (0.01 sec) mysql> show tables; Empty set (0.01 sec)
执行命令 drop database test; ,删除名为 test 的数据库。
语法:DROP DATABASE 数据库名称mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | | test | +--------------------+ 5 rows in set (0.00 sec) mysql> drop database test; Query OK, 0 rows affected (0.00 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.00 sec) mysql>
2月15日 动手实战-如何在云端创建MySQL数据库
1、现有数据库查看
登录本地部署的MySQL数据库实验环境,并查看本地MySQL源数据库中的信息。
- 远程登录到 云产品资源 中的 MySQL源数据库 ECS实例。
运行如下命令,登录到ECS实例的MySQL数据库:
mysql -u root -p123456
通过如下操作,查看源数据库bakery、其中的表customer和product,以及表中的数据。
1)执行如下命令,查看数据库信息。
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | bakery | | mysql | | test | +--------------------+ 4 rows in set (0.00 sec)
2)执行如下命令,切换数据库为bakery:
mysql> use bakery; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql>
3)执行如下命令,查看表中数据:
mysql> show columns from customer; +-------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+-------+ | customer_id | int(11) | NO | PRI | NULL | | | name | varchar(255) | YES | | NULL | | +-------------+--------------+------+-----+---------+-------+ 2 rows in set (0.00 sec) mysql> show columns from customer; +-------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+-------+ | customer_id | int(11) | NO | PRI | NULL | | | name | varchar(255) | YES | | NULL | | +-------------+--------------+------+-----+---------+-------+ 2 rows in set (0.00 sec) mysql> select * from customer; +-------------+---------+ | customer_id | name | +-------------+---------+ | 1 | Marty1 | | 2 | Marty2 | | 3 | Marty3 | | 4 | Marty4 | | 5 | Marty5 | | 6 | Marty6 | | 7 | Marty7 | | 8 | Marty8 | | 9 | Marty9 | | 10 | Marty10 | | 11 | Marty11 | | 12 | Marty12 | | 13 | Marty13 | | 14 | Marty14 | | 15 | Marty15 | | 16 | Marty16 | | 17 | Marty17 | | 18 | Marty18 | | 19 | Marty19 | | 20 | Marty20 | +-------------+---------+ 20 rows in set (0.00 sec) mysql> select * from customer; +-------------+---------+ | customer_id | name | +-------------+---------+ | 1 | Marty1 | | 2 | Marty2 | | 3 | Marty3 | | 4 | Marty4 | | 5 | Marty5 | | 6 | Marty6 | | 7 | Marty7 | | 8 | Marty8 | | 9 | Marty9 | | 10 | Marty10 | | 11 | Marty11 | | 12 | Marty12 | | 13 | Marty13 | | 14 | Marty14 | | 15 | Marty15 | | 16 | Marty16 | | 17 | Marty17 | | 18 | Marty18 | | 19 | Marty19 | | 20 | Marty20 | +-------------+---------+ 20 rows in set (0.00 sec)
2、上云迁移
- 登录到阿里云RDS管理控制台
- 顶部导航栏处点击【产品与服务】,在主页面的【数据库】条目下找到【云数据库RDS版】,点击进入阿里云RDS管理控制台。
- 点击左侧的【实例列表】,在实例列表页面,选择云产品资源提供的 地域,然后点击目标实例右侧的【管理】进入RDS实例的管理控制台。
- 通过如下步骤,进入==数据库账号==创建页面:
1)在RDS实例的管理页面,点击左侧栏的【账号管理】,进入数据库账号管理页面。
2)在【用户账号】页面,点击左侧的【创建账号】。填写如下信息,完成数据库账号创建:
1)数据库账号:请根据 输入框 下端的 命名规则 ,输入 数据库账号名称,例如:lab_user 。
2)账号类型:选择【普通账号】。
3)密码 :请根据 输入框 下端的 密码规则 ,输入 密码,例如:Passw0rd 。
4)确认密码:再次输入创建的密码。
5)完成如上信息后,点击【确定】。
- 通过如下操作步骤,进入数据库创建页面:
1)点击左侧栏的【数据库管理】,进入数据库管理页面。2)在右侧的【数据库管理】页面,点击左上角的【创建数据库】,进入创建页面。
- 在弹出的创建页面中,添加如下信息:
1)数据库(DB)名称:请根据 输入框 下端的 命名规则 ,输入 数据库名称,例如:lab_db 。
2)支持字符集:默认设为 utf8 。
3)授权帐号:选择新建数据库账号,例如lab_user。
4)完成如上配置信息后,点击底部的【创建】,完成数据库的创建。
5)在【数据库管理】页面中,等待1分钟左右,可以查看到数据库 lab_db 的 数据库状态 为 运行中 ,且 绑定账号 为 新建数据库账号 lab_user 。
- 进入数据传输服务DTS。
1)复制下方地址,在FireFox浏览器打开新页签,粘贴并访问数据传输控制台。在提示对话框中,单击忽略。2)在左侧控制台,单击数据迁移。
3)在数据迁移页面,迁移任务列表选择华东1(杭州),单击配置迁移任务。
- 配置迁移任务,按照如下步骤,输入 源库信息 的配置信息:
实例类型:选择 有公网IP的自建数据库 。
实例地区: 选择 云产品资源 中分配的 地域 ,例如:华东1 。
数据库类型:选择 MySQL 。
主机名或IP地址:输入 云产品资源 中分配的 MySQL源数据库 ECS实例的 弹性IP。端口:使用默认端口号 3306
数据库账号:输入ECS上自建MySQL的 数据库账号 ,root;数据库密码:自建MySQL的访问密码,123456
完成如上配置后,点击右侧的 【测试连接】 ,测试自建MySQL数据库的连通性,若显示 测试通过 ,证明连接成功。否则,请检查如上配置信息是否正确。 - 按照如下步骤,完成 目标库信息 的配置信息:
1)实例类型:选择 RDS实例
2)实例地区:选择 实验资源 中分配的 地域 ,例如:华东1
3)RDS实例ID :选择 实验资源 中提供的 目标数据库 的 实例ID
4)数据库账号:输入RDS实例中新建的 数据库账号 lab_user ;数据库密码:新建数据库的密码 Passw0rd 。
5)完成如上配置后,点击右侧的 测试链接 ,测试RDS账号的连通性,若显示 测试通过 ,证明连接成功。否则,请检查如上配置信息是否正确。
6)完成如上的配置后,点击右下角的【 授权白名单并进入下一步 】。
- 通过如下步骤,配置迁移任务的 迁移类型及列表:
1)点击左侧 迁移对象 中的本地MySQL数据库中的bakery
2)点击 >
3)数据库 bakery 移动到 已选择对象 的列表中。
4)完成如上配置后,点击右下角的【 预检查并启动】 。
- 等待30秒钟左右,完成预检查,检查结果为 预检查通过100% ,点击 【下一步】 。
说明:若预检查未通过,请根据错误提示和如上的操作步骤,核对迁移任务的配置是否正确。
- 此时,页面迁移任务的状态为 迁移中 ,等待3-4分钟,状态变为 已完成 。
3、数据库迁移结果确认
- 顶部导航栏处点击【产品与服务】,在主页面的【数据库】条目下找到【云数据库RDS版】,点击进入阿里云RDS管理控制台。
- 在 实例列表 界面中,点击右上角的【登录数据库】,进入数据库管理登录界面。
在弹出的页面中,输入如下的信息:
- 网络地址:端口:请输入 云产品资源 中,RDS 目标数据库 提供的 链接地址 以及端口号 3306。
例如:提供的RDS 链接地址为 rm-uf6l90d950j1o7890.mysql.rds.aliyuncs.com,则输入信息为:rm-uf6l90d950j1o7890.mysql.rds.aliyuncs.com:3306
- 用户名:输入新建数据库账号 lab_user
- 密码:输入新建数据库密码 Passw0rd
完成后,点击【登录】。(忽略RAM授权)
- 如下图,进入数据库管理页面,证明数据库迁移成功。
2月16日 动手实战-基础学习之MySQL数据库基础
使用GROUP BY、HAVING和ORDER BY等进行分组查询。
使用CREATE TABLE语句创建数据表。将以下语句复制到SQLConsole页签中,然后单击【执行】。
CREATE TABLE `student` (
`sid` int(11) NOT NULL,
`sname` varchar(30) DEFAULT NULL,
`sage` int(11) DEFAULT NULL,
`ssex` varchar(8) DEFAULT NULL,
PRIMARY KEY (`sid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into `student`(`sid`,`sname`,`sage`,`ssex`) values
(1005,'xiaohua',19,'0'),
(1004,'xiaohong',18,'0'),
(1003,'wangwu',18,'1'),
(1002,'lisi',17,'1'),
(1001,'zhangsan',18,'1');
CREATE TABLE `sc` (
`sid` int(11) NOT NULL,
`cid` int(11) NOT NULL,
`score` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into `sc`(`sid`,`cid`,`score`) values
(1001,101,75),
(1001,102,85),
(1002,101,65),
(1002,102,95),
(1003,101,65),
(1003,102,95),
(1004,101,80),
(1004,102,80),
(1005,101,75),
(1005,102,85);
CREATE TABLE `course` (
`cid` int(11) NOT NULL,
`cname` varchar(30) DEFAULT NULL,
`tid` int(11) DEFAULT NULL,
PRIMARY KEY (`cid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into `course`(`cid`,`cname`,`tid`) values
(102,'yuwen',2),
(101,'shuxue',1);
CREATE TABLE `teacher` (
`tid` int(11) NOT NULL,
`tname` varchar(30) DEFAULT NULL,
PRIMARY KEY (`tid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into `teacher`(`tid`,`tname`) values
(2,'liulaoshi'),
(1,'wanglaoshi');
执行成功后,单击【刷新】查看创建的数据表。
- 查询所有同学的学号和成绩。 将以下SQL语句复制到SQLConsole页签中,然后单击【执行】。
查询所有同学的学号和成绩。 将以下SQL语句复制到SQLConsole页签中,然后单击【执行】。
# 使用WHERE s. sid = sc.sid 来消除笛卡尔积。
SELECT s.sid ,s.sname ,c.score FROM student AS s ,sc AS c WHERE s.sid = c.sid ;
- 查询语文成绩在80以上同学。 将以下SQL语句复制到SQLConsole页签中,然后单击【执行】。
SELECT a.score,
b.cname,
s.sname
FROM sc as a,
course AS b,
student AS s
WHERE a.cid= b.cid
AND s.sid= a.sid
AND a.cid= 102
AND a.score> 80
- 查询语文成绩比数学成绩高的同学。 将以下SQL语句复制到SQLConsole页签中,然后单击【执行】。
SELECT a.sid,
a.score,
s.sname
FROM(
SELECT sid, score
FROM sc
WHERE cid= "102") a,
(
SELECT sid, score
FROM sc
WHERE cid= "101") b,
student as s
WHERE a.score > b.score
AND a.sid= b.sid
AND s.sid= a.sid
2月17日 动手实战-最佳应用实践之使用RDS MySQL和ECS搭建个人博客
部署环境
本教程使用Apache作为后端服务器,本节介绍安装Apache服务及其扩展包、以及安装PHP程序。
- 在实验室页面右侧,单击单击 图标,切换至Web Terminal。
- 在ECS服务器上,执行以下命令,安装Apache服务及其扩展包。
yum -y install httpd httpd-manual mod_ssl mod_perl mod_auth_mysql
- 执行以下命令,启动Apache服务。
systemctl start httpd.service
- 打开浏览器输入ECS服务器的公网IP,如果显示如下图的测试页面表示Apache服务安装成功。
- WordPress是使用PHP语言开发的博客平台。参考以下操作安装PHP。
a. 执行以下命令,安装PHP。
yum -y install php php-mysql gd php-gd gd-devel php-xml php-common php-mbstring php-ldap php-pear php-xmlrpc php-imap
b. 执行以下命令,创建PHP测试页面。
echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php
c. 执行以下命令,重启Apache服务。
systemctl restart httpd
d. 打开浏览器,访问http://<ECS公网IP>/phpinfo.php,显示如下页面表示PHP安装成功。
安装和配置WordPress
完成上述环境搭建后,参考本节安装WordPress以及连接到RDS数据库。
- 执行以下命令,安装WordPress。
yum -y install wordpress
- 修改WordPress配置文件。
a. 执行以下命令,修改wp-config.php指向路径为绝对路径。
# 进入/usr/share/wordpress目录。
cd /usr/share/wordpress
# 修改路径。
ln -snf /etc/wordpress/wp-config.php wp-config.php
# 查看修改后的目录结构。
ll
b. 执行以下命令,移动WordPress到Apache根目录。
# 在Apache的根目录/var/www/html下,创建一个wp-blog文件夹。
mkdir /var/www/html/wp-blog
mv * /var/www/html/wp-blog/
c. 执行以下命令,修改wp-config.php配置文件。
- database_name_here为之前步骤中创建的数据库名称,本示例为wordpress。
- username_here为之前步骤中创建的数据库用户名,本示例为test_user。
- password_here为之前步骤中创建的数据库登录密码,本示例为Password1213。
- 数据库地址为RDS的连接地址(在RDS管理控制台 实例详情 页查看或者开通资源后再左侧资源栏列表中查看RDS连接地址)。
sed -i 's/database_name_here/wordpress/' /var/www/html/wp-blog/wp-config.php
sed -i 's/username_here/test_user/' /var/www/html/wp-blog/wp-config.php
sed -i 's/password_here/Password1213/' /var/www/html/wp-blog/wp-config.php
sed -i 's/localhost/数据库地址/' /var/www/html/wp-blog/wp-config.php
sed -i 's/localhost/rm-uf626530wswun513u/' /var/www/html/wp-blog/wp-config.php
d. 执行以下命令,查看配置文件信息是否修改成功。
- 执行以下命令,重启Apache服务。
systemctl restart httpd
- 初始化WordPress。
a. 打开浏览器并访问http://<ECS公网IP>/wp-blog/wp-admin/install.php。
b. 设置您的站点名称、管理员用户名和密码,然后单击Install WordPress完成WordPress初始化。