当前位置: 首页 > article >正文

【MySQL】用户账户、角色、口令、PAM

目录

查看用户账户设置

连接

1.本地连接

2.远程连接

账户

角色

操作用户账户和角色

配置口令和账户有效期限

手工使口令过期

配置口令有效期限

PAM身份验证插件

客户端连接:使用 PAM 账户登录


在连接到MySQL服务器并执行查询时,会验证你的身份并为您的活动授权。

查看用户账户设置

查询mysql数据库以查看user标识信息:SELECT user, host, authentication_string FROM mysql.user;

  • user:此账户上的用户名。
  • host:用户可以连接的DNS主机名或IP地址。
  • authentication_string:用户必须对该账户提供的口令,是加密的(AES加密算法)。

连接

1.本地连接

要使用mysql客户机连接到本地服务器,为要使用的帐户指定用户名和口令:

mysql -u username -ppassword -h localhost

默认主机名是localhost(127.0.0.1/::1),表示本机套接字连接。

mysql.user 表包含具有正确口令的 username@localhost 帐户。

2.远程连接

要连接到未安装在客户端本地主机上的服务器,必须提供要连接的服务器的主机名:

mysql -u username -ppassword -h servername

mysql.user 表中与用户关联的主机名是指发起连接的客户端主机的名称,而不是服务器主机的名称。

账户

账户名由用户名(可以不唯一,长度最长32个字符)和连接到客户端主机的名称或IP地址组成。

使用 create user 用户@主机名 identified by '口令' 创建账户,不要创建无口令和匿名帐户,避免通配符的使用。

角色

角色是一组权限的集合,可以更加方便地添加、删除和管理授权。角色类似于用户,存储在 mysql.users 表中,角色名由用户和主机组成,但不能像用户一样登录,可以将一个用户账户角色授予另一个用户。

使用 create role 用户@主机名 创建一个或多个角色。角色是作为一个特殊类型的账户创建的,没有口令,被锁定无法登录,而且指定了默认的验证插件。

操作用户账户和角色

  1. 使用 rename user 用户@主机名 to 用户@主机名 语句重命名账户和角色。
  2. 使用 drop user/role 用户@主机名 语句删除用户账户和角色。

配置口令和账户有效期限

  1. 创建用户时使用 create user 用户@主机名 identified by '口令';设置账户口令。
  2. 更改现有用户使用 alter user 用户@主机名 identified by '新口令'
  3. 更改当前用户口令:alter user user() 用户@主机名 identified by '新口令'
  4. 使用 mysqladmin -u 用户 -p password '新口令';也可更改口令。

手工使口令过期

  1. 创建口令过期账户:CREATE USER 用户@主机名 IDENTIFIED BY '口令' PASSWORD EXPIRE; 在新用户第一次登录时需要重新设置密码。
  2. 使用户口令过期:ALTER USER 用户@主机名 PASSWORD EXPIRE;(追加 ACCOUNT LOCK 还可以使用户锁定)

配置口令有效期限

  1. 使用 default_password_lifetime 全局变量指定多少天后必须要更改口令,默认为0,表示口令长期有效。
  2. 创建用户时配置:CREATE USER 'user'@'host' IDENTIFIED BY '口令' PASSWORD EXPIRE INTERVAL 30 DAY; 
  3. 将默认口令有效期应用于账户:ALTER USER 'user'@'host' PASSWORD EXPIRE DEFAULT;
  4. 禁用自动的账户失效:ALTER USER 'user'@'host' PASSWORD EXPIRE NEVER;

PAM身份验证插件

PAM 身份验证插件是一个企业版插件,可根据操作系统对MySQL 帐户进行身份验证。

PAM 定义了配置身份验证的服务,这些服务存储在 /etc/pam.d 中 ,每个服务对应一个文件。

MySQL客户端 → MySQL服务器 → PAM插件 → /etc/pam.d/mysql-pam → 操作系统认证

(1)直接映射:要创建直接映射到操作系统用户的 MySQL 用户,使用语句:

CREATE USER bob@localhost IDENTIFIED WITH authentication_pam AS 'mysql-pam';

用户:bob,主机:localhost,插件:authentication_pam,验证字符串:mysql-pam。

  • 用户 bob@localhost 必须同时是操作系统用户
  • 密码验证完全由操作系统处理
  • 口令不存储在MySQL 的 mysql.user 表中,它是操作系统验证口令。
  • 用户只能使用操作系统密码登录

(2)组映射代理:创建一个使用PAM并从OS操作系统组映射到MySQL用户的匿名代理用户

 CREATE USER ''@''
 IDENTIFIED WITH authentication_pam 
   AS 'mysql-pam, www=webuser, root=root';
  • 匿名用户账户(''@'')作为代理
  • 根据操作系统组自动映射到不同 MySQL 账户:操作系统 www 组的成员映射到MySQL webuser 帐户,root组的成员映射到MySQL root 帐户。
  • 代理用户必须对映射的帐户具有PROXY权限:
GRANT PROXY ON webuser@localhost TO ''@'';
GRANT PROXY ON root@localhost TO ''@'';

客户端连接:使用 PAM 账户登录

MySQL 将从客户端收到的用户名和口令传递给PAM,PAM针对操作系统进行身份验证。

(1)PAM 只能处理纯文本的口令,必须启用明文客户端身份验证插件:

mysql --enable-cleartext-plugin -u username -p

(2)连接示例:代理用户采用映射帐户的身份。示例:Anne 不是MySQL 用户,但在操作系统的www组中:

# 直接映射用户连接
mysql --enable-cleartext-plugin -u os_user -p

# 组映射用户连接(用户 anne 属于 www 组)
mysql --enable-cleartext-plugin -u anne -p

Anne 的客户端现在使用webuser@localhost 帐户的权限登录。


http://www.kler.cn/a/610283.html

相关文章:

  • 一文速通Python并行计算:03 Python多线程编程-多线程同步(上)—基于互斥锁、递归锁和信号量
  • vue 封装 Axios菜鸟教程
  • C++学习之路:从头搞懂配置VScode开发环境的逻辑与步骤
  • P1464 Function —— 洛谷
  • C++:重载操作符
  • django入门教程之cookie和session【六】
  • Pyecharts入门之绘制地图数据
  • 云端存储新纪元:SAN架构驱动的智能网盘解决方案
  • 高维小样本数据的在线流特征选择
  • LangChain开发(二)LangChain提示词模板Template使用
  • LeetCode Hot 100 - 矩阵 | 73.矩阵置零、54.螺旋矩阵、48.旋转图像、240.搜索二维矩阵II
  • STM32F103_LL库+寄存器学习笔记03 - GPIO设置输入模式,并轮询GPIO的电平状态
  • Day15 -实例 端口扫描工具 WAF识别工具的使用
  • 推荐一个可以自定义github主页的网站
  • WinSCP使用教程:(SFTP、SCP、FTP 和 WebDAV)
  • 【深度学习】扩散模型(Diffusion Model)详解:原理、应用与当前进展
  • 阿波罗Apollo相关配置
  • 计算机视觉3——模板匹配与拟合
  • 如何在 HTML 中嵌入外部字体,有哪些注意事项?
  • Java EE(12)——初始网络