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数据库