本教程将介绍 MySQL 数据库管理和安全的一些基础知识。
如果您不熟悉 MySQL,创建数据库和表是一个简单的过程,需要具有多个权限的用户执行 SQL 语句。语法如下所示:
CREATE DATABASE shop; USE shop; CREATE TABLE clients( id INT NOT NULL AUTO_INCREMENT, firstName VARCHAR(30) NOT NULL, lastName VARCHAR(30) NOT NULL, dept VARCHAR(10) NOT NULL, PRIMARY KEY (id) );
对于任何形式的数据库实施或管理,都需要一组具有“所有”权限的选定管理员 - 这些具有所有权限的管理员可以授予或创建其他用户可以访问和利用数据库以及所有其他访问权限来操作数据库或将数据添加到数据库中。
可以在初始安装期间创建管理帐户,稍后可以添加其他用户。
初次安装后,如果需要额外的管理帐户,管理人员可以使用以下 SQL(结构化查询语言)语句创建额外的管理帐户:
CREATE USER 'Ash'@'localhost' IDENTIFIED BY 'pass'; GRANT ALL PRIVILEGES ON *.* TO 'Ash'@'localhost' WITH GRANT OPTION;
此语句将创建主机“localhost”上名为“Ash”的帐户,可以访问所有数据库和所有表,并可以选择授予新用户权限或撤销现有用户的现有权限。
管理人员也有机会使用 SQL 语句添加具有较低权限的其他用户。例如: 员工 - 例如秘书和其他需要访问数据库中某些表内的数据并执行某些任务的员工;每个用户帐户都可以拥有独特的权限。
创建用户帐户是一个非常简单的过程,但复杂的组件需要一个计划 - 哪些用户可以访问哪些表以及这些用户可以调用哪些操作
为了创建一个新的用户帐户,管理人员可以使用以下 SQL 语句:
CREATE USER 'Awesome'@'localhost' IDENTIFIED BY 'pass';
上面的语句将为主机创建一个名为 Awesome 的用户 - 'localhost '。尚未为此帐户添加任何权限,但可以通过将以下 SQL 语句附加到上一条语句的末尾来简单地实现:
GRANT SELECT ON shop.clients TO 'Awesome'@'localhost';
此语句将为用户 Awesome 提供机会仅通过使用 SELECT 语句从客户端数据库中的商店表查询数据(即 USE 客户端;SELECT * FROM shop;)。
通过向用户 Awesome 授予此级别的权限,管理员还可以使用以下语句向用户授予资源数据库中任何内容的“ALL”权限:
GRANT ALL ON resources.* TO 'Awesome'@'localhost';
用户 Awesome 将能够成功使用以下 SQL 语句:
USE resources; SELECT * FROM tutorials;
对于秘书等可能需要查询、插入或更新商店数据库中的clients表数据的人员,我们可以使用以下SQL语法创建一个帐户;
CREATE USER 'secretary'@'localhost' IDENTIFIED BY 'pass'; GRANT SELECT, INSERT, UPDATE ON shop.clients TO 'secretary'@'localhost' WITH MAX_QUERIES_PER_HOUR 50 MAX_UPDATES_PER_HOUR 50 MAX_CONNECTIONS_PER_HOUR 5 MAX_USER_CONNECTIONS 1;
这将还限制秘书最多为:每小时 50 次查询、每小时 50 次更新、每小时 5 个连接以及一次 1 个连接。
对于可能需要引用存储在数据库中的所有表的其他工作人员商店数据库,但不以任何方式修改数据,管理员可以使用以下 SQL 语法创建帐户:
CREATE USER 'staff'@'localhost' IDENTIFIED BY 'pass'; GRANT SELECT ON shop.* TO 'staff'@'localhost';
如果用户已创建,但现在需要具有管理权限,具有 GRANT 权限的管理帐户可以使用以下 SQL 语句来更新它们:
REVOKE ALL PRIVILEGES ON *.* FROM 'user'@'host'; GRANT ALL ON *.* TO 'user'@'host'; FLUSH PRIVILEGES;
用户还可以使用以下 SQL 语句撤销其部分权限:
REVOKE ALL PRIVILEGES ON *.* FROM 'user'@'host'; GRANT SELECT ON shop.clients TO 'user'@'host'; FLUSH PRIVILEGES;
这将使用户“user”仅具有在客户数据库中的客户表中选择数据的权限。
我希望您发现此资源有用!