在Linux系统中,有许多常见的应用服务,它们用于执行各种任务,如网页托管、数据库管理、文件传输等。
- Apache HTTP Server:用于托管网站和Web应用程序的Web服务器。
- Nginx:高性能的Web服务器和反向代理服务器,也常用于负载均衡。
- MySQL/MariaDB:关系型数据库管理系统,用于存储和管理网站或应用程序的数据。
- PostgreSQL:另一个强大的开源关系型数据库系统。
- PHP:服务器端脚本语言,主要用于Web开发,常与Apache或Nginx一起使用。
- Python:一种通用编程语言,用于Web开发(如Django或Flask框架)和系统管理脚本。
- Java:用于开发跨平台应用程序的编程语言,常用于大型企业级应用。
- Tomcat:一个Servlet和JSP容器,用于运行Java Web应用程序
目录
一、LAMP
1.1 Apache环境搭建
1.1.1 apache下载及基础配置
1.1.2 Apache配置文件
编辑1.1.3 Apache相关命令
1.1.4 Apache日志
1.1.5 Apache文件共享
1.1.6 Apache访问控制
1.1.7 Apache虚拟主机技术
1.2 MySQL环境搭建
1.2.1 MySQL下载及初始配置
1.2.2 MySQL使用
1.2.3 创建数据库
1.3.4 数据库查询
1.3.5 备份及还原数据库
1.3.6 数据库配置文件
1.3.7 数据库密码修改
1.3.8 数据库权限设置
一、LAMP
LAMP是一组常用于Web开发的开源软件的缩写,每个字母代表一个组件:
- L:Linux操作系统,提供了项目部署时所需要的操作系统环境
- A:Apache服务器:WEB应用程序的服务器,提供软件源文件的存放地,提供了程序访问时所需要的端口(接口)
- M:MySQL数据库,提供项目或者程序在使用时数据的存储与解析的工作
- P:PHP/Python开发语言,提供软件或者项目程序部署时所需要的开发环境的支持
概述:LAMP环境,主要给WEB端应用程序(各种类型的网站项目),提供了一个部署安装和使用的平台。
解释:可以理解为:只要把这四个软件安装完成,就形成了LAMP环境,环境有了之后,只需要把WEB应用程序对应的源文件,部署在apache服务器上即可,这样用户就可以直接访问该网站
1.1 Apache环境搭建
1.1.1 apache下载及基础配置
因为是软件的在线安装,需要借助yum命令来完成,最低版本的使用:centos7,所以在部署之前,先查看当前系统是否满足于环境的需求
我的网络yum源是华为云,阿里之类的网络源也满足要求
确保yum满足要求后,可以使用yum命令来下载http服务
yum -y install httpd
或
yum install httpd httpd-devel
//不仅安装apache,还把相关的开发工具包(devel)一并做安装
这里我用了第二条,一并安装相关开发工具包
有时启动apache服务可能会出现报错,这时候我们可以使用systemctl status httpd.service查看服务状态,这可能会提供一些关于为什么服务启动失败的线索
根据systemctl status httpd.service
输出,Apache HTTP Server(httpd)服务启动失败,错误信息表明主要问题是80端口已经被占用。使用以下命令来查找哪个进程正在监听端口80:
sudo ss -tulnp | grep :80
或者使用netstat(如果已安装)
sudo netstat -tulnp | grep :80
现在让我们来了解apache的配置文件,使用rpm -ql httpd,我们可以看到一个conf文件夹,Apache HTTP Server 的配置文件主要包含在 httpd.conf
文件以及一系列包含文件中。这些文件定义了 Apache 的行为,包括服务器的行为、模块配置、虚拟主机设置、访问控制等
httpd.conf
文件由多个部分组成,包括:
- 全局配置:设置全局服务器参数,如服务器根目录、监听端口、服务器令牌、文档根目录等。
- 模块配置:加载和配置 Apache 模块,这些模块提供额外的功能,如
mod_rewrite
、mod_ssl
、mod_proxy
等。 - 目录配置:使用
<Directory>
指令设置特定目录的访问权限和行为。 - 虚拟主机:配置虚拟主机,允许单个 Apache 实例托管多个域名。
- 访问控制:使用
<Limit>
、<Require>
、AllowOverride
等指令控制访问。 - 日志配置:设置日志文件的位置和格式。
- 性能调整:调整服务器的性能参数,如
KeepAlive
、MaxClients
、Timeout
等。 - 安全设置:配置安全相关的设置,如
ServerTokens
、ServerSignature
等
在rpm -ql httpd后继续往下翻,我们能看到许多特定文件夹。对于apache的目录和文件功能:
lib64
:lib64
目录通常用于存放 64 位系统的库文件。在 64 位 Linux 系统中,这个目录包含了系统运行所需的共享库,包括 Apache 模块和其他应用程序的依赖库。/var/log/httpd
:这是 Apache 服务器的日志文件存放目录。默认情况下,Apache 的访问日志和错误日志都会存放在这个目录下。例如,access_log
和error_log
文件通常可以在这里找到。/var/www/html
:这是 Apache 的默认网站内容目录,也称为文档根目录。Web 服务器上的网页和资源通常存放在这个目录下,这些内容可以通过 Web 浏览器访问。
现在我们想要对httpd.conf
文件进行配置,但是当我们使用vim进入后,发现有太多的注释(#开头的语句),很影响我们配置文件,那现在我们需要对配置文件进行处理:
grep -v ^# /etc/httpd/conf/httpd.conf
:这个命令用于过滤掉httpd.conf
文件中以#
符号开头的注释行。^#
是一个正则表达式,匹配任何以#
开头的行。grep -v "#" /etc/httpd/conf/httpd.conf
:这个命令同样用于过滤掉httpd.conf
文件中的注释行,但它不区分#
符号的位置,会移除所有包含#
的行。grep -v "#" /etc/httpd/conf/httpd.conf | grep -v ^$
:这个命令组合首先移除httpd.conf
文件中的注释行,然后进一步移除所有空行(^$
匹配空行)
特定配置指令:
ServerRoot "/etc/httpd"
:ServerRoot
指令定义了 Apache 服务器的根目录。这个目录包含了 Apache 的配置文件、证书、日志等。在这个例子中,ServerRoot
设置为/etc/httpd
,意味着所有相对路径的配置项都是基于这个目录
1.1.2 Apache配置文件
在去除掉了#的影响后,我们得到了一个简介美观的配置信息,现在我们来分析这些配置信息有什么作用
以下配置指令定义了 Apache 服务器的基本行为和设置(默认情况):
ServerRoot "/etc/httpd" #软件的根目录(相对路径,就是以此开头)
----------------------
Listen 80 #监听端口
----------------------
User apache #启动用户
Group apache #启动用户组
----------------------
ServerAdmin root@localhost # 服务相关信息发邮件
----------------------
<Directory />
AllowOverride none #根路径权限设置
Require all denied
</Directory>
----------------------
documentRoot "/var/www/html" #默认发布路径
----------------------
<Directory "/var/www/html"> #默认发布路径,功能限制
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
------------------------
ErrorLog "logs/error_log" #错误日志
CustomLog "logs/access_log" combined
------------------------
ServerRoot
:指定 Apache 软件的根目录。所有相对路径的配置项都是基于这个目录。在这个例子中,配置为"/etc/httpd"
。Listen
:指定 Apache 服务器监听的端口。在这个例子中,服务器监听 80 端口,这是 HTTP 服务的默认端口。User
和Group
:指定启动 Apache 服务的用户和用户组。在这个例子中,使用apache
用户和组。ServerAdmin
:指定服务器管理员的电子邮件地址,用于接收服务相关信息。<Directory />
:配置根目录(/
)的访问权限。在这个例子中,不允许任何覆盖(AllowOverride none
)并且拒绝所有访问(Require all denied
)。DocumentRoot
:指定 Apache 服务器的默认发布路径,通常是 Web 内容的根目录。在这个例子中,设置为/var/www/html
。<Directory "/var/www/html">
:配置默认发布路径的访问权限和行为。在这个例子中,允许索引视图(Indexes
),允许跟踪符号链接(FollowSymLinks
),并且授予所有访问权限(Require all granted
)。ErrorLog
和CustomLog
:指定错误日志和访问日志的存放位置。在这个例子中,错误日志存放在logs/error_log
,访问日志存放在logs/access_log
,并且使用combined
格式记录访问信息。
在所有配置步骤完成后,我们使用systemctl start httpd启动apache服务,现在访问127.0.0.1,会看到一个欢迎页面,除此之外无其他内容
这是因为现在在默认发布路径下还空无一物,我们进入到/var/www/html(默认发布路径)目录,ls查看,发现现在html目录下什么也没有,这也是为什么只能显示一个apache官方的测试网页。现在
我们使用cp粘贴命令将一个我们想要的 index.html 页面粘贴到默认发布路径下,再次访问就得到了我们想要的新页面。
当然,此时用其他主机去访问本机的ip地址(前提是两台主机可以相互ping通),也可以访问到新的页面
1.1.3 Apache相关命令
- 启动Apache服务器:sudo systemctl start httpd
- 重启Apache服务器:sudo systemctl restart httpd
- 停止Apache服务器:sudo systemctl stop httpd
- 查看Apache服务器状态:sudo systemctl status httpd
- 重新加载Apache配置文件:sudo systemctl reload httpd
- 启用系统启动时自动启动:sudo systemctl enable httpd
- 禁用自动启动:sudo systemctl disable httpd
有时候修改完配置文件后,需要重启服务才能生效,所以上述命令需要了解
1.1.4 Apache日志
安装配置好Apache后,我们来了解一下Apache的日志
首先我们进入/etc/httpd目录下,在这里我们可以看到一个“log”,浅蓝色代表链接(通过ll可以看到这个链接指向的是var下的位置),我们进入这个链接
在这里我们可以看到两个日志文件,access(访问日志)和error(错误日志),我们使用cat命令查看一下访问日志,可以看到很详细的访问记录,包括:
- 客户端的IP地址
- 请求发生的时间
- 请求的类型(GET、POST)和请求的资源
- HTTP状态码
- 使用的浏览器等
1.1.5 Apache文件共享
Apache Web服务器可以通过配置文件设置来实现文件共享功能。这通常涉及到设置特定的目录权限、启用目录索引以及配置适当的访问控制。
首先,我们需要确定一个目录用于文件共享。这个目录可以是现有的,也可以是新创建的。例如,在本实验中我选择使用Apache的默认文档根目录/var/www/html
打开Apache的主配置文件(通常是 httpd.conf
,位置可能因安装方式和操作系统而异),进行以下配置:
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
- Options Indexes FollowSymLinks: 这一行启用了目录索引,允许用户浏览目录下的文件列表,并允许Apache跟随符号链接。
- AllowOverride None: 禁止.htaccess文件覆盖此目录块的设置。
- Require all granted: 允许所有用户访问此目录
我将之前关于文件夹的配置打了3个#,以便后续需要时恢复。修改保存了配置文件后,需要重新加载Apache服务使其生效。可以通过直接重启或重新加载Apache配置使其生效
sudo systemctl reload httpd
或
sudo systemctl restart httpd
现在,我在html(默认发布路径)下再建一个文件夹,并将用户和密码拷贝到此文件夹下(这里做演示使用,现实中不推荐!)
现在在来访问 端口号/你新建的共享文件夹名称,发现可以共享访问了
当然,你现在访问shadow是拒绝访问的,这是因为,即使打开了共享,我们从web服务器是以匿名用户的身份访问的,而匿名用户是没有读写执行权限的
想要解决这个问题也很方便,我们已知,apache的默认启动用户和启动组名为apache,你并不需要直接赋予shadow文件Other用户rwx权限,可以将所属者root改为apache,再赋予权限chmod 700(只赋予所有者权限,在一定程度上保护了安全),这样就可以访问了(不推荐!!!)
1.1.6 Apache访问控制
Apache Web服务器提供了强大的访问控制功能,允许管理员限制对特定资源的访问。这些控制可以通过修改Apache的配置文件来实现。
关于访问控制,有一些常用的方法:其一就是基于IP地址的访问控制,这个设置仍是在.conf配置文件中修改,将Require修改为允许访问的ip地址(此方法不推荐),或者拒绝特定的IP地址。
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Require ip 192.168.1.0/24
</Directory>
这将只允许192.168.1.0/24网段内的IP地址访问该目录
Require not ip 192.168.1.100
当然,你也可以通过主机名来控制访问:
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Require host example.com
</Directory>
这将只允许从example.com域名访问该目录
这里我们介绍另一种方法(其实大同小异)。首先我们需要安装Apache手册
sudo yum install httpd-manual
在手册中我们可以看到有两种方法执行访问控制,老版本他提示我们即将弃用,新版本本质上也是在配置文件中修改执行访问控制(新版本的RequireAll应该写在/var/www/html下)。
下载手册,之后重启apache服务,访问manual,可以看到手册页面,我们选择Access Control
将新版本中给我们的代码粘贴到conf配置文件中,例如在这里,我不想让我们kali机访问,那就把kali机的IP封掉,保存并重启apache服务。现在我们再用kali去访问是无法显示页面的。
1.1.7 Apache虚拟主机技术
Apache 虚拟主机技术允许你在一台服务器上托管多个网站。每个网站都有自己的域名,但它们共享同一个 IP 地址。Apache 支持两种类型的虚拟主机:基于名称的虚拟主机(Name-Based Virtual Hosts)和基于 IP 地址的虚拟主机(IP-Based Virtual Hosts)。这里介绍基于名称的虚拟主机。
在基于名称的虚拟主机配置中,多个域名共享同一个服务器 IP 地址。Apache 通过 HTTP 请求中的 Host
头部来区分不同的网站。
首先我们来为每个网站创建一个独立的目录
sudo mkdir -p /var/www/site1.com/public_html
sudo mkdir -p /var/www/site2.com/public_html
编辑Apache配置文件,为每个网站添加一个<VirtualHost>
块。
<VirtualHost *:80>
ServerAdmin webmaster@site1.com
ServerName site1.com
ServerAlias www.site1.com
DocumentRoot /var/www/site1.com/public_html
ErrorLog /var/www/site1.com/logs/error.log
CustomLog /var/www/site1.com/logs/access.log combined
</VirtualHost>
对第二个网站也是一样的操作,更改域名和路径
创建了新的配置文件后,确保启用他们,并重新加载Apache使配置生效
sudo systemctl enable site1.conf
sudo systemctl enable site2.conf
sudo systemctl reload httpd
现在虚拟主机配置完成了,可以通过site1和site2访问,当然,我没有在其发布路径下编写html文件所以展示了默认页面,如果你想进一步操作可以为站点配置不同的index.html
1.2 MySQL环境搭建
1.2.1 MySQL下载及初始配置
对于数据库,这里推荐MariaDB,MariaDB是MySQL的一个替代品,它与MySQL兼容,并且通常被认为在某些方面性能更好。CentOS 7默认仓库中包含MariaDB
使用yum命令安装Maria DB服务器
sudo yum install mariadb-server
下载完成后启动服务,检查是否已经启动成功
sudo systemctl start mariadb
在首次启动MySQL或MariaDB时,通常需要设置root用户的密码。使用mysqladmin -u 用户名 -p password "新密码"来设置管理员和密码。这里你可以直接选择初始化MariaDB:
首先确保MariaDB服务已启动,运行初始化命令,运行 mysql_secure_installation
脚本来初始化数据库并增强安全性。这个脚本会引导你完成几个步骤
sudo mysql_secure_installation
首先要求你设置root密码。输入一个强密码并记住它。如果默认密码为空,你可以直接按回车键
脚本会询问你是否要删除匿名用户。建议选择 Yes
询问你是否禁止 root 用户远程登录。建议选择 Yes
脚本会询问你是否要删除测试数据库。建议选择 Yes
询问你是否要重新加载权限表。建议选择 Yes
初始化完成后,你可以验证是否成功。使用新设置的 root 密码尝试登录 MariaDB,输入密码后,如果成功登录,说明初始化成功
1.2.2 MySQL使用
进入MariaDB后,我们可以执行多种命令来对其进行操作
查看当前有多少库
> show databases;
MariaDB [(none)]>
,这意味着你已经成功登录到 MariaDB 服务器,并且当前没有选中任何特定的数据库。上面的显示表示现在有三个数据库
- information_schema:这是一个特殊的数据库,它包含了关于其他所有数据库的元数据(如表结构、列、索引等)。这是每个 MariaDB 服务器自带的系统数据库。
- mysql:这也是一个系统数据库,用于存储用户账户、权限、MariaDB 的系统配置等信息。在初始化过程中,你可能会修改这个数据库中的信息,例如设置 root 密码、删除匿名用户等。
- performance_schema:这是一个可选的系统数据库,用于收集和存储数据库性能相关的信息。它可以帮助数据库管理员监控和优化数据库的性能
进入库
> use mysql;
这表示你已经成功地切换到了 mysql
数据库。mysql
数据库是一个特殊的系统数据库,它存储了关于用户账户、权限、MariaDB 服务器的系统配置等信息
查看表
> show tables;
在 MariaDB 中,执行 SHOW TABLES;
命令会列出当前选定数据库(在这个例子中是 mysql
数据库)中所有的表。根据你提供的输出,mysql
数据库包含多个表,每个表都有特定的用途。
查看表内容
> select * from mysql.user \G;
查看表结构
desc user;
1.2.3 创建数据库
了解了基本的查看命令后,我们可以试着自己创建一个数据库
CREATE DATABASE JIUye;
//首先创建一个数据库,选择此数据库以便在其中创建表
USE JIUye;
//创建一个简单的员工表
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
position VARCHAR(100)
);
//向其中插入数据
INSERT INTO employees (name, position) VALUES ('111', 'employer');
INSERT INTO employees (name, position) VALUES ('222', 'employee');
现在,我们就得到了一个员工表
如果我们要修改表结构,可以使用:
ALTER TABLE employees ADD COLUMN age INT; //添加列
ALTER TABLE employees DROP COLUMN age; //删除列
ALTER TABLE employees CHANGE old_column_name new_column_name INT; //修改列名
ALTER TABLE employees MODIFY COLUMN name VARCHAR(150); //修改数据类型
要更改表的数据内容,可以使用:
UPDATE employees SET position = 'xxx' WHERE name = 'xxx'; //更新数据
DELETE FROM employees WHERE name = 'xxx'; //删除数据
1.3.4 数据库查询
在上面我们一直使用* 来查,这表示查询所有内容,但有时候我们想要特定查询,那就需要下面的命令
如果你只对表中的特定列感兴趣,你可以指定列名,而不是使用星号。例如,如果你只想显示员工的名字和职位,可以执行:
SELECT name, position FROM employees;
你可以使用 WHERE
子句来过滤结果,只显示符合特定条件的记录。例如,如果你只想显示职位为“经理”的员工记录,可以执行:
SELECT * FROM employees WHERE position = 'employer';
此外,还可以选择从几行几列开始检索:
select name from userlist limit 0,2;
//这里的0,2表示从第0行开始检查,显示2列
1.3.5 备份及还原数据库
注意,备份数据库不是在mysql数据库里面运行的命令,首先我们退出数据库,在外面进行数据库备份。在外面备份好的位置可以看到一个备份文件。
我们可以使用file命令查看一下备份出来的文件格式。
输出结果显示 JIUye.employees.sql
是一个 ASCII 文本文件。这意味着该文件是一个文本文件,可以用任何文本编辑器打开和编辑。这也就意味着我们可以直接在备份文件中添加一些信息,我们使用vim编辑器来添加一个用户
我们可以看到在备份文件中记录了我们对数据库的操作,现在如果我们想再添加一个“经理”,那我们就可以在insert语句后继续添加数据。
现在我们来还原数据库,使用命令导入备份文件
mysql -u root -p JIUye < /tmp/JIUye.employees.sql
现在,我们可以验证一下是否导入成功了,登陆我们的数据库,选择JIUye,然后使用SELECT * FROM your_table_name;来查询一下数据是否符合预期
可以看到,多了一个“经理”,确实已经更新成功。
1.3.6 数据库配置文件
数据库的配置文件在/etc下,我们使用vim打开 my.cnf ,这就是数据库的配置文件
datadir=/var/lib/mysql
:这行指定了数据库文件存储的目录。默认情况下,MariaDB/MySQL 将所有数据库文件存储在/var/lib/mysql
目录下socket=/var/lib/mysql/mysql.sock
:这行定义了 Unix 套接字文件的路径,用于本地进程间通信。当客户端和服务器在同一台机器上时,它们可以通过这个套接字文件进行通信。symbolic-links=0
:这行表示禁用符号链接。出于安全考虑,建议关闭符号链接,因为它们可能会导致安全风险,例如允许访问不属于数据库文件的其他文件系统部分。[mysqld_safe]
:这是一个配置段,专门用于mysqld_safe
脚本,该脚本用于启动数据库服务器。包括错误日志的路径等。
1.3.7 数据库密码修改
对数据库的密码修改需要注意以下几点:
- 首先必须是root用户
- 关闭mysql
- 以安全模式启动mysql
如果你忘记了数据库的密码,现在想要重新修改密码,应该怎么做?
首先我先停止掉mariadb的服务,以安全模式启动MariaDB,安全模式启动通常意味着跳过一些检查和加载的模块,你可以使用 --skip-grant-tables
选项来启动
在安全模式下,你可以直接使用mysql客户端工具登陆到数据库,而不需要密码
mysql -u root
可以看到,此时我们可以直接使用mysql -u root登陆,不再需要输入密码了。使用 --skip-grant-tables
参数启动数据库时,你确实可以查看和修改数据库中的任何数据,但是这种状态下的数据库服务器是不安全的,因为任何能够连接到数据库的人都可以执行任何操作,包括删除数据或执行其他潜在的危险操作。
通常,我们只有在以下情况下才会使用 --skip-grant-tables
参数:
- 重置忘记的密码:如果你忘记了 root 用户或其他用户的密码,可以使用这个参数启动数据库,然后重置密码。
- 修复权限问题:如果权限表损坏或配置错误,可能需要以无权限检查的方式启动数据库来进行修复。
- 恢复数据:在数据丢失或损坏的情况下,可能需要绕过权限检查来恢复数据。
在执行完必要的操作后,你应该立即关闭数据库服务器,并以正常模式重新启动,以恢复权限检查和保护数据库的安全。记住,以 --skip-grant-tables
参数启动数据库时,应该确保数据库不会暴露在公共网络中,以避免潜在的安全风险。
我们进入到mysql数据库,show tables,来查看mysql库中的所有表,可以看到在其中有一个user表,相关的密码和权限就存储在这里。
其实现在,我们可以使用SELECT Host, password, User FROM mysql.user;命令来查看user中的信息,如权限,密码等。或者直接将所有用户的所有信息列出来,我们可以在password列中看到加密后的密码,这里的密码是采用了哈希加密,我们可以在一些网站中破解这个加密的密码,如cmd5等,这里暂不演示
这里的host表示的是:允许哪些用户登陆,因为我之前在初始化的时候禁止了匿名用户登陆,所以这里经过筛选后只有三个用户可登陆。
当然,允许匿名用户登陆是不安全的,我这里没有匿名用户是因为我在初始化的时候禁止了匿名用户,如果你保持了数据库的初始配置,那你在上面的页面中应该还会有密码为空的用户,如果你想删除他们,可以使用命令
>delete from user where password='';
//删除空白账号
至此,其实你已经得到了旧的数据库密码,但如果你仍想执行更改密码的操作,可以使用
UPDATE user SET authentication_string=PASSWORD('new_password') WHERE User='root' AND Host='localhost';
对于MariaDB 10.1.20之后的版本使用
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
之后刷新权限使更改生效
FLUSH PRIVILEGES;
完成密码更改后,使用exit退出mysql客户端,停止安全模式下的MariaDB服务,重新启动
exit;
sudo systemctl stop mysql
sudo systemctl start mysql
1.3.8 数据库权限设置
1、要求对class1数据库中employees表,zhq用户具有查看权限,但是没有修改权限,同时要求tom用户必须只能从127.16.130.141(这里是我win2019的地址,你可以根据具体情况具体设置你允许登陆的地址)中登陆。登陆的时候密码是123456
首先我们以root用户登陆到MariaDB服务器,如果zhq用户还不存在,你需要先创建这个用户。可以使用如下命令:
CREATE USER 'zhq'@'127.16.130.141' IDENTIFIED BY '123456';
接下来我们使用GRANT
命令授予 zqh 用户对 class1
数据库中 employees 表的查看(SELECT)权限。之后同样刷新一下使权限生效
GRANT SELECT ON class1.employees TO 'zhq'@'172.16.130.141' IDENTIFIED BY '123456';
现在,在远程机器上,你可以尝试使用以下命令来验证 tom
用户的登录和权限:
mysql -u zhq -p -h 172.16.130.174
注意:当你执行这个命令时,系统会提示你输入密码。输入密码
123456
后,你应该能够登录到 MySQL/MariaDB 服务器。请注意,你提供的远程登录命令中的主机地址是
172.16.130.141
,但是在授权命令中使用的主机地址是 172.16.130.174
。确保 zhq 用户只能从172.16.130.141
这个 IP 地址登录(从win2019登陆),如果你尝试从其他 IP 地址登录,包括 172.16.130.174,将会失败。
登录后,你可以尝试查询表来验证 zhq 用户是否具有查看权限:
USE class1;
SELECT * FROM employees;
能够成功执行查询,说明查看权限已经正确设置。如果尝试修改表(如 INSERT
、UPDATE
、DELETE
)的操作失败,说明没有修改权限,这也是预期的结果。
之后如果想要撤销用户的权限,我们需要用到revoke命令,我们使用help revoke查看一下格式要求
根据它上面给我们的格式,我们来试着撤销用户的权限
或者,我们也可以使用非交互式命令(即不在mysql中撤销权限)
撤销用户权限后,我们应该还可以使用远程登录到数据库,但是已经没有查看的权限了。
如果想要删除用户,可以使用drop user命令
至此,关于数据库的知识大致讲解完毕
对于LAMP,还有php没有讲解,关于php和平台的整体搭建,我们留到下节再说。