MySQL是一种流行且广泛使用的数据库管理系统,用于存储和组织数据并允许用户对其进行检索。它带有大量选项,可向用户授予对表和数据库的某些权限。

在本指南中,您将学习如何在MySQL数据库中创建新用户并授予权限。

如何在MySQL中创建新用户

要创建新用户,请首先登录MySQL Shell。

linuxmi@linuxmi:~/www.linuxmi.com$ mysql -u root -p

输入sudo密码,接着是输入在设置MySQL数据库时的密码,然后按ENTER。此后,您将得到如下提示。

 连接到MySQL Shell

要创建新用户,请使用以下语法:

mysql> CREATE USER ‘newuser’@’localhost’ IDENTIFIED BY ‘password’;

例如,要在数据库中创建一个名为“linuxmi”的新用户,请调用以下命令:

mysql> CREATE USER ‘linuxmi’@’localhost’ IDENTIFIED BY ‘www.LinuxMi.com’;

需要牢记的几点

当在本地添加用户时,例如,在安装MySQL的系统上,用户的主机被指定为localhost,而不是IP地址。关键字’ localhost ‘翻译成’这台计算机’,MySQL对它的处理是独一无二的。基本上,mysql客户端使用localhost来建立与本地安装的MySQL数据库服务器的连接。

到目前为止,linuxmi用户没有任何与数据库交互的权限。 实际上,用户甚至无法访问MySQL Shell。

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

mysql> GRANT ALL PRIVILEGES ON * . * TO ‘linuxmi’@’localhost’;

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

到目前为止,我们已经授予用户对数据库的完全访问权。虽然这有助于解释MySQL概念,但通常不建议这样做,因为它可能会对数据库构成安全风险。试想一下如果黑客得到了用户的密码会发生什么。在下一节中,我们将进一步讨论如何分配特定的权限。

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

mysql> FLUSH PRIVILEGES;

如何授予不同的用户权限

以下是你可以授予用户的可能权限的分类:

  • ALL PRIVILEGES – 如前所述,这授予MySQL用户对特定数据库的完全访问权限。
  • CREATE – 允许用户创建新的数据库或表。
  • DROP – 使用户可以删除数据库或用户。
  • INSERT – 允许用户在表中插入行。
  • DELETE – 允许用户从表中删除行。
  • SELECT – 具有“ SELECT”权限,用户能够读取表的内容。
  • UPDATE – 允许用户更新表中的行。
  • GRANT OPTION –用户可以授予或删除其他用户的特权。

要授予特定用户权限,请使用以下语法:

mysql> GRANT permission_type ON database_name.table_name TO ‘username’@’localhost’;

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

mysql> GRANT permission_type ON database_name.* TO ‘username’@’localhost’;

例如,要在数据库linux_db的所有表上为’ linuxmi ‘用户分配SELECT权限,运行以下命令。

mysql> GRANT SELECT ON linux_db.* TO ‘linuxmi’@’localhost’;

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

mysql> FLUSH PRIVILEGES;

另外,您可以一次分配多个权限,方法是用逗号分隔它们。如下图所示:

mysql> GRANT INSERT, UPDATE ON linux_db.* TO ‘linuxmi’@’localhost’;

向数据库分配多个权限

如何撤销MySQL权限

要撤消用户的权限,请使用以下语法:

mysql> REVOKE permission_type ON database_name.table_name FROM ‘username’@’localhost’;

例如,要撤消用户“linuxmi”的INSERT权限,请运行命令。

mysql> REVOKE INSERT ON linux_db.* FROM ‘linuxmi’@’localhost’;

mysql> FLUSH PRIVILEGES;

撤消MySQL权限

要查看用户当前的权限,请执行以下操作:

mysql> SHOW GRANTS FOR ‘username’@’localhost’;

从下面的输出中,我们可以看到“xxvi”用户已删除了INSERT权限,而在linux_db数据库上仅保留了SELECT和UPDATE权限。

mysql> SHOW GRANTS FOR ‘xxvi’@’localhost’;

检查用户MySQL权限

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

mysql> quit;
Bye

然后再次登录。

linuxmi@linuxmi:~/www.linuxmi.com$ sudo mysql -u linuxmi -p

提供用户密码,然后按Enter键访问该Shell程序。

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

mysql> DROP USER ‘username’@’localhost’;

总结

OK,希望到目前为止,您可以在MySQL数据库服务器中创建用户并轻松分配或撤消权限。

发表评论