作业要求(PDF)参见这里。
这几天,在整理我的移动硬盘和服务器上的存储的历史文件的时候,发现现在Linux课/云计算课的很多实验内容我在高中早就在RaspberryPi(树莓派)上搭建过实验过。
所以,索性就把每篇我以前做过的实验写成笔记发出来供同学们参考吧(前提是我几年前的笔记文件没删且还找得到)。
其她:想考RedHat(红帽)Linux认证的可以看这篇。
虽然是高中早就做过的学习和实验内容,但还是写一篇吧,水一篇文章。
注1:我的学号尾号是36,除了我本人外,使用如下示例截屏PS交作业均属无效。
注2:老师发的实验作业PPT(PDF)版本非常老旧,许多命令和操作步骤在现在的新版本上会报错,建议按照我的这篇笔记做。
由于我的设备(电脑)为SurfaceGo,开不起虚拟机,将使用云服务器进行实验和作业。
学习环境推荐:VULTR & 阿里云。
环境版本:RedHat RHEL Linux 8 > Apache HTTPD 2.4 + MySQL 8.0 + PHP 8.0 ;
注意:不同版本的命令和需要的代码有一定差别。
1 – 安装并启动MySQL。
yum install wget vim -y
yum install mysql-server mysql -y
systemctl restart mysqld
systemctl enable mysqld
systemctl status mysqld

2 – 防火墙配置(仅限本机和内网可访问数据库)。
注意:如果你和我一样使用直接暴露公网的环境进行学习和实验测试,一定要配置防火墙(或安全组)对敏感端口仅限本机或可信的内网访问。
firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.36.36.0/24" port protocol="tcp" port="3306" accept'
firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.36.36.0/24" port protocol="tcp" port="33060" accept'
firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.36.36.0/24" port protocol="tcp" port="3306" accept' --permanent
firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.36.36.0/24" port protocol="tcp" port="33060" accept' --permanent
3 – 登录数据库并测试(show数据库)。
mysql -h localhost -uroot -p
> <Enter>
> SHOW DATABASES;

4 – 为数据库root用户设置密码。
注意:如果你是直接暴露公网的生产环境,请不要和学习(实验)环境一样使用123456作为密码。
/**
更改密码
*/
> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
/**
测试能否正常登录
*/
mysql -h localhost -uroot -p123456
> SHOW DATABASES;

5 – 创建 kk 用户 和 sts 用户 并授予其 36student 数据库的权限。
/**
kk密码为654321仅限本机登录,sts密码为363636不限制登录主机
*/
/**
创建用户kk并给权限
*/
> CREATE USER 'kk'@'localhost' IDENTIFIED BY '654321';
> GRANT ALL PRIVILEGES ON `36student`.* TO 'kk'@'localhost';
/**
创建用户sts并给权限
*/
> CREATE USER 'sts'@'%' IDENTIFIED BY '363636';
> GRANT ALL PRIVILEGES ON `36student`.* TO 'sts'@'%';


6 – 导入测试数据进行测试。
wget -O /root/testData.mdb https://www.iamsts.cn/Services/SZIIT/2001050336Temporary/users.mdb
/**
root|kk|sts 三个用户均可,都有36student数据库的权限
*/
> CREATE DATABASE 36student;
> USE 36student;
> SOURCE /root/testData.mdb;

7 – 在36student数据库中创建info数据表(字段、类型、长度、引擎 设置要求见作业PDF)。
> USE 36student;
> CREATE TABLE `36student`.`info` (`name` CHAR(10) NOT NULL , `number` CHAR(10) NOT NULL , `score` INT(10) NOT NULL , `address` TEXT NOT NULL ) ENGINE = InnoDB;
> DESCRIBE info;

8 – 随便插入些数据。
> INSERT INTO `info` (`name`, `number`, `score`, `address`) VALUES ('sts', '2001050336', '114514', 'Guangdong');
> INSERT INTO `info` (`name`, `number`, `score`, `address`) VALUES ('zwx', '2101050136', '233333', 'Guangdong');
> SELECT * FROM info;

9 – 创建mysqlDump导出数据备份。
mysqldump 36student -uroot -p>/home/36student.backup.sql
ll /home/ | grep sql

10 – 删除36student数据库。
> DROP DATABASE 36student;
> SHOW DATABASES;

11 – 通过备份出来的文件恢复数据库。
> CREATE DATABASE 36student;
> exit;
mysql 36student -uroot -p</home/36student.backup.sql
> <123456><Enter>
mysql -uroot -p123456
> USE 36student;
> SELECT * FROM info;

12 – 通过PHP在前端Web中以表格形式显示数据库内容。
/**
安装 Apache HTTPD 和 PHP
*/
yum install httpd -y
systemctl restart httpd
systemctl enable httpd
systemctl status httpd
firewall-cmd --zone=public --add-port=80/tcp
firewall-cmd --zone=public --add-port=80/udp
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=80/udp --permanent
yum install php-cli.x86_64 php-common.x86_64 php-dba.x86_64 php-fpm.x86_64 php-embedded.x86_64 php-mysql.x86_64 php-mysqlnd.x86_64 php-xml.x86_64 php-xmlrpc.x86_64 -y
/etc/init.d/php-fpm* restart
/**
在/var/www/html/2001050336HOMEWORK/ 下创建 mysqlTest.php 页面
*/
<center>
<h1>
<br />
<?php
$ConnectSQL = mysqli_connect('localhost','YOUR_USER','YOUR_PASSWORD','YOUR_DB_NAME');
$GetInfo = mysqli_query($ConnectSQL,"SELECT * FROM info;");
echo "<table align=center width=600 border=1 bgcolor=#ACD6FF>";
echo "<TR><TD>Name</TD><TD>Number</TD><TD>Score</TD><TD>Address</TD></TR>";
while($DisplayForm=mysqli_fetch_array($GetInfo)){
echo "<tr><td>";
echo $DisplayForm['name'];
echo "</td><td>";
echo $DisplayForm['number'];
echo "</td><td>";
echo $DisplayForm['score'];
echo "</td><td>";
echo $DisplayForm['address'];
echo "</td></tr>";
};
echo "</table>";
mysqli_close($ConnectSQL);
?>
</h1>
</center>

13 – 测试访问。

14 – 20221111补充:补充题
创建一个mary用户,密码为redhat,仅能本机登录,仅有36student数据库的查询(select)权限
根据导入的数据,密码是fadora的用户名字叫什么
根据导入的数据,多少人名字是John且同时居住在Santa Clara
> CREATE USER 'mary'@'localhost' IDENTIFIED BY 'redhat';
> GRANT SELECT ON `UserData36`.* TO 'mary'@'localhost';


> USE 36student;
> SELECT * FROM u_name JOIN u_passwd WHERE userid=uid AND password="fadora";
> SELECT * FROM u_name JOIN u_loc WHERE userid=uid AND location="Santa Clara" AND firstname="John";

完成。
喵。