您的位置:首页 > 房产 > 家装 > 微信网站建设多少钱_吉林疫情最新消息今天新增病例_怎么开通百度推广账号_网站链接提交

微信网站建设多少钱_吉林疫情最新消息今天新增病例_怎么开通百度推广账号_网站链接提交

2025/1/1 14:13:54 来源:https://blog.csdn.net/zhuguoli200851/article/details/144788984  浏览:    关键词:微信网站建设多少钱_吉林疫情最新消息今天新增病例_怎么开通百度推广账号_网站链接提交
微信网站建设多少钱_吉林疫情最新消息今天新增病例_怎么开通百度推广账号_网站链接提交

要管理MySQL帐户,请使用为此准备帐户管理SQL:

CREATE USER和DROP USER创建和删除帐户。

GRANT和REVOKE为帐户分配和撤销权限。

SHOW GRANTS显示帐户权限分配。


帐户管理语句使服务器对基础授权表进行适当的修改,不鼓励使用INSERT、UPDATE或DELETE等语句直接修改授权表,风险自负。服务器可以忽略因此类修改而格式错误的行。对于任何修改授权表的操作,服务器都会检查表是否具有预期的结构,如果没有,则会产生错误

创建帐户的另一种选择是使用GUI工具MySQLWorkbench。此外,一些第三方程序提供了MySQL帐户管理功能,如phpMyAdmin

创建帐户和授予权限

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

在命令行,以MySQLroot用户身份连接到服务器,在密码提示符处提供适当的密码:

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

连接到服务器后,您可以添加新帐户。以下示例使用CREATE USER 和GRANT语句设置四个帐户(在您看到'password'的地方,替换适当的密码):

CREATE USER 'finley'@'localhost'IDENTIFIED BY 'password';
GRANT ALLON *.*TO 'finley'@'localhost'WITH GRANT OPTION;CREATE USER 'finley'@'%.example.com'IDENTIFIED BY 'password';
GRANT ALLON *.*TO 'finley'@'%.example.com'WITH GRANT OPTION;CREATE USER 'admin'@'localhost'IDENTIFIED BY 'password';
GRANT RELOAD,PROCESSON *.*TO 'admin'@'localhost';CREATE USER 'dummy'@'localhost';

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

  • 两个帐户的用户名为finley。两者都是超级用户帐户,具有完全的全局权限,可以做任何事情。'finley'@'localhost'帐户只能在从本地主机连接时使用。'finley'@'%.example.com'帐户在主机部分使用'%'通配符,因此可以从example.com域名的任何主机连接。

  • 如果localhost有匿名用户帐户,则'finley'@'localhost'帐户是必要的。如果没有'finley'@'localhost'帐户,则当finley从本地主机连接并且finley被视为匿名用户时,该匿名用户帐户优先。原因是匿名用户帐户比'finley'@'%'帐户具有更具体的Host列值,因此在user表排序顺序中更早。(有关user表排序的信息,请参见MYSQL访问控制,第1阶段:连接验证)

  • “admin”@“localhost”帐户只能由管理员用于从本地主机连接。它被授予全局RELOAD和PROCESS管理权限。这些权限使管理员用户能够执行mysqladmin reload、mysqladmin refresh和mysqladmin flush-xxx命令以及mysqladmin processlist。访问任何数据库都没有权限。您可以使用GRANT语句添加此类权限。

  • 'dummy'@'localhost'帐户没有密码(这是不安全的,不推荐)。当前账户只能从本地主机连接,并且没有任何权限。你需要通过 GRANT 语句为该账户授予权限,以便它可以执行特定的操作。

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

CREATE USER 'custom'@'localhost'IDENTIFIED BY 'password';
GRANT ALLON bankaccount.*TO 'custom'@'localhost';CREATE USER 'custom'@'host47.example.com'IDENTIFIED BY 'password';
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROPON expenses.*TO 'custom'@'host47.example.com';CREATE USER 'custom'@'%.example.com'IDENTIFIED BY 'password';
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROPON customer.addressesTO 'custom'@'%.example.com';

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

  • 'custom'@'localhost'帐户具有访问bankaccount数据库的所有数据库级权限。该帐户只能用于从本地主机连接到服务器。
  • 'custom'@'host47.example.com'帐户具有访问expenses数据库的特定数据库级权限。该帐户只能用于从主机host47.example.com连接到服务器。
  • 'custom'@'%.example.com'帐户具有特定的表级权限,可以从example.com域中的任何主机访问customer数据库中的address表。由于帐户名称的主机部分使用了%通配符,因此该帐户可用于从example.com域中的所有计算机连接到服务器。

检查帐户权限和属性

要查看帐户的权限,请使用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系统变量会导致SHOW CREATE USER将包含不可打印字符的哈希值显示为十六进制字符串,而不是常规字符串文字。

撤销帐户特权

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

撤销全局权限:

REVOKE ALLON *.*FROM 'finley'@'%.example.com';REVOKE RELOADON *.*FROM 'admin'@'localhost';

 撤销数据库级权限:

REVOKE CREATE,DROPON expenses.*FROM 'custom'@'host47.example.com';

撤销表级权限:

REVOKE INSERT,UPDATE,DELETEON customer.addressesFROM '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';