MySQL数据库进阶实战

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
数据管理 DMS,安全协同 3个实例 3个月
推荐场景:
学生管理系统数据库
简介: 参加冬季实战营MySQL数据库

创建资源

  1. 在页面左侧,单击 云产品资源 下拉列表,查看本次实验所需资源。
  2. 单击屏幕右侧 创建资源 ,免费创建当前实验所需云产品资源。

说明:

资源创建过程需要1~3分钟。完成实验资源的创建后,您可以在 云产品资源 列表查看已创建的资源信息,例如:IP地址、子用户名称和子用户密码等。

img

\2. MySQL安装与配置

MySQL是一个关系型数据库管理系统,本步骤指导您如何在ECS实例上安装MySQL。

  1. 执行如下命令,更新YUM源。
rpm -Uvh  http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

\2. 执行如下命令,安装MySQL。

yum -y install mysql-community-server --nogpgcheck

\3. 执行如下命令,查看MySQL版本号。

mysql -V

返回结果如下,表示您已成功安装MySQL。

img

\4. 执行如下命令,启动MySQL服务。

systemctl start mysqld

\5. 执行如下命令,设置MySQL服务开机自启动。

systemctl enable mysqld

\6. 配置MySQL的root用户密码。

  1. 执行如下命令,查看/var/log/mysqld.log文件,获取root用户的初始密码。
grep 'temporary password' /var/log/mysqld.log

返回结果如下所示,您可以查看到root用户的初始密码。

img

  1. 执行以下命令,使用root用户登录数据库。
mysql -uroot -p

返回结果如下所示,输入root用户的初始密码。

img

  1. 执行以下命令,修改MySQL的root用户的初始密码。
set global validate_password_policy=0;  #修改密码安全策略为低(只校验密码长度,至少8位)。
ALTER USER 'root'@'localhost' IDENTIFIED BY '12345678';
  1. 执行以下命令,授予root用户远程管理权限。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '12345678';
  1. 输入exit退出数据库。

img

\7. 执行以下命令,使用root用户登录数据库。

mysql -uroot -p12345678

\8. 执行如下命令,创建test数据库。

create database test;

\9. 执行如下命令,查看当前数据库列表。此时,可以看到三个数据库:information_schema ,mysql,performance_schema,sys,test 。

show databases;

注意:进入 mysql 之后,每条命令结尾都要有分号。

img

\10. 执行命令 use mysql;,连接 mysql 数据库。然后执行命令 show tables; ,查看 mysql 数据库中的数据表。使用命令 exit ,退出 MySQL 界面。

use mysql;
show tables; 
exit

img

\11. 返回 Linux 界面,执行如下命令,将名为 test 的数据库备份到当前目录的 test.sql。界面显示 Enter password,输入 MySQL 数据库的登录密码 12345678 。根据备份的数据库大小,等待时间长短不同。完成后,使用命令 ll 查看备份文件,界面查看到备份文件 test.sql ,完成备份。

mysqldump -uroot -p test >test.sql
ll

img

\12. 返回 Linux 界面,执行如下命令,将 test.sql 导入数据库。界面显示 Enter password ,输入 MySQL 数据库的登录密码 12345678 。

说明:其中参数 -D 是指定数据库为test。

mysql -uroot -p -Dtest<test.sql

img

\13. 还有一种导入方法:输入命令:mysql -uroot -p12345678 ,进入 MySQL 数据库。输入 use test; ,连接数据库 test ,输入 source /root/test.sql; ,将 test.sql 导入数据库 test ,全部出现 Query OK ,则表示数据库导入成功。

mysql -uroot -p12345678
use test;
source /root/test.sql;

img

  1. 上云迁移

本小节主要内容:登录本地部署的MySQL数据库实验环境,并查看本地MySQL源数据库中的信息。

\1. 点击右侧img ,切换至Web Terminal,远程登录到 云产品资源 中的 MySQL源数据库 ECS实例。

\2. 运行如下命令,登录到ECS实例的MySQL数据库:

mysql -u root -p123456

img

\3. 通过如下操作,查看源数据库bakery、其中的表customer和product,以及表中的数据。

1)执行如下命令,查看数据库信息。

show databases;

img

2)执行如下命令,切换数据库为bakery:

use bakery;

img

3)执行如下命令,查看表中数据:

show columns from customer;
show columns from product; 
select * from customer;
select * from product;

img

\4. 数据库迁移结果确认

\1. 顶部导航栏处点击【产品与服务】,在主页面的【数据库】条目下找到【云数据库RDS版】,点击进入阿里云RDS管理控制台。

img

\2. 在 实例列表 界面中,点击右上角的【登录数据库】,进入数据库管理登录界面。

img

\3. 在弹出的页面中,输入如下的信息:

  • 网络地址:端口:请输入 云产品资源 中,RDS 目标数据库 提供的 链接地址 以及端口号 3306。

例如:提供的RDS 链接地址为 rm-uf6l90d950j1o7890.mysql.rds.aliyuncs.com,则输入信息为:rm-uf6l90d950j1o7890.mysql.rds.aliyuncs.com:3306

  • 用户名:输入新建数据库账号 lab_user
  • 密码:输入新建数据库密码 Passw0rd

完成后,点击【登录】。(忽略RAM授权)

img

\4. 如下图,进入数据库管理页面,证明数据库迁移成功。

img

第三天

数据库启动与连接

数据库启动与连接

本小节主要介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL。

\1. 通过如下操作步骤,登录阿里云管理控制台,并进入云数据库RDS实例的管理页面。

1) 双击打开桌面 FireFox ESR浏览器,在RAM用户登录框中点击 下一步,复制 云产品资源 列表中 子用户密码 粘贴(lx shell粘贴快捷键ctrl+shift+v,其他地方粘贴是ctrl+v)到浏览器 RAM用户登录界面,即可登录当前子账号。

img

2)复制下方地址,在FireFox浏览器打开新页签,粘贴并访问RDS管理控制台。

https://rdsnext.console.aliyun.com/

3)在左侧导航栏,单击实例列表。

img

4)在【实例列表】页面中,首先,选择 云产品资源 中提供的 地域,然后单击已创建的RDS实例ID,进入实例的管理页面。

img

\2. 在实例详情页,单击左侧导航栏的【账号管理】,然后单击【创建账号】。

img

\3. 参考说明配置账号信息,然后单击【确定】。

  • 数据库账号:输入数据库账号名称,例如:test_user
  • 账号类型:此处选择高级权限账号
  • 密码:设置账号密码,例如:Password1213
  • 确认密码:再次输入密码

\4. 在实例详情页,单击左侧导航栏的【数据库管理】,然后单击【创建数据库】。

img

\5. 参考说明配置数据库信息,然后单击【创建】。

  • 数据库(DB)名称:输入数据库名称,例如:user_db
  • 支持字符集:默认设为utf8
  • 备注说明:非必填。用于备注该数据库的相关信息,便于后续数据库管理,最多支持256个字符

\6. 在数据库管理页面,单击页面右上方的【登录数据库】。

img

\7. 在输入框中,输入刚才创建的用户名和密码,单击【登录】。

登录成功,进入数据管理服务系统DMS。

img

\4. 数据操作

数据操作

本小节主要为大家介绍MySQL中常用的数据查询、删除、更新、插入等基本操作。

\1. 使用CREATE TABLE语句创建一个数据表。将以下语句复制到SQLConsole页签中,然后单击【执行】。

CREATE TABLE `user` (
 `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
 `name` varchar(32) DEFAULT NULL COMMENT 'name',
 `age` int(11) DEFAULT NULL COMMENT 'age',
 `address` varchar(32) DEFAULT NULL COMMENT 'address',
 `sex` tinyint(1) DEFAULT NULL COMMENT 'sex,woman:0,man:1',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

执行成功后,单击【刷新】查看创建的数据表。

img

\2. 插入数据

插入语句说明:

  • table_name(col_name,...)中的字段名列表必须和values(expr,...)字段值列表一致。
  • 如果数据是字符型,必须使用单引号或者双引号。
  • 被AUTO_INCREMENT标记的自动递增的主键,在插入数据时,可以不设置值。

将以下SQL语句复制到SQLConsole页签中,然后单击【执行】。

INSERT INTO USER
       (name, age, address, sex)
VALUES
       ('zhangsan', 21, 'jiangxi', 0),
       ('lisi', 22, 'hubei', 0),
       ('wangwu', 23, 'hunan', 0),
       ('lilei', 24, 'henan', 1),
       ('hanmeimei', 25, 'hebei', 1),
       ('xiaoming', 26, 'shandong', 1),
       ('xiaoli', 27, 'shanxi', 1) ;

img

\3. 查询数据

查询语句格式:

SELECT col_name,...
  FROM table_name
 WHERE where_condition
 GROUP BY col_name,...
HAVING where_condition
 ORDER BY col_name,...
 LIMIT offset,row_count

将以下SQL语句复制到SQLConsole页签中,然后单击【执行】。

SELECT id,name,age,address,sex FROM user;

img

\4. 更新数据

更新语句格式:

UPDATE table_name SET col_name=expr,... WHERE where_condition

将以下SQL语句复制到SQLConsole页签中,然后单击【执行】。

UPDATE `user` SET `age` = 28,`address` = 'sichuan' WHERE `name` = 'xiaoming' ;

img

\5. 删除数据

删除语句格式:

DELETE FROM table_name WHERE where_condition

将以下SQL语句复制到SQLConsole页签中,然后单击【执行】。

DELETE FROM `user` WHERE `name` = 'xiaoming' ;

img

\6. 组合查询

组合查询

本小节主要介绍如何使用GROUP BY、HAVING和ORDER BY等进行分组查询。

\1. 使用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');

执行成功后,单击【刷新】查看创建的数据表。

img

\2. 查询所有同学的学号和成绩。 将以下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 ;

执行结果如下:

img

\3. 查询语文成绩在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

执行结果如下:

img

\4. 查询语文成绩比数学成绩高的同学。 将以下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

执行结果如下:

img

第四天

\2. 创建数据库账号和密码

本节需要使用左侧资源栏提供的子账号登录信息登录阿里云RDS控制台,然后在子账号RDS控制台创建数据库和数据库用户。

1、双击打开虚拟桌面的Firefox ESR浏览器

2、在RAM用户登录框中单击下一步,并复制粘贴页面左上角的子用户密码用户密码输入框,点击登录

3、复制下方地址,在Firefox ESR浏览器打开新页签,粘贴并访问RDS管理控制台。

https://rdsnext.console.aliyun.com/

\4. 单击左侧 [实例列表 ],然后根据资源栏提供的云产品地区选择云产品资源提供的地域。例如:华东 2 (上海)。

img

\5. 在 实例列表页 选择目标实例,在实例右侧操作列,单击 [管理],进入RDS实例详情页。

img

\6. 创建数据库账号。

a. 单击左侧导航栏账号管理,然后单击创建账号。

img

b. 参考说明配置账号信息,然后单击确定。

  • 数据库账号:输入数据库账号名称,例如:test_user
  • 账号类型:此处选择普通账号
  • 密码:设置账号密码,例如:Password1213
  • 确认密码:再次输入密码

img

\7. 创建数据库。

a. 在实例详情页,单击左侧导航栏的 [数据库管理] ,然后单击 [创建数据库]

img

b. 参考说明配置数据库信息,然后单击 [创建 ]

  • 数据库(DB)名称:输入数据库名称,例如:wordpress
  • 支持字符集:默认设为utf8
  • 授权账号:选择上一步新建的数据库账号 test_user
  • 账号类型:默认设置为读写
  • 备注说明:非必填。用于备注该数据库的相关信息,便于后续数据库管理,最多支持256个字符

img

\3. 部署环境

本教程使用Apache作为后端服务器,本节介绍安装Apache服务及其扩展包、以及安装PHP程序。

\1. 在实验室页面右侧,单击单击img 图标,切换至Web Terminal。

\2. 在ECS服务器上,执行以下命令,安装Apache服务及其扩展包。

yum -y install httpd httpd-manual mod_ssl mod_perl mod_auth_mysql

返回类似如下图结果则表示安装成功:

img

\3. 执行以下命令,启动Apache服务。

systemctl start httpd.service

\4. 打开浏览器输入ECS服务器的公网IP,如果显示如下图的测试页面表示Apache服务安装成功。

img

\5. 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://&lt;ECS公网IP>/phpinfo.php,显示如下页面表示PHP安装成功。

img

\4. 安装和配置WordPress

完成上述环境搭建后,参考本节安装WordPress以及连接到RDS数据库。

\1. 执行以下命令,安装WordPress。

yum -y install wordpress

显示如下信息表示安装成功。

img

\2. 修改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

d. 执行以下命令,查看配置文件信息是否修改成功。

cat -n /var/www/html/wp-blog/wp-config.php

修改内容如下图所示:

img

\3. 执行以下命令,重启Apache服务。

systemctl restart httpd

\4. 初始化WordPress。

a. 打开浏览器并访问http://&lt;ECS公网IP>/wp-blog/wp-admin/install.php。

您可以在左侧实验资源栏查看ECS的公网IP。

b. 设置您的站点名称、管理员用户名和密码,然后单击Install WordPress完成WordPress初始化。

img

c. 单击Log In,输入用户名和密码,然后再次单击Log In打开WordPress站点。

img

登录后,您就可以根据需要创建内容进行发布了。至此您已完成WordPress的搭建。

img

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
18天前
|
监控 关系型数据库 MySQL
zabbix agent集成percona监控MySQL的插件实战案例
这篇文章是关于如何使用Percona监控插件集成Zabbix agent来监控MySQL的实战案例。
28 2
zabbix agent集成percona监控MySQL的插件实战案例
|
1月前
|
SQL 存储 NoSQL
Redis6入门到实战------ 一、NoSQL数据库简介
这篇文章是关于NoSQL数据库的简介,讨论了技术发展、NoSQL数据库的概念、适用场景、不适用场景,以及常见的非关系型数据库。文章还提到了Web1.0到Web2.0时代的技术演进,以及解决CPU、内存和IO压力的方法,并对比了行式存储和列式存储数据库的特点。
Redis6入门到实战------ 一、NoSQL数据库简介
|
1月前
|
SQL 数据库
Spring5入门到实战------13、使用JdbcTemplate操作数据库(批量增删改)。具体代码+讲解 【下篇】
这篇文章是Spring5框架的实战教程,深入讲解了如何使用JdbcTemplate进行数据库的批量操作,包括批量添加、批量修改和批量删除的具体代码实现和测试过程,并通过完整的项目案例展示了如何在实际开发中应用这些技术。
Spring5入门到实战------13、使用JdbcTemplate操作数据库(批量增删改)。具体代码+讲解 【下篇】
|
24天前
|
SQL 关系型数据库 MySQL
干货!python与MySQL数据库的交互实战
干货!python与MySQL数据库的交互实战
|
28天前
|
存储 关系型数据库 MySQL
实战!MySQL主从复制一键搭建脚本分享
实战!MySQL主从复制一键搭建脚本分享
28 2
|
1月前
|
SQL 存储 关系型数据库
MySQL备份:mydumper 备份恢复工具生产实战
MySQL备份:mydumper 备份恢复工具生产实战
|
1月前
|
XML 数据库 数据格式
Spring5入门到实战------14、完全注解开发形式 ----JdbcTemplate操作数据库(增删改查、批量增删改)。具体代码+讲解 【终结篇】
这篇文章是Spring5框架的实战教程的终结篇,介绍了如何使用注解而非XML配置文件来实现JdbcTemplate的数据库操作,包括增删改查和批量操作,通过创建配置类来注入数据库连接池和JdbcTemplate对象,并展示了完全注解开发形式的项目结构和代码实现。
Spring5入门到实战------14、完全注解开发形式 ----JdbcTemplate操作数据库(增删改查、批量增删改)。具体代码+讲解 【终结篇】
|
1月前
|
SQL XML Java
Spring5入门到实战------12、使用JdbcTemplate操作数据库(增删改查)。具体代码+讲解 【上篇】
这篇文章是Spring5框架的实战教程,详细讲解了如何使用JdbcTemplate进行数据库的增删改查操作,包括在项目中引入依赖、配置数据库连接池、创建实体类、定义DAO接口及其实现,并提供了具体的代码示例和测试结果,最后还提供了完整的XML配置文件和测试代码。
Spring5入门到实战------12、使用JdbcTemplate操作数据库(增删改查)。具体代码+讲解 【上篇】
|
17天前
|
SQL 安全 数据库
基于SQL Server事务日志的数据库恢复技术及实战代码详解
基于事务日志的数据库恢复技术是SQL Server中一个非常强大的功能,它能够帮助数据库管理员在数据丢失或损坏的情况下,有效地恢复数据。通过定期备份数据库和事务日志,并在需要时按照正确的步骤恢复,可以最大限度地减少数据丢失的风险。需要注意的是,恢复数据是一个需要谨慎操作的过程,建议在执行恢复操作之前,详细了解相关的操作步骤和注意事项,以确保数据的安全和完整。
36 0
|
1月前
|
存储 缓存 运维
优化高并发环境下的数据库查询性能:实战经验与技巧
在高并发环境下,数据库性能往往成为系统瓶颈。本文将深入探讨在高并发场景下优化数据库查询性能的策略与实践,包括索引优化、查询优化、数据库架构设计以及缓存机制的应用。通过对具体案例的分析,读者将能够掌握提升数据库性能的关键技术,从而在面对大规模用户请求时提高系统的响应速度和稳定性。