相信不少小伙伴都发现了,实验楼上线了一种全新的比赛「 楼赛 」。不同于以往所有的OJ或ACM测试,「楼赛」更偏重于实际操作能力和解决问题的能力,模拟真实工作中经常遇到的问题,发现真正有编程能力的人。
第一期的题目为「为新同事创建系统账户」、「修复无法启动的数据库」、「让实验楼网站恢复运行」,都是工作和面试中都经常会碰到的问题,本篇文章将带来这三道题目的答案解析。
当然看答案前,请先来实验楼挑战一下自己~ 本期楼赛的主题是 Linux,涉及 Linux 用户管理、sudo 权限设置、MySQL 及 nginx 排错等知识点。题目难度不大,有过 Linux 运维经验的都可以快速完成。
实验楼研发团队有一禁用词语立的测试服务器,每位同事都在上面拥有一个账号,用来日常开发测试。今天有一位叫楼赛的同事入职,需要你帮他创建新账号。 目标
创建的新账号要求如下:
用户名:lousai
Home 目录:/home/lousai
允许 lousai 使用 SSH 登陆系统
lousai 用户默认使用 zsh
lousai 用户需要 sudo 权限
提示语
我是 shiyanlou,我有 sudo 权限,我用 zsh,我自豪!
知识点
Linux 用户创建及配置
Linux sudo 权限设置
数据库无法启动
新同事小楼在本地搭建的开发环境使用 MySQL 数据库,因为一些误操作无法启动,并且忘记了 MySQL 的 root 密码。
请帮她在右边的实验环境中启动 MySQL 并重设 MySQL 的 root 密码,让她可以登录进去恢复数据。 目标
恢复后的数据库要求如下:
mysql 服务处于运行状态
mysql 的 root 密码重新设置为shiyanlou
提示语
日志!日志!日志!
知识点
MySQL 数据库排错
MySQL root 密码恢复
让实验楼网站恢复运行
小楼这次闯下大祸,不小心把线上的实验楼网站搞挂了。实验楼的网站使用的是 nginx 服务,目前无法启动。
请尝试在最短的时间内让实验楼恢复访问。你所节省的每一分钟,都能挽留上百名实验楼的用户。
注意:实验楼网站页面目录为/home/shiyanlou/page。 目标
恢复访问的要求如下:
nginx 服务处于运行状态
在实验环境中使用 Firefox 浏览器访问本地http://localhost可以进入实验楼的主页,如下图:
提示语
赶紧启动 nginx 吧!
知识点
nginx 服务配置
nginx 日志分析
答案分割线
提供的答案并不一定是最优的方案,欢迎大家举出其他解决方案!
题目1:为新同事创建系统账户
本题目中需要在桌面环境中创建用户,并满足一系列条件:
用户名:lousai
Home 目录:/home/lousai
允许 lousai 使用 SSH 登陆系统
lousai 用户默认使用 zsh
lousai 用户需要 sudo 权限
其中1,2,4 三个要求只需要一个 adduser 命令就可以完成:
sudo adduser --home /home/lousai --shell /usr/bin/zsh lousai
由于实验楼环境的配置,新创建的用户只要有密码,默认是允许通过 SSH 登录的,所以需求 3 不需要做任何事情。
最后需求 5 需要 sudo 权限,可以直接将新用户加入到 sudo 组:
sudo usermod -aG sudo lousai
至此,五个需求都已经完成,提交结果让实验楼的系统帮你测试下吧。
题目2:数据库无法启动
在这道题目中有三个坑:
MySQL 服务无法启动 - bind address 配置错误
MySQL 服务无法启动 - /var/run/mysqld 权限配置错误
MySQL root 密码忘记
前两个坑都可以在尝试 sudo service mysql start 命令后查看 /var/log/mysql/error.log 报错日志发现。
坑1相关的报错日志:
修复的方法是把 /etc/mysql/my.cnf 配置文件中的 bind-address 改为 127.0.0.1 禁用词语到本地就可以了。
坑2相关的报错日志:
Permission denied的错误显示出来我们就需要去看下是哪个目录是没有权限,第二句日志中表示无法创建 /var/run/mysqld/mysqld.sock,去查看 /var/run/msyqld 发现默认的所有者是 shiyanlou 用户,这就是问题所在了。修复方法:
sudo chown mysql:msyql /var/run/mysqld
最后坑3则是很常规的重制 MySQL 密码了:
# 停止 mysql 服务
sudo service mysql stop
# 使用 mysql_safe 方式启动 mysql 服务
sudo mysqld_safe --skip-grant-tables
|