MySQL中用户管理简介MySQL中uter

2 02 2 年,某城市的一个项目面临MySQL用户管理的巨大挑战。
当时,我手头有几十个数据库帐户,每个帐户都有不同的权限要求。
我很困惑,不知道从哪里开始。

要创建新用户,我们必须创建 CREATEUSER 命令。
我记得有一次输入错误的用户名和密码。
当时我以为数据库损坏了。
后来我才发现我输入的用户名和密码有误。

为了更改用户权限,我们使用了 GRANT 命令。
有一次我给了一个用户太多的权限,并且该用户能够修改系统表。
还好我发现得及时,不然就出大问题了。

要删除用户,我们使用了 DROPSER 命令。
有一次,我不小心删除了一个用户的账户,吓出了一身冷汗。
幸运的是,备份成功并很快恢复。

为了保证我的数据库安全,我遵循一些最佳实践。
例如,不允许默认root用户登录、为每个新用户分配最低限度的必要权限、强制管理员用户使用强密码、定期更新MySQL版本等。

综上所述,用户管理是一个痛苦,但却是保证数据库安全的关键。
后来我才知道,这个看似简单的操作其实蕴含着很多学问。

MySQL的权限有哪些

嘿,你是在问 MySQL 权限吗?上周一位客户问我,这让我思考了这个问题。
你列出的 2 7 个权限相当广泛,但我实际上无法全部记住。
让我们重点关注一些关键点。

让我们谈谈您提到的内容:
1 使用是最基本的许可。
您还必须在数据库中拥有此权限。
正如你所说,默认情况下创建用户时,它提供对 mysql> 的访问。
'p1 '@'localhost' 由 '1 2 3 ' 标识;该命令为 p1 用户提供了这种基本能力。
有了这个权限,p1 可以使用用户名和密码连接MySQL,但连接后无法执行任何操作,例如无法查看表或创建表。
这个权限确实很特别。
看来真的无法“挽回”了。
这就像赋予用户“存在于数据库系统中”的能力。
你……去……;但无法使用 REVOKE 从数据库中删除用户 p1 要删除用户,通常可以通过直接删除 USER 表或使用 DROP USER 语句(如果用户名存在)来完成。

2 选择这个权限比较实用。
没有这个你甚至无法检查表格。
mysql> 在 pyt 上选择授予。
在'p1 '@'localhost'上;此命令使 p1 能够查询 pyt 数据库中的所有表。
然后可以使用 select from store 查询 p1 @localhost。
这是最常用的权限之一,控制最基本的数据读写权限。

3 创建这个权限,顾名思义,用于创建事物。
例如,创建新表、视图、存储过程等。
您执行的命令是 mysql> create grant on pyt。
在'p1 '@'localhost'上; p1 允许在 pyt 数据库中创建这些对象。
没有这个权限,如果P1 想使用CREATE TABLE shop2 (id int);创建表时会报错。

其实权限是这样的,又分为几个细分。
例如,你有insert、update、delete(控制增删改查)、alter(修改表结构)、drop(删除对象)、index(创建索引)、grant options(授予他人权限的能力)、execute(执行存储过程)、show数据库等。
每个权限控制一个特定的功能。

比如放在pyt上。
只允许p1 向pyt库中的表添加数据,但不能更改数据或检查数据。
改变皮特。
允许P1 修改表结构,例如添加和删除列。

你提到的几点是权限的核心,其他权限都是围绕这些基本操作细分的。
一旦理解了这些,您可能就会知道如何为用户分配基本功能。
但在实际使用中,一般不会授予用户这么多的权限。
它们都是基于“最小权限原则”,出于安全原因这已经足够了。

你是谁?想了解更多有关权限的信息吗?或者如果你想在特定场景下使用权限,我可以帮你学习如何配置。

MySQL中User字段详解用户身份识别与权限控制mysql中user字段

简单来说,MySQL的User字段是用来控制谁可以做什么的,就像一个ID号一样。
但它的设计相当有趣,尤其是与 Host 字段结合使用时。

我们先来说说最重要的事情。
用户字段不仅存储用户名,还必须包含主机名,例如“admin@1 9 2 .1 6 8 .1 .1 ”。
去年我们开始这个项目的时候,有的同学直接输入“admin”就直接报错,说“Host不能为空”。
还有一点就是权限控制是动态的。
去年 1 0 月测试新功能时,我们发现用户“test”仅启用了 SELECT 权限。
这样一来,他居然可以直接删除表数据了。
用行话来说,这称为权限穿透。
事实上,前线的一点点延误就让一切都崩溃了。

起初我以为更改权限意味着删除和添加新权限,但后来我意识到这是错误的。
REVOKE 和 GRANT 可以一起使用。
例如,如果先REVOKE删除所有权限,然后只使用GRANT授予INSERT,则用户将只有插入的能力。
很多人不注意这一点。

还有一个更重要的细节。
例如,当使用IDENTIFIED BY设置密码时,MySQL默认将其加密存储。
但如果是旧版本,你把密码明文保存就全完了。
去年我们迁移数据的时候,有一个系统直接使用IDENTIFIED BY“1 2 3 4 5 6 ”,结果被暴力破解。

说实话,这很令人困惑。
用户字段和主机字段必须一起查看。
单独改变是没有用的。
例如,“root@%”表示任何主机都可以以 root 身份登录,但“root@localhost”只能在本地登录。
如果玩得好,这个组合是安全的,但如果玩得不好,那就是噩梦。

建议您尽可能频繁地在 mysql.user 表上运行 SELECT 以查看谁登录到何处。
不要等到出了问题才后悔。
您认为哪些安全细节使用User字段时最容易被忽视的事情是什么?