原作者:Etel Sverdlov 转载&翻译来源:https://www.digitalocean.com/community/tutorials/how-to-create-a-new-user-and-grant-permissions-in-mysql
介绍
MySQL是一种开源数据库管理软件,可帮助用户存储,组织和以后检索数据。它有多种选项可以为表格和数据库中的特定用户授予细微差别的权限 - 本教程将简要介绍一些众多选项。
重点意味着什么
在本教程中,将突出显示用户需要输入或自定义的所有行!其余的应该主要是复制和可接受的。
如何创建新用户
在MySQL教程的第1部分中,我们以root用户身份完成了MySQL中的所有编辑,可以完全访问所有数据库。但是,如果可能需要更多限制,则可以使用自定义权限创建用户。
让我们从在MySQL shell中创建一个新用户开始:
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
注意:在本教程中在MySQL shell中添加用户时,我们将指定用户的主机localhost
而不是服务器的IP地址。localhost
是一个主机名,意思是“这台计算机”,MySQL专门处理这个特定的主机名:当有该主机的用户登录MySQL时,它将尝试使用Unix套接字文件连接到本地服务器。因此,localhost
通常在计划通过SSH连接到服务器或运行本地mysql
客户端连接到本地MySQL服务器时使用。
此时,newuser无权对数据库执行任何操作。事实上,即使newuser尝试登录(使用密码,密码),他们也无法访问MySQL shell。
因此,首先要做的是为用户提供他们所需信息的访问权限。
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost';
此命令中的星号指的是它们可以访问的数据库和表(分别) - 此特定命令允许用户读取,编辑,执行和执行所有数据库和表中的所有任务。
请注意,在此示例中,我们授予newuser对数据库中所有内容的完全root访问权限。虽然这有助于解释一些MySQL概念,但对于大多数用例来说可能是不切实际的,并且可能会使您的数据库的安全性处于高风险。
完成要为新用户设置的权限后,请务必重新加载所有权限。
FLUSH PRIVILEGES;
您的更改现在将生效。
如何授予不同的用户权限
以下是用户可以享受的其他常见可能权限的简短列表。
- 所有特权 - 正如我们之前看到的,这将允许MySQL用户完全访问指定的数据库(或者如果没有选择数据库,则跨系统进行全局访问)
- CREATE-允许他们创建新的表或数据库
- DROP-允许他们删除表或数据库
- DELETE-允许他们从表中删除行
- INSERT-允许它们将行插入表中
- SELECT-允许他们使用该
SELECT
命令读取数据库 - UPDATE - 允许他们更新表行
- GRANT OPTION-允许他们授予或删除其他用户的权限
要为特定用户提供权限,您可以使用此语法框架:
GRANT type_of_permission ON database_name.table_name TO ‘username’@'localhost’;
PS:一条授权命令可以配置多个权限,权限之间用英文逗号隔开
:"GRANT UPDATE, SELECT ON [database name].[table name] TO ‘[username]’@‘localhost’;"
如果要授予它们访问任何数据库或任何表的权限,请确保在数据库名称或表名称的位置放置星号(*)。
每次更新或更改权限时,请务必使用“刷新权限”命令。
如果您需要撤消权限,则语法结构几乎与授予权限相同:
REVOKE type_of_permission ON database_name.table_name FROM ‘username’@‘localhost’;
请注意,在撤消权限时,语法要求您使用FROM
,而不是TO
在授予权限时使用。
您可以通过运行以下命令来查看用户的当前权限:
SHOW GRANTS username
就像您可以使用DROP删除数据库一样,您可以使用DROP完全删除用户:
DROP USER ‘username’@‘localhost’;
要测试新用户,请键入以下内容注销:
quit
并在终端中使用此命令重新登录:
mysql -u [username] -p
结论
完成本教程后,您应该了解如何添加新用户并在MySQL数据库中授予他们各种权限。从这里开始,您可以继续探索和试验数据库的不同权限设置,或者您可能希望了解有关某些更高级别MySQL配置的更多信息。
有关MySQL基础知识的更多信息,我们建议您查看以下教程: