MySQL8安全指南之账号控制与账户管理:添加帐户、分配权限、删除帐户

添加帐户、分配权限、删除帐户

要管理 MySQL 帐户,请使用用于该目的的 SQL 语句:

  • CREATE USERDROP USER 创建和删除帐户。

  • GRANTREVOKE 为帐户分配权限和撤销权限。

  • SHOW GRANTS 显示帐户权限分配。

创建帐户的另一个选择是使用GUI工具MySQL Workbench。此外,还有一些第三方程序提供MySQL帐户管理功能。phpMyAdmin就是这样一个程序。

创建帐户和授予权限

以下示例显示如何使用 mysql 客户端程序设置新帐户。这些示例假设MySQLroot帐户拥有CREATE USER权限以及它授予其他帐户的所有权限。

在命令行中,以 MySQL root 用户身份连接到服务器,在密码提示下输入正确密码:

shell> mysql -u root -p
Enter password: (enter root password here)

连接成功以后可以新增一个账户。

以下示例使用 CREATE USER 和 GRANT 语句来设置四个帐户(在您看到“password”的地方,替换一个适当的密码):

CREATE USER 'finley'@'localhost'
  IDENTIFIED BY 'password';
GRANT ALL
  ON *.*
  TO 'finley'@'localhost'
  WITH GRANT OPTION;

CREATE USER 'finley'@'%.example.com'
  IDENTIFIED BY 'password';
GRANT ALL
  ON *.*
  TO 'finley'@'%.example.com'
  WITH GRANT OPTION;

CREATE USER 'admin'@'localhost'
  IDENTIFIED BY 'password';
GRANT RELOAD,PROCESS
  ON *.*
  TO 'admin'@'localhost';

CREATE USER 'dummy'@'localhost';

由这些语句创建的帐户具有以下属性:

  • 两个账户的用户名都是finley。两个账户都是具有全局权限的超级用户。 只有当本地主机连接的时候'finley'@'localhost'账户才会被使用。 'finley'@'%.example.com' 账户的主机部分使用了'%'通配符,因此它可用于从 example.com 域中的任何主机进行连接。

    如果localhost有一个匿名用户帐户,那么'finley'@'localhost'帐户是必要的。如果没有'finley'@'localhost'帐户,那么当finley从本地主机连接并且finley被视为匿名用户时,匿名用户帐户将优先使用。这样做的原因是,匿名用户帐户的Host列值比'finley'@'%'帐户更具体,因此在用户表排序顺序中出现得更早。

  • 只用在本地通过admin连接的时候,'admin'@'localhost'账户才会被使用。它被授予全局 RELOADPROCESS 管理权限。这些权限使 admin 用户能够执行 mysqladmin reload、mysqladmin refreshmysqladmin flush-xxx 命令,以及 mysqladmin processlist。没有授予访问任何数据库的权限。您可以使用 GRANT 语句添加此类权限。

  • 'dummy'@'localhost'帐户没有密码(不安全,不建议使用)。该帐户只能用于从本地主机连接。不授予任何特权。

前面的示例在全局级别授予特权。下一个示例创建三个帐户,并授予它们较低级别的访问权限;也就是说,指向特定的数据库或数据库中的对象。每个帐户都有一个custom用户名,但主机名部分不同:

CREATE USER 'custom'@'localhost'
  IDENTIFIED BY 'password';
GRANT ALL
  ON bankaccount.*
  TO 'custom'@'localhost';

CREATE USER 'custom'@'host47.example.com'
  IDENTIFIED BY 'password';
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
  ON expenses.*
  TO 'custom'@'host47.example.com';

CREATE USER 'custom'@'%.example.com'
  IDENTIFIED BY 'password';
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
  ON customer.addresses
  TO 'custom'@'%.example.com';

这三个账户可以如下使用:

  • 'custom'@'localhost' 帐户拥有访问 bankaccount 数据库的所有数据库级权限。该帐户只能用于从本地主机连接到服务器。
  • 'custom'@'host47.example.com' 帐户具有访问expenses数据库的特定数据库级权限。该帐户只能用于从主机 host47.example.com 连接到服务器。
  • 'custom'@'%.example.com' 帐户具有特定的表级权限,可以从 example.com 域中的任何主机访问customer数据库中的addresses表。

检查帐户权限和属性

要查看帐户的权限,请使用 SHOW GRANTS

mysql> SHOW GRANTS FOR 'admin'@'localhost';
+-----------------------------------------------------+
| Grants for admin@localhost                          |
+-----------------------------------------------------+
| GRANT RELOAD, PROCESS ON *.* TO 'admin'@'localhost' |
+-----------------------------------------------------+

要查看帐户的非权限属性,请使用 SHOW CREATE USER

mysql> SET print_identified_with_as_hex = ON;
mysql> SHOW CREATE USER 'admin'@'localhost'\G
*************************** 1. row ***************************
CREATE USER for admin@localhost: CREATE USER 'admin'@'localhost'
IDENTIFIED WITH 'caching_sha2_password'
AS 0x24412430303524301D0E17054E2241362B1419313C3E44326F294133734B30792F436E77764270373039612E32445250786D43594F45354532324B6169794F47457852796E32
REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK
PASSWORD HISTORY DEFAULT
PASSWORD REUSE INTERVAL DEFAULT
PASSWORD REQUIRE CURRENT DEFAULT

启用print_identified_with_as_hex系统变量(从MySQL 8.0.17开始提供)会导致SHOW CREATE USER将包含不可打印字符的哈希值显示为十六进制字符串,而不是常规字符串文本。

撤销账户权限

要撤销帐户权限,请使用 REVOKE 语句。可以在不同级别撤销权限,就像可以在不同级别授予权限一样。

撤销全局权限:

REVOKE ALL
  ON *.*
  FROM 'finley'@'%.example.com';

REVOKE RELOAD
  ON *.*
  FROM 'admin'@'localhost';

撤销数据库级权限:

REVOKE INSERT,UPDATE,DELETE
  ON customer.addresses
  FROM 'custom'@'%.example.com';

撤销表级权限:

REVOKE INSERT,UPDATE,DELETE
  ON customer.addresses
  FROM 'custom'@'%.example.com';

要检查权限撤销的效果,请使用 SHOW GRANTS

mysql> SHOW GRANTS FOR 'admin'@'localhost';+---------------------------------------------+| Grants for admin@localhost                  |+---------------------------------------------+| GRANT PROCESS ON *.* TO 'admin'@'localhost' |+---------------------------------------------+

删除帐户

要删除帐户,请使用 DROP USER 语句。例如,删除之前创建的一些帐户:

DROP USER 'finley'@'localhost';DROP USER 'finley'@'%.example.com';DROP USER 'admin'@'localhost';DROP USER 'dummy'@'localhost';
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一. 账号口令 1.1 检查是否已启用密码复杂性要求(低危) 1.2 检查是否已正确配置密码长度最小值(低危) 1.3 检查是否按组进行用户管理(低危) 1.4 检查是否按照权限、责任创建、使用用户账号(低危) 1.5 检查是否已正确配置“复位帐户锁定计数器”时间(低危) 1.6 检查是否已正确配置帐户锁定阈值(低危) 1.7 检查是否删除或禁用高危帐户(低危) 1.8 检查是否已正确配置密码最长使用期限(低危) 1.9 检查是否已正确配置“强制密码历史”(低危) 1.10 检查是否已正确配置密码最短使用期限(低危) 1.11 域环境:检查是否已启用“域环境下禁止计算机帐户更改密码”策略(低危) 1.12 检查是否已更改管理帐户名称(低危) 1.13 检查是否已正确配置帐户锁定时间(低危) 二. 认证授权 2.1 检查是否已限制可关闭系统的帐户和组(低危) 2.2 检查是否已限制可从远端关闭系统的帐户和组(低危) 2.3 检查是否已限制“取得文件或其它对象的所有权”的帐户和组(低危) 2.4 检查是否已正确配置“从网络访问此计算机”策略(低危) 2.5 检查是否已正确配置“允许本地登录”策略(低危) 2.6 检查是否删除可远程访问的注册表路径和子路径(低危) 2.7 检查是否已限制匿名用户连接(低危) 2.8 检查是否删除可匿名访问的共享和命名管道(低危) 三. 日志审计 3.1 检查是否已正确配置应用程序日志(低危) 3.2 检查是否已正确配置审核(日志记录)策略(低危) 3.3 检查是否已正确配置系统日志(低危) 3.4 检查是否已正确配置安全日志(低危) 四. 协议安全 4.1 检查是否已开启Windows防火墙(低危) 4.2 检查是否已启用TCP/IP筛选功能(低危) 4.3 检查是否已修改默认的远程桌面(RDP)服务端口(低危) 4.4 检查是否已禁用路由发现功能(低危) 4.5 检查是否已正确配置重传单独数据片段的次数(低危) 4.6 检查是否已启用并正确配置源路由攻击保护(低危) 4.7 检查是否删除SNMP服务的默认public团体(低危) 4.8 检查是否已禁用失效网关检测(低危) 4.9 检查是否已启用并正确配置TCP碎片攻击保护(低危) 4.10 检查是否已启用并正确配置ICMP攻击保护(低危) 4.11 检查是否已正确配置TCP“连接存活时间”(低危) 4.12 检查是否已启用并正确配置SYN攻击保护(低危) 五. 其他安全 5.1 检查是否已关闭不必要的服务-Windows Internet Name Service (WINS)(高危) 5.2 检查是否已关闭不必要的服务-Remote Access Connection Manager(高危) 5.3 检查是否已禁止Windows自动登录(高危) 5.4 检查是否已关闭不必要的服务-Simple TCP/IP Services(高危) 5.5 检查是否已关闭不必要的服务-Simple Mail Transport Protocol (SMTP)(高危) 5.6 检查是否已关闭不必要的服务-DHCP Client(高危) 5.7 检查是否已关闭不必要的服务-Message Queuing(高危) 5.8 检查是否已关闭不必要的服务-DHCP Server(高危) 5.9 检查系统是否已安装最新补丁包和补丁(中危) 5.10 检查是否已安装防病毒软件(中危) 5.11 检查是否已禁用“登录时无须按 Ctrl+Alt+Del”策略(低危) 5.12 检查是否已创建多个磁盘分区(低危) 5.13 检查是否已启用并正确配置屏幕保护程序(低危) 5.14 检查是否已启用Windows数据执行保护(DEP)(低危) 5.15 检查是否已禁用Windows硬盘默认共享(低危) 5.16 检查磁盘分区是否都是NTFS文件系统(低危) 5.17 检查是否已关闭Windows自动播放(低危) 5.18 域环境:检查是否已正确配置域环境下安全通道数据的安全设置(低危) 5.19 域环境:检查是否已启用“域环境下需要强会话密钥”策略(低危) 5.20 域环境:检查是否已启用“需要域控制器身份验证以解锁工作站”策略(低危) 5.21 检查是否已正确配置“锁定会话时显示用户信息”策略(低危) 5.22 检查是否已启用“当登录时间用完时自动注销用户”策略(低危) 5.23 检查是否已正确配置“提示用户在密码过期之前进行更改”策略(低危) 5.24 检查是否已启用并正确配置Windows网络时间同步服务(NTP)(低危) 5.25 检查共享文件夹的权限设置是否安全(低危) 5.26 域环境:检查是否已正确配置“可被缓存保存的登录的个数”策略(低危) 5.27 检查是否已正确配置服务器在暂停会话前所需的空闲时间量(低危) 5.28 检查是否已启用“不显示最后的用户名”策略(低危) 5.29 检查是否已启用并正确配置Windows自动更新(低危)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值