如何在MySQL中创建新用户并授予权限?
建站教程 2020-12-27 17:46 889

MySQL是一个流行的、应用广泛的数据库管理系统,它可以存储和组织数据,并允许用户检索数据。它带有大量的选项,可以授予用户对表和数据库的某些权限。在本指南中,您将了解如何在MySQL数据库中创建新用户并授予权限。

一、如何在MySQL中创建一个新用户

要创建一个新用户,首先要登录MySQL shell。

$ sudo mysql -u root -p

输入sudo密码,接着是设置MySQL数据库时提供的密码,然后按回车键。此后,你会看到欢迎提示。

要创建一个新用户,请使用以下命令。

MariaDB [none]> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

例如,要在数据库中创建一个用户名为'a5idccom'、密码为QkYKmw$5tec的新用户,命令如下。

MariaDB [none]> CREATE USER 'a5idccom'@'localhost' IDENTIFIED BY 'QkYKmw$5tec';

需要注意的几个问题

当在本地添加用户时,即在你安装了MySQL的系统上,用户的主机被指定为localhost,而不是IP地址。'localhost'意思就是'本机',MySQL对它的处理是唯一的。基本上,mysql客户端使用localhost来建立与本地安装的MySQL数据库服务器的连接。

到目前为止,a5idccom用户没有任何与数据库交互的权限。事实上,该用户甚至不能访问MySQL shell。

要授予用户对所有数据库(包括表)的完全访问权限,请运行以下命令:

MariaDB [none]> GRANT ALL PRIVILEGES ON * . * TO 'a5idccom'@'localhost';

在上面的命令中,星号分别指向用户可以访问的数据库和表。它授予用户在数据库上的所有权限--读、写、编辑和执行,包括跨其他数据库和表执行所有任务。

到目前为止,我们已经授予用户对数据库的全部访问权。虽然这在解释MySQL概念时很方便,但一般不建议这样做,因为这可能会给你的数据库带来安全风险。试想一下,如果一个黑客掌握了用户的密码,可能会发生什么。我们将在下一节进一步讨论如何分配特定的权限。

当您完成对用户的权限分配后,重新加载所有的权限,如图所示,使更改生效。

MariaDB [none]> FLUSH PRIVILEGES

二、如何授予不同的用户权限

下面是你可以授予用户的可能权限的细分。

ALL PRIVILEGES - 如前所述,这授予MySQL用户对特定数据库的全部访问权限。

CREATE - 允许用户创建新的数据库或表。

DROP - 允许用户删除数据库或用户。

INSERT - 允许用户在表中插入行。

DELETE - 允许用户从表中删除行。

SELECT--拥有'SELECT'权限,用户能够读取表的内容。

UPDATE--允许用户更新表中的行。

GRANT OPTION--用户可以授予或删除其他用户的权限。

要授予特定用户权限,请使用命令:

MariaDB [none]> GRANT permission_type ON database_name.table_name TO 'username'@'localhost';

此外,你还可以用一个星号符号为数据库中的所有表分配权限,如下所示。

MariaDB [none]> GRANT permission_type ON database_name.* TO 'username'@'localhost';

例如,要在数据库testdb的所有表上给'a5idccom'用户分配SELECT权限,运行命令。

MariaDB [none]> GRANT SELECT ON testdb.* TO 'a5idccom'@'localhost';

然后刷新权限,让更改生效。

MariaDB [none]> FLUSH PRIVILEGES;

此外,你还可以一次分配多个权限,用逗号隔开,如下所示。

MariaDB [none]> GRANT INSERT, UPDATE ON testdb.* TO 'a5idccom'@'localhost';

三、如何撤销MySQL的权限

要撤销一个用户的权限,使用以下命令。

MariaDB [none]> REVOKE permission_type ON database_name.table_name FROM 'username'@'localhost';

例如,要撤销用户'a5idccom'的INSERT权限,运行命令。

MariaDB [none]> REVOKE INSERT ON testdb.* FROM a5idccom'@'localhost';

MariaDB [none]> FLUSH PRIVILEGES

要查看用户当前的权限,执行。

MariaDB [none]> SHOW GRANTS FOR 'username'@'localhost';

执行命令后,我们可以看到'a5idccom'用户的INSERT权限已经被删除,只剩下testdb数据库的SELECT和UPDATE权限。

要测试使用新用户登录MySQL shell,首先要注销。

MariaDB [none]> quit;

然后再重新登录回来。

$ sudo mysql -u a5idccom -p

提供用户的密码,然后按ENTER键进入shell。

要删除一个用户,使用DROP命令,就像删除数据库时一样,

MariaDB [none]> DROP USER 'username'@'localhost';

至此本文就结束了,希望学会了MySQL数据库服务器中创建用户,并轻松地分配或撤销权限。

标签:

  • MySQL数据库