[goal title="进度条："][item check="true"] 基本的select语句 [/item][item check="true"] 运算符 [/item][item check="true"] 排序与分页 [/item][item check="true"] 多表查询 [/item][item check="false"] 多表查询练习 [/item][item check="true"] 单行函数 [/item][item check="true"] 聚合函数 [/item][item check="true"] 子查询 [/item] [item progress="99%"] 当前进度[/item] [/goal]# 数据> [font color="#2F4F4F"] > > 所使用的数据表均打包成数据库，下方安装文章内提供。 > > [/font] > > ↓↓↓↓↓[post cid="689" cover="" size=""/]> ↑↑↑↑↑ > > 以下所有查询操作记得要先进数据库后操作！！## And 1.基本的select语句[scode type="yellow" size="small"]### And 1.1.【题目】1. 查询员工12个月的工资总和，并起别名为ANNUAL SALARY 2. 查询employees表中去除重复的job_id以后的数据 3. 查询工资大于12000的员工姓名和工资 4. 查询员工号为176的员工的姓名和部门号 5. 显示表 departments 的结构，并查询其中的全部数据[/scode]#### And 1.1.1.查询员工12个月的工资总和，并起别名为ANNUAL SALARY```mysql select employee_id,last_name,salary*12 "ANNUAL SALARY" from employees; ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/3032310783.png)#### And 1.1.2.查询employees表中去除重复的job_id以后的数据```mysql select distinct job_id from employees; ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/1357916311.png)#### And 1.1.3.查询工资大于12000的员工姓名和工资```mysql select last_name,salary from employees where salary>12000; ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/2195429631.png)#### And 1.1.4.查询员工号为176的员工的姓名和部门号```mysql select last_name,department_id from employees where employee_id=176; ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/350459894.png)#### And 1.1.5.显示表 departments 的结构，并查询其中的全部数据```mysql desc departments; select * from departments; ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/3118930042.png)![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/3405628445.png)## And 2.运算符[scode type="green" size="small"]### And 2.1.【题目】1. 选择工资不在5000到12000的员工的姓名和工资 2. 选择在20或50号部门工作的员工姓名和部门号 3. 选择公司中没有管理者的员工姓名及job_id 4. 选择公司中有奖金的员工姓名，工资和奖金级别 5. 选择员工姓名的第三个字母是a的员工姓名 6. 选择姓名中有字母a和k的员工姓名 7. 显示出表 employees 表中 first_name 以 'e'结尾的员工信息 8. 显示出表 employees 部门编号在 80-100 之间的姓名、工种 9. 显示出表 employees 的 manager_id 是 100,101,110 的员工姓名、工资、管理者id[/scode]#### And 2.1.1.选择工资不在5000到12000的员工的姓名和工资```mysql select last_name,salary from employees where salary12000; select last_name,salary from employees where salary not between 5000 and 12000; ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/2899378446.png)#### And 2.1.2.选择在20或50号部门工作的员工姓名和部门号```mysql select last_name,department_id from employees where department_id=20 or department_id=50; select last_name,department_id from employees where department_id in(20,50); ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/3747958796.png)#### And 2.1.3.选择公司中没有管理者的员工姓名及job_id```mysql select last_name,job_id from employees where manager_id is null; ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/183040953.png)#### And 2.1.4.选择公司中有奖金的员工姓名，工资和奖金级别```mysql select last_name,salary,commission_pct from employees where commission_pct is not null; ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/713569480.png)#### And 2.1.5.选择员工姓名的第三个字母是a的员工姓名```mysql select last_name from employees where last_name like "__a%"; ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/1206943420.png)#### And 2.1.6.选择姓名中有字母a和k的员工姓名```mysql select last_name from employees where last_name like '%a%k%' or last_name like '%k%a%'; ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/907423179.png)#### And 2.1.7.显示出表 employees 表中 first_name 以 'e'结尾的员工信息```mysql select employee_id,first_name,last_name from employees where first_name like "%e"; ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/3618263521.png)#### And 2.1.8.显示出表 employees 部门编号在 80-100 之间的姓名、工种```mysql select last_name,job_id from employees where department_id between 80 and 100; ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/589959446.png)#### And 2.1.9.显示出表 employees 的 manager_id 是 100,101,110 的员工姓名、工资、管理者id```mysql select last_name,salary from employees where manager_id in(100,101,110); ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/3884173079.png)## And 3.排序与分页[scode type="red" size="small"]### And 3.1.【题目】1. 查询员工的姓名和部门号和年薪，按年薪降序,按姓名升序显示 2. 选择工资不在 8000 到 17000 的员工的姓名和工资，按工资降序，显示第21到40位置的数据 3. 查询邮箱中包含 e 的员工信息，并先按邮箱的字节数降序，再按部门号升序[/scode]#### And 3.1.1.查询员工的姓名和部门号和年薪，按年薪降序,按姓名升序显示```mysql select last_name,department_id,salary*12 annual_sal from employees order by annual_sal desc, last_name asc; ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/558340776.png)#### And 3.1.2.选择工资不在 8000 到 17000 的员工的姓名和工资，按工资降序，显示第21到40位置的数据```mysql select last_name,salary from employees where salary not between 8000 and 17000 order by salary desc limit 20,20; ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/2088950518.png)#### And 3.1.3.查询邮箱中包含 e 的员工信息，并先按邮箱的字节数降序，再按部门号升序```mysql select last_name,email,department_id from employees where email like '%e%' order by LENGTH(email) desc, department_id asc; ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/433109866.png)## And 4.多表查询[scode type="share" size="small"]### And 4.1.【题目】1. 显示所有员工的姓名，部门号和部门名称。 2. 查询90号部门员工的job_id和90号部门的location_id 3. 选择所有有奖金的员工的 last_name , department_name , location_id , city 4. 选择city在Toronto工作的员工的 last_name , job_id , department_id , department_name 5. 查询员工所在的部门名称、部门地址、姓名、工作、工资，其中员工所在部门的部门名称为’Executive’ 6. 选择指定员工的姓名，员工号，以及他的管理者的姓名和员工号，结果类似于下面的格式employees Emp# manager Mgr#kochhar 101 king 100 7. 查询哪些部门没有员工 8. 查询哪个城市没有部门 9. 查询部门名为 Sales 或 IT 的员工信息[/scode]#### And 4.1.1.显示所有员工的姓名，部门号和部门名称。```mysql select last_name, e.department_id, department_name from employees e left outer join departments s d ON e.`department_id` = d.`department_id`; ```![请输入图片描述](https://www.zmzaxg.top/usr/uploads/2023/10/770993547.png)#### And 4.1.2.查询90号部门员工的job_id和90号部门的location_id```mysql select job_id,location_id from employees e join departments d ON e.`department_id`=d.`departmentnt_id` where e.`department_id`=90; select job_id,location_id from employees e,departments d where e.`department_id`=d.`department__id` AND e.`department_id`=90; ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/1764189965.png)#### And 4.1.3.选择所有有奖金的员工的 last_name , department_name , location_id , city```mysql select last_name,department_name,d.location_id,city from employees e LEFT outer Join departmentts d ON e.`department_id`=d.`department_id` LEFT outer Join locations l ON d.`location_id`=l.`locationn_id` where e.`commission_pct` is not NULL; ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/357780860.png)#### And 4.1.4.选择city在Toronto工作的员工的 last_name , job_id , department_id , department_name```mysql select last_name,job_id,e.department_id,d.department_name from employees e LEFT outer Join depaartments d ON e.`department_id`=d.`department_id` LEFT outer Join locations l ON d.`location_id`=l.`loocation_id` where city='Toronto'; select last_name,job_id,e.department_id,department_name from employees e,departments d,locations l where e.`department_id`=d.`department_id` AND d.`location_id`=l.`location_id` AND l.city='Torontoo'; ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/3549763243.png)#### And 4.1.5.查询员工所在的部门名称、部门地址、姓名、工作、工资，其中员工所在部门的部门名称为’Executive’```mysql ##同上 select department_name,street_address,last_name,job_id,salary from employees e,departments d,locations l where e.`department_id`=d.`department_id` AND d.`location_id`=l.`location_id` And d.`departtment_name`='Executive'; ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/3828861028.png)#### And 4.1.6.选择指定员工的姓名，员工号，以及他的管理者的姓名和员工号，结果类似于下面的格式\employees|Emp#|manager|Mgr#\\kochhar|101|king|100\| employees | Emp# | manager | Mgr# | | :-------: | :--: | :-----: | :--: | | kochhar | 101 | king | 100 |```mysql select emp.last_name employees,emp.employee_id "Emp#",mgr.last_name manager,mgr.employee_id "Mgr#" from employees emp LEFT outer Join employees mgr ON mgr.`employee_id`=emp.`manager_id`; ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/670175113.png)#### And 4.1.7.查询哪些部门没有员工```mysql select d.department_id,d.department_name from departments d LEFT outer Join employees e ON e.`departmedepartment_id`=d.`department_id` where e.`department_id` is null; select d.department_id,d.department_name from departments d where not EXISTS( select * from employees e where e.`department_id`=d.`department_id` ); ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/2292640495.png)#### And 4.1.8.查询哪个城市没有部门```mysql select l.location_id,l.city from locations l LEFT outer Join departments d ON l.`location_id`=d.`location_id` where d.`location_id` is null; ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/3392028600.png)#### And 4.1.9.查询部门名为 Sales 或 IT 的员工信息```mysql select employee_id,last_name,department_name from employees e,departments d where e.`department_id`=d.`department_id` AND d.`department_name` in ('Sales','IT'); select employee_id,last_name,department_name from employees e LEFT outer Join departments d ON e.`department_id`=d.`department_id` where d.`department_name` in ('Sales','IT'); ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/3783370221.png)### And 4.2.【练习】暂定。## And 5.单行函数### And 5.1.【题目】[scode type="red" size="small"]1. 显示系统时间(注：日期+时间) 2. 查询员工号，姓名，工资，以及工资提高百分之20%后的结果（new salary） 3. 将员工的姓名按首字母排序，并写出姓名的长度（length） 4. 查询员工id,last_name,salary，并作为一个列输出，别名为OUT_PUT 5. 查询公司各员工工作的年数、工作的天数，并按工作年数的降序排序 6. 查询员工姓名，hire_date , department_id，满足以下条件：雇用时间在1997年之后，department_id为80 或 90 或110, commission_pct不为空 7. 查询公司中入职超过10000天的员工姓名、入职时间 8. 做一个查询，产生下面的结果：` earns monthly but wants `| Dream Salary | | :-----------------------------------------: | | **King earns 24000 monthly but wants 7200** | 9. 使用case-when，按照下面的条件：job grade AD_PRES A ST_MAN B IT_PROG C SA_REP D ST_CLERK E产生下面的结果：| Last_name | job_id | Grade | | :-------: | :-----: | :---: | | King | AD_PRES | A |[/scode]#### And 5.1.1.显示系统时间(注：日期+时间)```mysql SELECT NOW() FROM DUAL; ```![请输入图片描述](https://www.zmzaxg.top/usr/uploads/2023/10/1849259266.png)#### And 5.1.2.查询员工号，姓名，工资，以及工资提高百分之20%后的结果（new salary）```mysql SELECT employee_id, last_name, salary, salary * 1.2 "new salary" FROM employees; ```![请输入图片描述](https://www.zmzaxg.top/usr/uploads/2023/10/4157876955.png)#### And 5.1.3.将员工的姓名按首字母排序，并写出姓名的长度（length）```mysql SELECT last_name, LENGTH(last_name) FROM employees ORDER BY last_name DESC; ```![请输入图片描述](https://www.zmzaxg.top/usr/uploads/2023/10/2909023181.png)#### And 5.1.4.查询员工id,last_name,salary，并作为一个列输出，别名为OUT_PUT```mysql SELECT CONCAT(employee_id, ',' , last_name , ',', salary) OUT_PUT FROM employees; ```![请输入图片描述](https://www.zmzaxg.top/usr/uploads/2023/10/1515430244.png)#### And 5.1.5.查询公司各员工工作的年数、工作的天数，并按工作年数的降序排序```mysql SELECT DATEDIFF(SYSDATE(), hire_date) / 365 worked_years, DATEDIFF(SYSDATE(),hire_date) worked_days FROM employees ORDER BY worked_years DESC; ```![请输入图片描述](https://www.zmzaxg.top/usr/uploads/2023/10/318968098.png)#### And 5.1.6.查询员工姓名，hire_date , department_id，满足以下条件：雇用时间在1997年之后，department_id为80 或 90 或110, commission_pct不为空```mysql SELECT last_name, hire_date, department_id FROM employees #WHERE hire_date >= '1997-01-01' #WHERE hire_date >= STR_TO_DATE('1997-01-01', '%Y-%m-%d') WHERE DATE_FORMAT(hire_date,'%Y') >= '1997' AND department_id IN (80, 90, 110) AND commission_pct IS NOT NULL ```![请输入图片描述](https://www.zmzaxg.top/usr/uploads/2023/10/4111710989.png)#### And 5.1.7.查询公司中入职超过10000天的员工姓名、入职时间```mysql SELECT last_name,hire_date FROM employees #WHERE TO_DAYS(NOW()) - to_days(hire_date) > 10000; WHERE DATEDIFF(NOW(),hire_date) > 10000; ```![请输入图片描述](https://www.zmzaxg.top/usr/uploads/2023/10/2080015661.png)#### And 5.1.8.做一个查询，产生下面的结果：```mysql SELECT CONCAT(last_name, ' earns ', TRUNCATE(salary, 0) , ' monthly but wants ', TRUNCATE(salary * 3, 0)) "Dream Salary" FROM employees; ```![请输入图片描述](https://www.zmzaxg.top/usr/uploads/2023/10/1432988400.png)#### And 5.1.9.使用case-when，按照下面的条件：```mysql SELECT last_name Last_name, job_id Job_id, CASE job_id WHEN 'AD_PRES' THEN 'A' WHEN 'ST_MAN' THEN 'B' WHEN 'IT_PROG' THEN 'C' WHEN 'SA_REP' THEN 'D' WHEN 'ST_CLERK' THEN 'E' ELSE 'F' END "grade" FROM employees; ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/1533974532.png)## And 6.聚合函数### And 6.1.【题目】[scode type="share" size="small"]1. where子句可否使用组函数进行过滤? 2. 查询公司员工工资的最大值，最小值，平均值，总和 3. 查询各job_id的员工工资的最大值，最小值，平均值，总和 4. 选择具有各个job_id的员工人数 5. 查询员工最高工资和最低工资的差距（DIFFERENCE） 6. 查询各个管理者手下员工的最低工资，其中最低工资不能低于6000，没有管理者的员工不计算在内 7. 查询所有部门的名字，location_id，员工数量和平均工资，并按平均工资降序 8. 查询每个工种、每个部门的部门名、工种名和最低工资[/scode]#### And 6.1.1.where子句可否使用组函数进行过滤?不能#### And 6.1.2.查询公司员工工资的最大值，最小值，平均值，总和```mysql select max(salary),min(salary),avg(salary),sum(salary) from employees; ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/193891628.png)#### And 6.1.3.查询各job_id的员工工资的最大值，最小值，平均值，总和```mysql select job_id,max(salary),min(salary),avg(salary),sum(salary) from employees grooup by job_id; ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/2748510669.png)#### And 6.1.4.选择具有各个job_id的员工人数```mysql select job_id,COUNT(*) from employees group by job_id; ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/3616586354.png)#### And 6.1.5.查询员工最高工资和最低工资的差距（DIFFERENCE）```mysql select max(salary),min(salary),max(salary)-min(salary) DIFFERENCE from employees; ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/2205988719.png)#### And 6.1.6.查询各个管理者手下员工的最低工资，其中最低工资不能低于6000，没有管理者的员工不计算在内```mysql select manager_id,min(salary) from employees where manager_id is not null group by manager_id having min(salary)>6000; ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/3194676263.png)#### And 6.1.7.查询所有部门的名字，location_id，员工数量和平均工资，并按平均工资降序```mysql select department_name,location_id,count(employee_id),avg(salary) from employees e right Join departments d ON e.`department_id`=d.`department_id` group by departmentt_name,location_id order by avg(salary) desc; ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/588261607.png)#### And 6.1.8.查询每个工种、每个部门的部门名、工种名和最低工资```mysql select department_name,job_id,min(salary) from employees e RIGHT outer Join deparartments d ON e.`department_id`=d.`department_id` group by department_name,job_id; ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/2375870204.png)## And 7.子查询### And 7.1.【题目】[scode type="blue" size="small"]1. 查询和Zlotkey相同部门的员工姓名和工资 2. 查询工资比公司平均工资高的员工的员工号，姓名和工资。 3. 选择工资大于所有JOB_ID = 'SA_MAN'的员工的工资的员工的last_name, job_id, salary 4. 查询和姓名中包含字母u的员工在相同部门的员工的员工号和姓名 5. 查询在部门的location_id为1700的部门工作的员工的员工号 6. 查询管理者是King的员工姓名和工资 7. 查询工资最低的员工信息: last_name, salary 8. 查询平均工资最低的部门信息 9. 查询平均工资最低的部门信息和该部门的平均工资（相关子查询） 10. 查询平均工资最高的 job 信息 11. 查询平均工资高于公司平均工资的部门有哪些? 12. 查询出公司中所有 manager 的详细信息 13. 各个部门中 最高工资中最低的那个部门的 最低工资是多少? 14. 查询平均工资最高的部门的 manager 的详细信息: last_name, department_id, email, salary 15. 查询部门的部门号，其中不包括job_id是"ST_CLERK"的部门号 16. 选择所有没有管理者的员工的last_name 17. 查询员工号、姓名、雇用时间、工资，其中员工的管理者为 'De Haan' 18. 查询各部门中工资比本部门平均工资高的员工的员工号, 姓名和工资（相关子查询） 19. 查询每个部门下的部门人数大于 5 的部门名称（相关子查询） 20. 查询每个国家下的部门个数大于 2 的国家编号（相关子查询）[/scode]#### And 7.1.1.查询和Zlotkey相同部门的员工姓名和工资```mysql select last_name,salary from employees where department_id=( select department_id from employees where last_name="Zlotkey" ); ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/1524181237.png)#### And 7.1.2.查询工资比公司平均工资高的员工的员工号，姓名和工资。```mysql select employee_id,last_name,salary from employees where salary>( select avg(salary) from employees ); ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/2241915199.png)#### And 7.1.3.选择工资大于所有JOB_ID = 'SA_MAN'的员工的工资的员工的last_name, job_id, salary```mysql select last_name,job_id,salary from employees where salary>ALL( select salary from employees where job_id="SA_MAN" ); ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/2291180080.png)#### And 7.1.4.查询和姓名中包含字母u的员工在相同部门的员工的员工号和姓名```mysql select employee_id,last_name from employees where department_id=ANY( select DISTINCT department_id from employees where last_name like "%u%" ); ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/3300945559.png)#### And 7.1.5.查询在部门的location_id为1700的部门工作的员工的员工号```mysql select employee_id from employees where department_id in ( select department_id from departments where location_id=1700 ); ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/704483308.png)#### And 7.1.6.查询管理者是King的员工姓名和工资```mysql select last_name,salary from employees where manager_id in ( select employee_id from employees where last_name="King" ); ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/1952776253.png)#### And 7.1.7.查询工资最低的员工信息: last_name, salary```mysql select last_name,salary from employees where salary=( select min(salary) from employees ); ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/962196294.png)#### And 7.1.8.查询平均工资最低的部门信息```mysql SELECT d.* FROM departments d,( SELECT department_id,AVG(salary) avg_S FROM employees GROUP BY department_id ORDER BY avg_S ASC ) dd WHERE dd.department_id=d.department_id LIMIT 0,1; ##嵌入语句使用 group by 将平均工资按照的department_id(部门id)聚合分组，以部门的平均工资asc降序排列，使用别名表将departments表依照嵌入查询的别名表dd排序，limit 0,1 取升序中的第一行数据。 ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/11/1774716662.png)![image.png](https://www.zmzaxg.top/usr/uploads/2023/11/2799904344.png)#### And 7.1.9.查询平均工资最低的部门信息和该部门的平均工资（相关子查询）```mysql SELECT d.*,dd.avg_S FROM departments d,( SELECT department_id,AVG(salary) avg_S FROM employees GROUP BY department_id ORDER BY avg_S ASC ) dd WHERE dd.department_id=d.department_id LIMIT 0,1; ##在上方的语句d.*后加上dd别名表的平均工资字段列 ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/11/1662963663.png)![image.png](https://www.zmzaxg.top/usr/uploads/2023/11/3625454602.png)#### And 7.1.10.查询平均工资最高的 job 信息```mysql SELECT j.* FROM jobs j,( SELECT job_id, AVG(salary) FROM employees GROUP BY job_id ORDER BY AVG(salary) DESC ) e WHERE j.job_id=e.job_id LIMIT 0,1; ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/11/735596306.png)![image.png](https://www.zmzaxg.top/usr/uploads/2023/11/1988763063.png)#### And 7.1.11.查询平均工资高于公司平均工资的部门有哪些?```mysql SELECT department_id FROM employees WHERE department_id IS NOT NULL GROUP BY department_id HAVING AVG(salary)>( SELECT AVG(salary) FROM employees ); ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/11/1032144231.png)![image.png](https://www.zmzaxg.top/usr/uploads/2023/11/3846685696.png)#### And 7.1.12.查询出公司中所有 manager 的详细信息```mysql SELECT employee_id, last_name, salary FROM employees WHERE employee_id IN(SELECT DISTINCT manager_id FROM employees);SELECT e.employee_id, e.last_name, e.salary FROM employees e JOIN employees ee WHERE e.employee_id=ee.manager_id;SELECT employee_id, last_name, salary FROM employees e1 WHERE EXISTS ( SELECT * FROM employees e2 WHERE e2.manager_id = e1.employee_id); ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/11/1071161282.png)![image.png](https://www.zmzaxg.top/usr/uploads/2023/11/3128694530.png)#### And 7.1.13.各个部门中 最高工资中最低的那个部门的 最低工资是多少?```mysql SELECT MIN(salary) FROM employees WHERE department_id=( SELECT department_id FROM employees GROUP BY department_id HAVING MAX(salary)=( SELECT MIN(max_S) FROM ( SELECT MAX(salary) max_S FROM employees GROUP BY department_id ORDER BY department_id ) tabale_max_S ) ); ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/11/866319198.png)![image.png](https://www.zmzaxg.top/usr/uploads/2023/11/130168591.png)#### And 7.1.14.查询平均工资最高的部门的 manager 的详细信息: last_name, department_id, email, salary```mysql SELECT last_name, department_id, email, salary FROM employees WHERE employee_id IN( SELECT DISTINCT manager_id FROM employees e,( SELECT department_id, AVG(salary) avg_S FROM employees GROUP BY department_id ORDER BY avg_S DESC LIMIT 0,1 ) ee WHERE e.department_id=ee.department_id ); ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/11/2957497255.png)![image.png](https://www.zmzaxg.top/usr/uploads/2023/11/1218401464.png)#### And 7.1.15.查询部门的部门号，其中不包括job_id是"ST_CLERK"的部门号```mysql SELECT department_id FROM departments WHERE department_id NOT IN ( SELECT department_id FROM employees WHERE job_id="ST_CLERK" ); ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/11/1126238324.png)![image.png](https://www.zmzaxg.top/usr/uploads/2023/11/2195220076.png)#### And 7.1.16.选择所有没有管理者的员工的last_name```mysql SELECT last_name FROM employees e WHERE NOT EXISTS( SELECT * FROM employees ee WHERE e.manager_id=ee.employee_id ); ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/11/353229241.png)![image.png](https://www.zmzaxg.top/usr/uploads/2023/11/1288043202.png)#### And 7.1.17.查询员工号、姓名、雇用时间、工资，其中员工的管理者为 'De Haan'```mysql SELECT employee_id, last_name, hire_date, salary FROM employees WHERE manager_id = ( SELECT employee_id FROM employees WHERE last_name="De Haan" ); ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/11/839109191.png)![image.png](https://www.zmzaxg.top/usr/uploads/2023/11/3068180868.png)#### And 7.1.18.查询各部门中工资比本部门平均工资高的员工的员工号, 姓名和工资（相关子查询）```mysql SELECT employee_id, last_name, salary FROM employees e,( SELECT department_id,AVG(salary) avg_S FROM employees GROUP BY department_id ) ee WHERE e.department_id=ee.department_id AND e.salary>ee.avg_S; ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/11/921863779.png)![image.png](https://www.zmzaxg.top/usr/uploads/2023/11/2412995424.png)#### And 7.1.19.查询每个部门下的部门人数大于 5 的部门名称（相关子查询）```mysql SELECT department_name, department_id FROM departments d WHERE 5
## And 1.获取RPM包自建服务器暂时拆了，不提供自建备份下载，自行前往[mysql.com](https://mysql.com)下载压缩包解压，贴个图：![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/1571074702.png)windows的就安装程序，下载好后双击安装完事，自行研究。解压后的包：![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/833338685.png)将文件上传到linux内![请输入图片描述](https://www.zmzaxg.top/usr/uploads/2023/10/3296316746.png)## And 2.安装mysql以上，可以看到有10个rpm包，安装实际上并不需要全部使用上，当然可以直接使用`rpm -ivh ./*.rpm --nodeps --force`一次性将rpm包全都安装上：![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/3016935075.png)单独安装所需要的包的话就得单个顺序的安装，如下四个包即可：```shell rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/3637258621.png)这里安装时候报错`from install of mysql-community-common-5.7.28-1.el7.x86_64 conflicts with file from package mariadb-libs-1:5.5.68-1.el7.x86_64`，需要先卸载一下`mariadb-libs`组件：这里可以使用`rpm -qa`或者`yum list installed`来查看一下自带相关组件：### And 2.1.卸载组件```shell yum list installed |grep mariadb rpm -qa |grep mariadb ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/2197305135.png)可以使用`yum remove`或者`rpm -ev`来卸载：```shell yum remove mariadb-libs.x86_64 -y ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/169612359.png)查看一下是否卸载完成：![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/2967431592.png)```shell rpm -ev mariadb-libs-5.5.68-1.el7.x86_64 ```这里rpm卸载时候提示`postfix`被需要：`错误：依赖检测失败： libmysqlclient.so.18()(64bit) 被 (已安裝) postfix-2:2.10.1-9.el7.x86_64 需要 libmysqlclient.so.18(libmysqlclient_18)(64bit) 被 (已安裝) postfix-2:2.10.1-9.el7.x86_64 需要`。![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/1396236274.png)这里就先卸载一下`postfix`再卸载`mariadb`：```shell rpm -ev postfix-2:2.10.1-9.el7.x86_64 rpm -ev mariadb-libs-5.5.68-1.el7.x86_64 ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/2585157031.png)### And 2.2.继续单独顺序安装```shell rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/528129952.png)```shell rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/4160872411.png)```shell rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/2617316045.png)```shell rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/2039559602.png)安装完成。。。## And 3.启动、修改、远程mysql安装好后需要先启动一次mysqld服务后才能有默认密码可以先启动添加到开机自启后再重设一下mysql的root用户密码。### And 3.1.添加到开机```shell systemctl status mysqld ```可以看到mysql处于关闭状态。![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/295397817.png)给加一下开机自启再开一下：```shell systemctl enable mysqld systemctl start mysqld systemctl status mysqld ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/2891000499.png)### And 3.2.mysql修改这里将修改mysql的root用户的默认密码，并且修改其可以远程登录访问。以上mysq启动完成后，我们`cat`出mysql的日志文件可以看到mysq安装的默认密码。```shell cat /var/log/mysqld.log ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/1511386721.png)直接全打印出来会有很多内容，可以使用grep检索一下内容：```shell grep password /var/log/mysqld.log ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/618482408.png)由于默认密码有特殊字符会被shell终端解析，所以-p后不输入密码，提示密码输入处输入```shell mysql -uroot -p ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/3661724998.png)登录mysql后先修改一下root的密码：```mysql set password for root@localhost = PASSWORD('123456'); ```这里报错说密码安全策略不符合![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/3469603577.png)先查看一下默认的密码策略：```mysql show variables like "validate_password%"; ```提示需要用`alter uaer`重设一下密码![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/1359903741.png)```mysql alter user root@localhost identified by '123456'; ```同样提示需要遵循密码策略![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/2209657010.png)那就先设个复杂密码，后面再修改就行```mysql set password for root@localhost = PASSWORD('P@ssword1.'); ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/2006866863.png)修改完密码后回到查看密码策略：```mysql show variables like 'validate_password%'; ```可以看到密码策略的设置项，我们要修改的有密码等级`policy`和密码长度`length`![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/1597115971.png)将上面对应的两行记下：`validate_password_policy``validate_password_length`exit退出mysql回到shell终端，编辑`my.cnf`配置：```shell vi /etc/my.cnf ```在“[mysqld]”下加入上面记录的两行，并添加如下图的参数：![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/4262054968.png)保存退出，重启一下mysql服务```shell service mysqld restart ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/3743439224.png)再次登录到mysql查看密码策略设置，可以看到配置生效了：![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/3689320394.png)再次修改密码为：“123456”：![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/1487380586.png)查看一下当前mysql里有哪几个用户：```mysql select host,user,password from mysql.user; ```这里会报没有‘password’列，是因为mysql5.7开始就不再使用`password`来存密码md5，改用`authentication_string`来存储了：```mysql select host,user,authentication_string from mysql.user; ```可以看到现在的root用户只能本地登录![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/1837465836.png)将root的host修改为`%`允许其可以在任意位置登录使用：```mysql update mysql.user set host="%" where user="root"; ```看到root的host变成了`%`即可。![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/1074937024.png)exit退出mysql，重启一下mysql服务![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/1437653136.png)检查一下防火墙有没有关闭```shell systemctl status firewalld.service ```开着防火墙，stop给关一下。![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/3766489086.png)```shell systemctl stop firewalld systemctl status firewalld ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/3760492374.png)## And 3.3.远程连接验证以上完成后到其他可以ping通其的，带有mysql（客户端）环境的设备上连接测试，如果没有环境，可直接到And 4.2.1安装图形化工具连接测试：查看mysql服务器的ip：![请输入图片描述](https://www.zmzaxg.top/usr/uploads/2023/10/1095747746.png)![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/3512540369.png)```cmd mysql -uroot -p123456 -h 192.168.23.228 ```远程连接成功即可。![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/966337609.png)## And 4.导入数据库sql文件### And 4.1.下载sql文件↓↓下载下方zip文件，直接重命名去除`.zip`↓↓→[重命名去掉 ”.zip“ 使用](https://www.zmzaxg.top/usr/uploads/2023/10/2571417792.zip)←### And 4.2.导入sql数据文件这里可以直接使用shell命令导入sql文件到mysql，但这里将使用sql工具导入与使用#### And 4.2.1.安装SQLyog程序自建服务器暂时拆了，不提供，自行前往官网安装#### And 4.2.2.连接mysql在SQLyog首页![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/2178984299.png)在弹出的连接窗口中填入信息ip和密码，测试连接![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/3773409679.png)没有问题就直接连接，可以保存方便下次连接![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/3256053856.png)#### And 4.2.3.导入sql包使用SQLyog连接上mysql后，在数据库过滤器中右击![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/1988202677.png)在弹出窗口选择下载保存好上方sql文件的路径执行操作![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/4180274910.png)![请输入图片描述](https://www.zmzaxg.top/usr/uploads/2023/10/1473025010.png)完成后再次在数据库过滤器右击刷新对象![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/2968165776.png)可以看见多了一个数据库：![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/879055475.png)依次选择展开就可以看到数据表数据表信息和数据了：![image.png](https://www.zmzaxg.top/usr/uploads/2023/10/1068768619.png)
# And 1.前言由于本地服务器访问便捷，就安装桌面版的centos，同时打开远程桌面，后面到哪都可以连上# And 2.正题## And 2.1.安装xrdp这里先前提是你的服务器有桌面，如果没有的话就需要先安装一下桌面软件### 2.1.1.最简单安装在服务器终端登录root用户，使用yum安装就使用就简单的一步到位了，后面有需要的话再补充另外的方法```shell yum --enablerepo=epel -y install xrdp ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/07/1532968023.png)如上方显示就是已安装的了## And 2.2.启动与配置### And 2.2.1.启动~~~shell systemctl start xrdp ~~~![image.png](https://www.zmzaxg.top/usr/uploads/2023/07/3053672488.png)### And 2.2.2.开机启动~~~shell systemctl enable xrdp ~~~![image.png](https://www.zmzaxg.top/usr/uploads/2023/07/276972764.png)### And 2.2.3.开放端口可以使用下方命令在终端上来开放端口~~~shell //开放3389端口 firewall-cmd --permanent --zone=public --add-port=3389/tcp firewall-cmd --reload ~~~我下方直接使用宝塔面板的端口防火墙去添加端口开放，效果是一样的![image.png](https://www.zmzaxg.top/usr/uploads/2023/07/3014234381.png)## And 2.3.测试连接在本地windows电脑上的远程连一下试试![image.png](https://www.zmzaxg.top/usr/uploads/2023/07/3389824548.png)本地没有问题，然后到路由器上将服务器的3389映射到公网的3389上再连一下![image.png](https://www.zmzaxg.top/usr/uploads/2023/07/1243730551.png)正常没有问题就欧克了，后面可以随时随地的连接上服务器的桌面，挂点浏览器或者是桌面应用了。
集 中 实 训 报 告 书报告书文档：主线：linux综合应用实训报告书.pdf备用：linux综合应用实训报告书.pdf一、项目实训的目的实训是教学工作的重要环节，是课堂理论教学的检验和延续，是培养学生实践技能的重要场所。通过实训，使学生能够完成企业Linux服务器的配置、管理与维护。通过实际操作，使学生掌握一定的操作技能，能认真、细致、准确的操作。通过实践过程，培养学生独立思考、独立工作的能力及团队协作精神。二、项目背景B公司包括一个园区网络和一个分支机构，网络拓扑图如下图所示。在园区网络中，大约有500名员工，分支机构大约有100名员工，此外还有一些SOHO员工及出差人员。假定你是该公司的网络管理员，现在公司的网络要进行规划和实施。现有条件如下：公司已租借了一个公网的IP地址100.100.100.10，和ISP提供的一个公网DNS服务器的IP地址100.100.100.200。该公司申请的域名为king.com。园区网络和分支机构使用192.168.0.0网络，并进行必要的子网划分。三、拓扑结构项目总体结构图项目1 搭建VPN服务器项目2 搭建邮件服务器项目3 搭建Web服务器项目4搭建DHCP服务器项目5搭建FTP服务器项目6搭建DNS服务器项目7搭建Samba服务器项目8搭建代理服务器项目9. 搭建NAT服务器四、实训的内容And 4.0.环境VM虚拟机：搭建CentOS7 64位、Windows XPAnd 4.1.centos配置yum源And 4.1.1.备份系统yum文件备份系统自带的yum文件## 进入yum源路径 cd /etc/yum.repos.d/ ## mv剪切重命名备份一下 mv CentOS-Base.repo CentOS-Base.repo.backupAnd 4.1.2.下载最新yum源配置文件依上步骤，将文件下载到yum.repos.d路径下这里用的163源，如果有缺失，可以使用阿里或者其他源试试（163源：mirrors.163.com/.help）复制好yum配置文件到centos的yum文件路径下使用wget下载保存wget http://mirrors.163.com/.help/CentOS7-Base-163.repoAnd 4.1.3.yum配置命令And 4.1.3.1.清除缓存yum clean allAnd 4.1.3.2.生成缓存yum makecacheAnd 4.1.3.3.更新本地所有库这里东西多，可能会比较久。有选项的话都选y即可，等待完成...And 4.1.3.4.关闭防火墙及SELinux## 使用service或者systemctl关闭防火墙 [root@localhost yum.repos.d]# service firewalld stop [root@localhost yum.repos.d]# systemctl stop firewalld ## 关闭SELinux setenforce 0And 4.1.3.5.安装epel源yum -y install epel-releaseAnd 4.2.任务1：搭建VPN服务器And 4.2.1.安装ppp服务与pptpd服务yum install -y ppp yum install -y pptpdAnd 4.2.2.配置文件以和用户And 4.2.2.1.配置pptpd文件vi /etc/pptpd.conf正常这里的文件是有内容的，如果进去没有内容，就需要使用chmod给文件权限再重新打开编辑就会有内容。配置内容是定义虚拟网关，分配好ip给客户端使用，保持默认即可直接定位到localip找到下图两行，将前面的“#”号去除，保存退出And 4.2.2.2.配置ppp文件vi /etc/ppp/options.pptpd同上方一样，都是有默认内容的，如果进去没有内容就先给权限然后定位到ms-dns两行，将前面的‘#’去掉，防止ping不通互联网，我这里将首选dns改为114And 4.2.2.3.配置sysctl文件vi /etc/sysctl.conf # 在文件最后加入一行： net.ipv4.ip_forward = 1让服务器允许ip转发内核终端输入sysctl -p检查一下配置是否正确And 4.2.2.4.配置客户端用户vi /etc/ppp/chap-secrets创建一个用户其中：client==账号 service==服务 secret==密码 IP addresses==分配ipAnd 4.2.3.启动VPN服务systemctl start pptpd systemctl enable pptpdAnd 4.2.4.连接VPN服务器提示已连接即可在VPN服务器上使用ifconfig可以看到多了一个ppp0连接And 4.3.任务2：搭建邮箱服务器该任务配置前需要[font color="#ff0000"]先完善DNS服务器[/font]的配置，请定位到[font color="#ff0000"]And 4.7.任务6[/font]And 4.3.1.安装sendmail服务yum install -y sendmailAnd 4.3.2.配置发信服务器vi /etc/mail/sendmail.mc查找到下方图片这行，修改Addr为服务器的ip查找修改下面图上的local地址为DNS服务器上配置过的域名And 4.3.3.生成sendmail配置文件这里生成配置文件将使用m4来配置生成m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf这里出现了报错再使用yum安装一下sendmail-cfyum install -y sendmail-cf安装好后再次使用m4来生成配置就可以了：And 4.3.4.启动sendmail服务[root@localhost ~]# systemctl enable sendmail [root@localhost ~]# systemctl start sendmail [root@localhost ~]# systemctl status sendmailAnd 4.3.5.创建邮箱账户密码均为用户名And 4.3.6.发信测试其他的邮箱以及收发信服务器均依照配置的mail.zmzaxg.top填写然后我们发送一封邮件试试看And 4.3.7.安装mailx在服务器上安装mailx查看接收的邮件yum -y install mailx安装好了之后使用命令查看接收到的邮件mail -u user02可以看到刚刚已发送列表的两封邮件And 4.3.8.安装dovecotyum install -y dovecotAnd 4.3.9.修改配置文件And 4.3.9.1.修改主配置文件vi /etc/dovecot/dovecot.conf进入编辑文件，找到下图这行，去掉前面的注释，让服务器支持pop以及imapAnd 4.3.9.2.修改认证文件vi /etc/dovecot/conf.d/10-auth.conf编辑文件，找到下面图片这行，去掉注释，yes改no，配置开启认证And 4.3.9.3.修改加密配置vi /etc/dovecot/conf.d/10-ssl.conf进入将ssl修改为no不进行加密And 4.3.9.4.修改邮箱文件配置vi /etc/dovecot/conf.d/10-mail.conf修改下图这行路径为想要保存的位置，我这里保存默认And 4.3.9.5.创建邮箱路径mkdir -p /var/mail/.imap/INBOXAnd 4.3.10.启动dovecot[root@localhost mail]# systemctl start dovecot [root@localhost mail]# systemctl enable dovecotAnd 4.3.11.测试在xp系统使用cmd终端telnet mail.zmzaxg.top 110And 4.4.任务3：搭建Web服务器And 4.4.1.安装httpdyum install -y httpdAnd 4.4.2.启动Apache服务[root@localhost mail]# systemctl start httpd [root@localhost mail]# systemctl enable httpdAnd 4.4.3.创建Web站点目录和文件mkdir /var/www/web01 mkdir /var/www/web02 echo "内容" >> /var/www/web01/index.htmlAnd 4.4.4.修改配置设置站点 vi /etc/httpd/conf/httpd.conf进入文件，找到Require all denied（拒绝所有主机访问）改为Require all granted（允许所有主机访问）在后面编辑站点配置<VirtualHost 172.168.1.7> DocumentRoot /var/www/web01 ServerName web01.zmzaxg.top </VirtualHost> <VirtualHost 172.168.1.8> DocumentRoot /var/www/web02 ServerName web02.zmzaxg.top </VirtualHost>保存完成切换目录cd /etc/httpd/conf.d ## 编辑创建文件 vi virtual.conf内容与上方VirtualHost相同：And 4.4.5.编辑网卡这里使用图形化编辑，如下图：如果编辑网卡配置文件，需要进入到/etc/sysconfig/network-scripts/目录内打开在用的网卡文件，配置可以参照如下：子网16可以使用255.255.0.0对网卡配置修改后重启一下network：service network restart配置好网卡到实体主机的cmd终端ping一下两个ip，保证均可通行再服务器上也可以使用ip address来查看：这里如果有问题可以修改配置文件的默认选项，在后面加个“0”：添加完重启再试试，正常是可以直接成功应用And 4.4.6.重启httpd服务与测试systemctl restart httpd确保服务器的dns服务开启动，关闭防火墙到前面的win xp系统打开到此，Web服务器以及完善，后面我们去修改dns服务器的域名正反向解析，就可以实现域名访问：vi named.zmzaxg.topvi named.172.168.1配置完成后再重新启动DNS服务器systemctl restart named在连接了DNS服务器的xp系统上就能通过域名访问：And 4.5.任务4：搭建DHCP服务器And 4.5.1.安装DHCP包yum -y install dhcpAnd 4.5.2.修改配置文件vi /etc/dhcp/dhcpd.conf内容可以参照下方：subnet 172.168.0.0 netmask 255.255.0.0 { # 此 DHCP 服务分配的 IP 地址范围 range 172.168.1.100 172.168.1.200; # DHCP服务器IP option domain-name-servers 172.168.1.7; # 指定默认网关 option routers 172.168.1.1; # 默认租约时间 default-lease-time 600; # 指定最大租用周期 max-lease-time 7200; }其中虚拟机的NAT网络配置如下：And 4.5.3.启动DHCP服务与测试启动[root@localhost named]# systemctl start dhcpd [root@localhost named]# systemctl enable dhcpd测试到xp系统cmd查看未更新的ip之前分配的ip是172.168.1.9，我们重新连接一下网卡，让它自带获取：成功经DHCP服务器分配到ip，然后ping一下baidu.com看看：And 4.6.任务5：搭建FTP服务器And 4.6.1.安装vsftpdyum install -y vsftpdAnd 4.6.2.创建用户和目录上面搭建邮件服务器时候已创建过两个测试账号了，如果你需要添加可以再加入新的用户：useradd [用户名] passwd [用户名]##设置密码创建ftp目录[root@localhost named]# mkdir -p /data/ftp_data /data/ftp_data/anon [root@localhost named]# chmod o+w /data/ftp_data/And 4.6.3.修改配置文件vi /etc/vsftpd/vsftpd.conf配置文件有大量注释行，如果很乱的话可以先用mv备份配置文件，再使用grep -v "#" vsftpd.conf.bak > vsftpd.conf，将注释清除。直接编辑也是可行的：[root@localhost data]# mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak [root@localhost data]# grep -v "#" /etc/vsftpd/vsftpd.conf.bak > /etc/vsftpd/vsftpd.conf完成后进入编辑就不会一堆注释行了vi /etc/vsftpd/vsftpd.conf在配置文件中加入：###################################### anon_root=/data/ftp_data/anon anon_upload_enable=YES anon_mkdir_write_enable=YES local_root=/data/ftp_data chroot_local_user=YES allow_writeable_chroot=YES ######################################然后再到/etc/selinux/config查看SELINUX配置是否为disable，不是的话需要修改保存，重载一下文件或者重启服务器vi /etc/selinux/configAnd 4.6.4.重启和测试[root@dns ~]# systemctl restart vsftpd [root@dns ~]# systemctl enable vsftpd测试可以到实体主机或者xp虚拟机上的文件资源管理器中的目录栏输入ftp://[服务器ip]：And 4.7.任务6：搭建DNS服务器And 4.7.1.安装bind服务yum install -y bindAnd 4.7.2.配置文件And 4.7.2.1.DNS主配置vi /etc/named.conf进入配置文件，将下图的listen-on处的ip修改成服务器ip或者anyAllow-query的locla修改成anyAnd 4.7.2.2.域配置# 编辑named.rfcxxx.zones文件 vi /etc/named.rfc1912.zones进入配置文件，在文件的最后方加入自定义的配置：############################################# zone "zmzaxg.top" IN { type master; file "named.zmzaxg.top"; allow-update { none; }; }; zone "1.168.172.in-addr.arpa" IN { type master; file "named.172.168.1"; allow-update { none; }; };And 4.7.2.3.配置正/反向解析复制的文件名要与上方zones的文件相对应## cd进入named目录，拷贝两个新的配置文件 cd /var/named/ [root@localhost named]# cp -p named.localhost named.zmzaxg.top [root@localhost named]# cp -p named.localhost named.172.168.1## 编辑配置文件 vi named.zmzaxg.topvi named.172.168.1[font color="ff0000"]注！！上方图片配置中的SOA后面的“@”需要去除，属于错误配置，如果有其他错误，可以使用“vim”编辑配置可方便查找错误。[/font]And 4.7.3.启动和测试And 4.7.3.1.启动[font color="ff0000"]注！！如果你在启动命令后提示如下图，表示正反向配置文件配置内容存在问题，请检查！[/font]启动后如下：And 4.7.3.2.测试在VM虚拟机安装好win xp，在网络属性的tcp/ip中配置dns为上面的dns服务器ip打开xp系统的cmd终端，输入nslookup查看输出结果可以看到是dns服务器的dns.zmzaxg.top然后在nslookup的“>”后面继续输入set type=mx zmzaxg.top nslookup就会在zmzaxg.top域上查找关于MX的DNS服务器解析：使用ping命令以及浏览器访问一下百度确保正常访问即可And 4.8.任务7：搭建samba服务器And 4.8.1.安装sambayum install -y sambaAnd 4.8.2.启动samba服务systemctl start smb systemctl status smb systemctl enable smbAnd 4.8.3.创建目录共享[root@mail opt]# mkdir manager market factory [root@mail opt]# touch manager/ market/ factory/ [root@mail opt]# chmod -R 777 *And 4.8.4.创建用户组和用户创建用户[root@mail opt]# useradd toolll [root@mail opt]# useradd mike [root@mail opt]# useradd admin [root@mail opt]# useradd cali创建用户组[root@mail opt]# groupadd market [root@mail opt]# groupadd factory将用户分别加入到用户组：[root@mail opt]# gpasswd -a toolll market [root@mail opt]# gpasswd -a cali market [root@mail opt]# gpasswd -a mike factory [root@mail opt]# gpasswd -a admin factoryAnd 4.8.5.本地用户转SMB用户[root@mail opt]# smbpasswd -a zmzaxg [root@mail opt]# smbpasswd -a toolll [root@mail opt]# smbpasswd -a mike [root@mail opt]# smbpasswd -a admin [root@mail opt]# smbpasswd -a caliAnd 4.8.6.修改配置文件[root@mail opt]# vi /etc/samba/smb.conf在配置最后加入：#################################################################################### [manager] # SMB服务器共享文件夹的名 comment = manager document # 描述 path = /opt/manager # 共享目录路径 valid users = admin,zmzaxg # 可访问用户/用户组 writable = yes # 可读写权限 [market] # SMB服务器共享文件夹的名 comment = market staff document # 描述 path = /opt/market # 共享目录路径 valid users = @market,zmzaxg,admin # 可访问用户/用户组 writable = no # 可读写权限 write list = @market,zmzaxg # 限制其用户可读写，其外用户只可读 [factory] # SMB服务器共享文件夹的名 comment = factory staff document # 描述 path = /opt/factory # 共享目录路径 valid users = @factory,admin,zmzaxg # 可访问用户/用户组 writable = no # 可读写权限 write list = @factory,admin # 限制其外用户只可读 ###################################################################################编辑配置文件时要把注释去除掉，否则配置会不可用：And 4.8.7.重启SMB服务与测试And 4.8.7.1.重启SMB[root@mail opt]# systemctl restart smb[root@mail opt]# systemctl status smbAnd 4.8.7.2.测试打开物理主机或者xp虚拟机的文件管理器连接后如下图：And 4.9.任务8：搭建代理服务器And 4.9.1.安装squid[root@mail ~]# yum -y install squidAnd 4.9.2.修改配置vi /etc/squid/squid.conf进入配置文件编辑定位到http_access deny all，修改为：http_access allow all（配置行后的注释要去除，防止出错）在配置最后面加入：###################################### #缓存相对的用户 cache_effective_user squid #缓存相对的组 cache_effective_group squid #缓存64M的内容 cache_mem 64 MB #禁止下载的超过10MB的文件 reply_body_max_size 10 MB #超过4MB的文件不进行缓存 maximum_object_size 4096 KB #######################################And 4.9.3.启动代理服务器[root@mail ~]# squid [root@mail ~]# systemctl enable squidAnd 4.9.4.配置代理客户端这里用xp虚拟机来配置先进入到控制面板，点开网络选择局域网设置打开代理服务器选项，填写好服务器配置保存即可Ping百度看看And 4.10.任务9：搭建NAT服务器And 4.10.1.载入模块[root@mail ~]# iptables -t filter -F [root@mail ~]# iptables -t nat -F [root@mail ~]# iptables -t mangle -FAnd 4.10.2.设置Web服务器[root@mail ~]# iptables -A FORWARD -i eth0 -p udp --dport 80 -j ACCEPT [root@mail ~]# iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 80 -j SNAT --to-source 202.112.113.112 [root@mail ~]# iptables -t nat -A POSTROUTING -o eth0 -p udp --dport 80 -j SNAT --to-source 202.112.113.112And 4.10.3.设置DNS服务器[root@mail ~]# iptables -A FORWARD -i eth0 -p tcp --dport 53 -j ACCEPT [root@mail ~]# iptables -A FORWARD -i eth0 -p udp --dport 53 -j ACCEPTAnd 4.10.4.设置邮件服务器[root@mail ~]# iptables -A FORWARD -i eth0 -p tcp --dport 25 -j ACCEPT [root@mail ~]# iptables -A FORWARD -i eth0 -p udp --dport 25 -j ACCEPT [root@mail ~]# iptables -A FORWARD -i eth0 -p udp --dport 110 -j ACCEPT [root@mail ~]# iptables -A FORWARD -i eth0 -p tcp --dport 110 -j ACCEPTAnd 4.10.5.设置不回应ICMP封包[root@mail ~]# iptables -t filter -A INPUT -p icmp --icmp-type 8 -j DROP [root@mail ~]# iptables -t filter -A OUTPUT -p icmp --icmp-type 0 -j DROP [root@mail ~]# iptables -t filter -A FORWARD -p icmp --icmp-type 8 -j DROP [root@mail ~]# iptables -t filter -A FORWARD -p icmp --icmp-type 0 -j DROPAnd 4.10.6.防止网络扫描[root@mail ~]# iptables -t filter -A INPUT -p tcp --tcp-flags ALL ALL -j DROP [root@mail ~]# iptables -t filter -A FORWARD -p tcp --tcp-flags ALL ALL -j DROP [root@mail ~]# iptables -t filter -A INPUT -p tcp --tcp-flags ALL NONE -j DROP [root@mail ~]# iptables -t filter -A FORWARD -p tcp --tcp-flags ALL NONE -j DROP [root@mail ~]# iptables -t filter -A FORWARD -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP [root@mail ~]# iptables -t filter -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP [root@mail ~]# iptables -t filter -A FORWARD -p tcp --tcp-flags SYN,RST SYN,RST -j DROPAnd 4.10.7.允许管理员以SSH方式连接到防火墙修改设定[root@mail ~]# iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT [root@mail ~]# iptables -t filter -A INPUT -p udp --dport 22 -j ACCEPTAnd 4.10.8.检测是否连接成功[root@mail ~]# ping baidu.com检查ping通外网检查VPN服务器，邮箱服务器以及Web服务器还有SMB服务器、ftp服务器及其他应用服务器是否正常五、问题汇总1.在配置环境中会出现yum源的软件源失效或者不存在，需要切换有对应软件源的yum源重新生成缓存才能够安装。2.搭建FTP服务器时windows登录上了账户但没有显示文件，需要修改服务器的/etc/selinux/config配置中的SELINUX=enforcing为disable，保存修改后需要重载一下配置文件重启ftp服务器才可以生效3.DNS服务器配置需要认真详阅，是一个很容易出现配置问题的存在。六、收获和体会。在本次的实训周中学习了 Linux 搭建服务的方法和在面对遇到各种报错都应去面对查找各种相关质料去一一解决问题成功搭建服务。在信息时代，不断学习是获得进步的动力。作为一名青年学子更应把学习作 为主要目标。七、参考资料。[zmzaxg｜blog社区 -zmzaxg官方](https://www.zmzaxg.top/)Linux环境下配置DHCP服务器_linux修改dhcp配置文件_mldl_的博客-CSDN博客[sendmail 配置错误：Cannotopen /usr/share/sendmail-cf/m4/cf.m4解决办法_lsfw的博客-CSDN博客](https://blog.csdn.net/haiyang79/article/details/6907224)学生（签名）xxx
## And 1.引文由于上一篇`Mysql相关`文章出现的mysql安装和使用的问题，为了不浪费太多的时间和文章阅读视界，就没有将编译安装mysql写进去，这里就另起一篇编译安装步骤的。## And 2.正文我这边准备了一台刚刚最小化安装的centos，只安装了net-tools方便使用，mysql都是没安装的，当然如果你mysql坏了也建议将mysql相关文件都清理一下再来操作。![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/2583262382.png)### And 2.1.安装环境#### And 2.1.1.安装开发者工具组件```shell yum group list ## 列出组件列表 yum group install "开发工具" 或者用：yum group install "Development Tools" ## 安装开发者工具组件如果不想手动选择安装项可以直接在最后面加参数“-y”来默认选yes ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/2899410049.png)等待开发工具组件安装完成![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/427526874.png)#### And 2.1.2.安装必要依赖包```shell yum -y install gcc gcc-c++ cmake ncurses-devel autoconf bison perl perl-devel openssl openssl-devel ```等待安装完成![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/1596968512.png)### And 2.2.开始编译安装#### And 2.2.1.创建Mysql目录及用户组与用户创建目录```shell mkdir /usr/local/mysql mkdir /usr/local/mysql/data ```创建用户组和用户```shell groupadd mysql ## 创建用户组 useradd -r -g mysql mysql ## 创建用户，-r定为系统账号，-g用为指定用户组；用户组为mysql，用户名为mysql，没有密码 ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/3677354943.png)#### And 2.2.2.下载解压boost包boost库可以来提高编译效率先在/usr/local创建文件夹```shell mkdir -p /usr/local/boost ## -p用于可递进创建，防止boost之前的文件夹不存在时无法创建 cd /usr/local/boost wget https://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz ## 下载boost包，如果失效可以去其他源找找 tar -zxvf boost_1_77_0.tar.gz ## 解压boost包，-z操作gzip格式文件，-x解压操作，-v显示过程，-f显示名称 ```#### And 2.2.3.下载安装Mysql源码包我们到mysql官网：[MySQL](https://www.mysql.com/)![请输入图片描述](https://www.zmzaxg.top/usr/uploads/2023/05/336056190.png)下拉找到社区版进入![请输入图片描述](https://www.zmzaxg.top/usr/uploads/2023/05/2248890523.png)![请输入图片描述](https://www.zmzaxg.top/usr/uploads/2023/05/9775966.png)![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/3415969306.png)![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/1290310200.png)进入下载页面拉到后面有一个直接下载链接，右击复制![请输入图片描述](https://www.zmzaxg.top/usr/uploads/2023/05/2767062829.png)然后到你的一个下载路径里`~注意！！ 这里避个坑：我们虚拟机配置就那样，不配装8.0的mysql，这里我就慢慢磨了好久，上面和下方有些图片都可以看到有好些带mysql8，因为图片基本一样就没有修改了，重要的命令啥的都已经修正~````shell cd /下载/mysql/ wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.42.tar.gz ```![请输入图片描述](https://www.zmzaxg.top/usr/uploads/2023/05/2932620002.png)下载完后解压一下```shell tar -zxvf mysql-5.7.42.tar.gz ```![请输入图片描述](https://www.zmzaxg.top/usr/uploads/2023/05/2855384109.png)再使用mv将文件夹移动到其他保存的路径上，随之进入这个文件夹里```shell mv /下载/mysql/mysql-5.7.42 /usr/local/mysql cd /usr/local/mysql/mysql-5.7.42/ ```生成`Makefile````shell ## 这里注意一下 ## -DWITH_BOOST=[你上面boost包解压后的路径] 这里使用1.15版本的boost即可，其他版本可能会太低或者太高不支持 ## -DFORCE_INSOURCE_BUILD=1 这里是强制执行，可以先去掉这行，如果有提示需要再添加 ## -DWITH_SYSTEMD=1 这条是来控制是否安装mysqld_safe ### 其他详细可以用 sudo cmake .. -LH 查看cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ -DSYSCONFDIR=/etc \ -DSYSTEMD_PID_DIR=/usr/local/mysql \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ -DMYSQL_DATADIR=/usr/local/mysql/data \ -DWITH_BOOST=/usr/local/boost ## -DWITH_SYSTEMD=1 \ ## -DFORCE_INSOURCE_BUILD=1### ------------------------------------------- ### ## CMAKE参数说明： 注意： \后面不能有空格 ## -DCMAKE_INSTALL_PREFIX=/usr/local/mysql //安装路径 ## -DMYSQL_DATADIR=/usr/local/mysql/data //数据文件存放位置 ## -DSYSCONFDIR=/etc //my.cnf路径 ## -DWITH_MYISAM_STORAGE_ENGINE=1 //支持MyIASM引擎 ## -DWITH_INNOBASE_STORAGE_ENGINE=1 //支持InnoDB引擎 ## -DWITH_MEMORY_STORAGE_ENGINE=1 //支持Memory引擎 ## -DWITH_READLINE=1 //快捷键功能(我没用过) ## -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock //连接数据库socket路径 ## -DMYSQL_TCP_PORT=3306 //端口 ## -DENABLED_LOCAL_INFILE=1 //允许从本地导入数据 ## -DWITH_PARTITION_STORAGE_ENGINE=1 //安装支持数据库分区 ## -DEXTRA_CHARSETS=all //安装所有的字符集 ## -DDEFAULT_CHARSET=utf8 //默认字符 ## -DDEFAULT_COLLATION=utf8_general_ci //设置默认校对规则 ### ------------------------------------------- ### ```在这里生成步骤上，可能会有缺少部分环境，可以根据提示内容配置一下，直到配置没有问题：![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/2934444842.png)执行完毕就可以继续使用`make`编译安装```shell ## ############################################# ## ## ！！注意，编译过程将是漫长的，耐心等待即可！！ ## ## ############################################# ##make ## 编译make test ## 测试make install ## 安装 ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/2325893280.png)![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/692245842.png)编译完成测试全都通过，然后就直接`make install`来安装![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/3561236792.png)来检查一下mysql的文件![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/3596848569.png)给里面添加一个data目录：mkdir data再移动一下源文件：~~~shell mv ./mysql-5.7.42 /usr/local/mysql ~~~这里再给文件权限分配一下```shell chown -R mysql:mysql /usr/local/mysql chmod -R 755 /usr/local/mysql ## 上面已经提前创建好了用户组和用户，这里直接给权限就行cd /usr/local/mysql/ chown -R mysql:mysql . chown -R mysql:mysql /usr/local/mysql/data ## 进入mysql目录内再分配一下 ```这里我们先进入到mysql的bin目录~~~shell cd /usr/local/mysql/bin/ ~~~然后保证$file/mysql/data目录内容是空的，使用下面这条命令```shell ./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql ```![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/3468668618.png)cd /usr/local/mysql/ chown -R mysql:mysql . chown -R mysql:mysql /usr/local/mysql/data进入mysql目录内再分配一下#### And 2.2.4.将Mysql添加到系统服务然后再创建一个`my-default.cnf`文件，有可能你自带是有的，我这里是没有````shell vi support-files/my-default.cnf## 内容如下，如果有不同路径就改改 [client] port = 3306 socket = /tmp/mysql.sock[mysqld] port = 3306 socket = /tmp/mysql.sock user = mysqlbasedir = /usr/local/mysql datadir = /usr/local/mysql/data pid-file = /usr/local/mysql/mysql.pidlog_error = /usr/local/mysql/mysql-error.log slow_query_log = 1 long_query_time = 1skip-external-locking key_buffer_size = 32M max_allowed_packet = 1024M table_open_cache = 128 sort_buffer_size = 768K net_buffer_length = 8K read_buffer_size = 768K read_rnd_buffer_size = 512K myisam_sort_buffer_size = 8M thread_cache_size = 16 query_cache_size = 16M tmp_table_size = 32M performance_schema_max_table_instances = 1000explicit_defaults_for_timestamp = true #skip-networking max_connections = 500 max_connect_errors = 100 open_files_limit = 65535log_bin=mysql-bin binlog_format=mixed server_id = 232 expire_logs_days = 10 early-plugin-load = ""default_storage_engine = InnoDB innodb_file_per_table = 1 innodb_buffer_pool_size = 128M innodb_log_file_size = 32M innodb_log_buffer_size = 8M innodb_flush_log_at_trx_commit = 1 innodb_lock_wait_timeout = 50[mysqldump] quick max_allowed_packet = 16M[mysql] no-auto-rehash[myisamchk] key_buffer_size = 32M sort_buffer_size = 768K read_buffer = 2M write_buffer = 2M ````使用cp命令，拷贝替换到etc下的my.cnf```shell cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf ```检查一下是否成功![image.png](https://www.zmzaxg.top/usr/uploads/2023/05/3713097943.png)#### And 2.2.5.配置Mysql切换到bin目录```shell cd /usr/local/mysql/bin/ ```执行mysql~~~shell ./mysql -u root -p ## 登录set password for root@localhost = password('yourpass'); ## 修改密码 ~~~#### And 2.2.6.配置mysql命令可执行和脚本启动```shell #当前修改环境变量更稳定可靠的方式应该是在**/etc/profile.d文件夹内添加新的命令号，耦合性低，便于管理。例如将mysql添加进入环境变量，在该文件夹内新增mysql.sh**文件 export MYSQL_HOME=/usr/local/mysql export PATH=$PATH:$MYSQL_HOME/bincp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql source /etc/profile service mysql start ```
首先得有一台linux系统的机子，只要是linux系统，操作几乎一至然后给机器加上将要添加的硬盘在linux的命令行上输入# fdisk -l ##查看系统上的所有磁盘信息和分区我这里刚好有一台服务器要加两块硬盘上去用，也就直接使用宝塔带的WEB终端来演示图片可以看到两块硬盘都是有一个分区，正常的连接上分别是sdb1和sdc1，同时他们的路径分别在/dev/sdb跟/dev/sdc这些信息我们后面都会用上然后再用# df -h来看一下系统挂载磁盘的情况图片可以看到就只有装系统时候挂载上的sda1，没有另外的sdb1和sdc1正经操作通过上面可以了解到我们系统上的磁盘情况，现在就是重新创建分区，格式化，以及挂载到系统上来正常使用的操作了。。。1.创建磁盘分区我们先使用# fdisk /dev/sdb //对其中磁盘为sdb进行操作在图片中可以看到系统fdisk工具有提供命令的说明英语好的自便，我也是去复制过来的表格命令说明a设置可引导标记b编辑 bsd 磁盘标签c设置 DOS 操作系统兼容标记d删除一个分区1显示已知的文件系统类型。82 为 Linux swap 分区，83 为 Linux 分区m显示帮助菜单n新建分区0建立空白 DOS 分区表p显示分区列表q不保存退出s新建空白 SUN 磁盘标签t改变一个分区的系统 IDu改变显示记录单位V验证分区表w保存退出X附加功能（仅专家）一：删除磁盘（硬盘）原来的分区依照上面表格，我们将会用到指令d来删除我们硬盘上自带的sdb1分区以及另一个sdc磁盘上的sdc1分区，当然，如果你的硬盘没有分区存在，就没有这个必要，可以直接看第二步了。在上面图片上的冒号输入d等待下个冒号出来，就是预设成功，我们再输入w回车来保存退出，完成后，系统会自动退回到终端命令行可以看到上面图片的回显，正常只有一个分区，会自动预设删除接着我们再fdisk -l看一下现在sdb磁盘上的分区现在磁盘sdb上已经没有刚才的sdb1分区了，就是一个没有分区的磁盘二.创建建新的磁盘分区使用fdisk命令# fdisk /dev/sdb在冒号后输入我们表格说的n来给硬盘创建一个新的分区选择上，我们使用p来创建一个主分区，因为只需要一个分区，所以分区号直接用1，然后选择创建的分区开始位置和结束位置，正常回车默认就是最大空间来分区然后就是w来保存退出可以看到一个创建了一个新的sdb1了三.格式化磁盘分区使用mkfs来格式化你需要的格式，linux上正常都使用ext4那么就是# mkfs.ext4 /dev/sdb1后面跟上分区路径等待格式化完成后会自动退出到终端命令行四.挂载硬盘到系统上面操作完成后，我们就可以来挂载到系统文件夹上来使用我们加上的硬盘如上面这句话，我们需要创建一个文件夹来用于挂载硬盘我这里500G的就准备挂载到跟目录上的KDY目录里面使用# mkdir /KDY //创建目录然后ls看一下然后就可以直接mount挂载到目录里面了# mount /dev/sdb1 /KDY //命令先跟分区路径，再跟挂载路径等待自动退回然后就使用df -l查看看到sdb1成功挂载到/KDY上了，接下来因为硬盘要放在机子里使用，我们还需要设置一下开机自动挂载我们需要在命令行输入blkid获取分区的UUID修改/etc/fstab文件 ；命令如下：# vi /etc/fstab打开后，在最后一行加入以下代码：/dev/sdb1 /KDY ext4 defaults 0 0 //格式需要与硬盘格式相同也可以用上面获取到的分区UUID替换分区路径例如：UUID=[ID] /KDY ext4 defaults 0 0保存退出，然后就是重启测试一下了测试重启后，可以看到硬盘正确挂载了。。。。。。结--
## ==》服务器文件地址：[Docker迁移容器记录.pdf](https://zmzaxg.top/kdy/www_tp/wz/Docker迁移容器记录/Docker迁移容器记录.pdf)《==自建盘地址：[Docker迁移容器记录.pdf]([https://](https://zmzaxg.top/kdy/www_tp/wz/Docker%E8%BF%81%E7%A7%BB%E5%AE%B9%E5%99%A8%E8%AE%B0%E5%BD%95/Docker%E8%BF%81%E7%A7%BB%E5%AE%B9%E5%99%A8%E8%AE%B0%E5%BD%95.pdf))# 点击上面浏览器预览PDFDocker 迁移容器 同文章“安装中兴新支点 linux 系统”一个时间。之前服务器根目录爆满，实在没有办法，只 好重新装一遍系统，但是服务器里面有一个 docker 容器需要导出来。 操作 首先我们连接上 ssh，获取管理员权限，使用命令：docker ps 来查看使用的容器Docker迁移容器记录.pdf 可以看到我是没有在使用的容器的，刚才暂停掉了 下面是打开的回显 记录一下容器名，我这个容器名是 QL 下面就是用 docker 命令来导出，其中回用到 export 命令和参数-o 格式为 Docker export -o [导出的文件名.tar] QL 再下载回来，检查一下是否能正常使用 压缩包文件应该完整，。 下面就是操作导入，顺便检查一下导入是否能正常使用 导入 其中有两条命令可以导入，分别是 ⚫ docker import：丢弃了所有的历史记录和元数据信息，仅保存容器当时的快照状态。在导入的时候 可以重新制定标签等元数据信息。 ⚫ docker load：将保存完整记录，体积较大。 我这里只需要用 load 命令就够了 格式：docker load -I [容器文件压缩包]![image.png](https://www.zmzaxg.top/usr/uploads/2023/04/3748211213.png)