目录
新添加的代码
代码解释
为啥ubuntu用debian软件源
为啥修改sources.list.d
S权限意思
php缺少和数据库连接的模块
使用root登陆数据库1698错误
字段解释
auth_socket解释
使用root登陆数据库方法
详细解释
首先在安装的时候,有一个dockerfile文件,将dockerfile中的内容拉取下来。
但是报如下错误
经过查询是这个源过期了
RUN echo https://debian.octopuce.fr/snapshots/sury-php/stretch-latest/ stretch main" > /etc/apt/sources.list.d/php.list
https://debian.octopuce.fr/snapshots/sury-php/stretch-latest/ 是一个存储 PHP 软件包的 Debian 软件源地址。
stretch main 是 APT 源的配置格式,其中:
stretch 表示 Debian 发行版的代号,这里指的是 Debian 9 (Stretch)。
main 表示软件库的分组,即主要软件库,包含大部分开发者和用户使用的软件包。
通过执行这行代码,系统会将这个地址添加到 /etc/apt/sources.list.d/php.list 文件中,以后 APT 更新时将会使用这个地址获取与 PHP 相关的软件包更新和信息
Debian 和 Ubuntu 是两个流行的 Linux 发行版
Ubuntu 是基于 Debian 构建的。Ubuntu 最初是从 Debian unstable 分支派生而来的,但现在已经发展成为一个独立的发行版。
Ubuntu 使用 Debian 的 .deb 包格式作为其软件包的基础,同时也继承了 Debian 的 APT包管理系统,包括 apt-get 和 apt 命令。Ubuntu 的软件仓库和 Debian 有一些相似之处, Ubuntu 也有自己的软件包仓库,其中包含了一些特定于 Ubuntu 的软件包。
buntu中的/etc/apt/sources.list.d目录主要用于存放第三方软件的源配置文件。
在Ubuntu系统中,软件源的配置文件主要位于/etc/apt/sources.list
,而/etc/apt/sources.list.d
目录则是用来存放额外的软件源配置文件,这些文件通常具有.list
扩展名。这些额外的配置文件允许用户在单独的文件中写入源的地址,提供了一种灵活的方式来管理软件源,特别是对于安装第三方软件时非常有用。通过这种方式,用户可以方便地添加、修改或删除软件源,而无需直接编辑主配置文件/etc/apt/sources.list
。更新软件源时,使用命令apt-get update
即可使更改生效。
+s权限在Linux系统中指的是Set UID(Set User ID)权限,通常简写为SUID。当对一个文件设置SUID权限时,意味着当该文件被执行时,程序将以文件所有者的身份运行,而不是以执行该文件的用户的身份运行。这个特性在一些需要特定权限执行的程序中非常有用,例如,当某个程序需要以文件所有者的权限运行时,可以通过设置SUID权限来实现。例如,如果一个文件的所有者是root,而普通用户需要运行该文件执行某些只有root权限才能执行的操作时,可以通过给该文件设置SUID权限来实现。
SUID权限的设置可以增强系统的灵活性,允许普通用户执行一些需要特殊权限的任务,同时也能提高系统的安全性,因为只有当文件所有者确实需要这种权限时才应该设置SUID权限。然而,SUID权限的不当使用也可能带来安全风险,因为如果设置不当,可能会导致未经授权的用户获得过多的权限,从而对系统造成潜在的安全威胁。因此,在使用SUID权限时需要谨慎考虑其潜在的安全影响12。
在访问网站时,返回报500的错误。原因是没有php和数据库连接的模块
有模块了
SELECT host,user,authentication_string,plugin FROM mysql.user;
输入上面代码查看对应字段
root是如下字段
数据库中的 authentication_string
字段通常用于存储用户账户的加密密码或者认证字符串。具体取决于数据库管理系统的版本和配置,它可能包含以下内容
auth_socket 是 MySQL 数据库中一种特殊的认证插件,用于用户身份验证的一部分。它通常用于 Unix 和类 Unix 系统上,特别是在基于 Debian 或 Ubuntu 的系统中。
工作原理:
操作系统用户与数据库用户关联:
在 MySQL 中,存在一个概念是将数据库用户与操作系统用户相关联。当使用 auth_socket 插件时,MySQL 将通过操作系统的身份验证机制来确认用户的身份,而不是直接使用密码来验证。
验证流程:
当一个用户尝试连接到 MySQL 数据库时,MySQL 将检查该用户是否具有操作系统层面上的相关权限。
如果存在相应的操作系统用户,并且其与 MySQL 用户账户名称匹配,并且没有明确设置 MySQL 密码,则允许该用户连接。这意味着,只要操作系统用户存在,并且与 MySQL 用户名称相同,就可以访问数据库,而无需密码验证。
适用情况:
auth_socket 插件适合于特定的安全场景,例如本地服务器或者在使用操作系统用户与数据库用户名称相同且需要访问权限的情况下。
这种方法不需要在 MySQL 中存储密码,从而可以减少密码管理的复杂性和风险。
使用注意事项:
仅限于 Unix/Linux 系统: auth_socket 插件依赖于操作系统的身份验证机制,因此只能在支持的 Unix/Linux 系统上使用。
用户和权限管理: 确保数据库用户的名称与操作系统用户的名称一致,并且理解在使用此插件时如何管理权限和访问控制。
使用如下代码换插件,设置密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
ALTER USER:
这是 MySQL 中用于修改用户账户信息的语句。
'root'@'localhost':
标识了要修改的用户及其连接来源。在这里,'root' 是用户名,'localhost' 表示该用户只能从本地主机连接到 MySQL 数据库。
IDENTIFIED WITH mysql_native_password:
这部分指定了用户密码的身份验证插件。在 MySQL 中,有多种身份验证插件可供选择,如 mysql_native_password、caching_sha2_password 等。mysql_native_password 是 MySQL 的一种原生密码验证插件。
BY 'root':
指定了新的密码。在这里,用户 'root' 的密码将会被设置为 'root'。