了解MySQL和MariaDB用户及权限(二)

此前已经了解了用户帐户如何在MySQL或MariaDB数据库系统中工作,以及如何创建和删除它们。这一次的内容Hostease美国服务器商将介绍如何确保这些用户拥有对数据库进行实际更改的权限。

管理权限

首先,确定需要使用哪些命令来管理这些权限。与上次一样,需要使用根用户登录到数据库客户端来运行这些命令:

GRANT privilege_type ON database_name.table_name TO ‘user’@‘host’;

第一部分是GRANT命令,用于向用户授予权限。稍后将解释“privilege_type”,但希望读者还熟悉上一次引用用户帐户的 ‘user’@’host’方法。“database_name.table_name”是目前感兴趣的部分。每个MySQL或MariaDB服务器都能够处理由数据表组成的多个数据库。权限系统是非常精细的,允许将用户帐户权限指定到特定的表,这意味着可以确保用户帐户只能查看或操作管理员设置的用户帐户所需的准确数据。在本例中,通配符星号(*)可用于指定所有数据库或表。

REVOKE privilege_type ON database_name.table_name TO ‘user’@‘host’;

接下来,使用REVOKE命令,不出所料,它能从用户帐户中删除权限。命令格式与GRANT命令相同。要查看特定用户的权限,可以使用SHOW GRANTS命令,如下所示:

SHOW GRANTS FOR ‘user’@‘host’;

以下是具体的权限类型:

* CREATE——此项允许用户帐户创建一个新的表或数据库。

* DROP——此项允许用户帐户删除一个表或数据库。

* INSERT——此项允许用户帐户向表中添加新行。

* UPDATE——此项允许用户帐户更改表行数据。

* DELETE——此项允许用户从表中删除行。

* SELECT——此项允许用户查看数据库中的数据。

* ALL——此项给了一个用户帐户的所有权限,在指定的数据库、表或没有指定的任何数据或内容。

管理其他权限选项

这不是一个完整的权限类型列表,但它确实涵盖了在向数据库添加用户帐户时可能要使用的许多常用的权限类型。有关完整的列表,请参阅MySQL手册中的表13.3。以下是这个权限系统的实际运行情况:

GRANT ALL ON *.* TO ‘user’@‘host’;

该命令将数据库系统上的所有权限授予用户帐户‘user’@’host’。这通常不是一个好主意,因为根帐户已经有了这些权限,并且几乎不需要具有相同权限级别的第二个帐户。

GRANT ALL ON my_database.* TO ‘user’@‘host’;

以上命令授予用户帐户‘user’@’host’对数据库my_database的所有权限。

GRANT SELECT, INSERT, UPDATE, DELETE ON my_database.* TO ‘user’@‘host’;

在这个示例中,该命令允许用户帐户‘user’@’host’对my_database数据库中的所有表使用SELECT、INSERT、UPDATE和DELETE命令。

GRANT SELECT ON old_database.table_4 TO ‘user’@‘host’;

最后,上面的命令允许‘user’@’host’使用数据库old_database表table_4上的SELECT命令。创建用户并分配其权限后,最后一步是重新加载所有用户权限,以便他们可以使用数据库。这可以通过以下命令完成:

FLUSH PRIVILEGES;

以上就是使用MySQL或Mariadb数据库与用户合作的指南。现在读者应该对用户和权限的工作方式有了合理的理解,并且应该能够管理数据库的用户以满足管理员需求。更多相关内容可以了解一下 如何利用phpmyadmin设置mysql的权限