MySQL手记:用户和数据安全性

众所周知,但凡需要等到MySQL数据库都需要用已有的用户名和用户的密码。而MySQL的用户信息是存放在系统自带的mysql数据库中的user表中。如果创建了一个新用户,那么这个表中就会有一个新记录。MySQL的安全系统很灵活,它允许以多种不同方式设置用户权限,比如创建用户:

CREATEUSER ‘king’@'localhost’ IDENTIFIED BY ‘queen’;

IDENTIFIED BY后面定义的是新用户密码。至于删除用户:

DROP USER ‘king’@'localhost‘;

设置用户属性包括两部分,更改用户名和修改密码:

RENAME USER ‘king’@'localhost‘ TO ‘king2′@’localhost‘;
SET PASSWORD FOR ‘king’@'localhost‘=PASSWORD(‘queen1′);

GRANT与REVOKE是一对权限设置的SQL命令,GRANT用于授予权限,而REVOKE则是回收权限。比如授予king用户查询XS表的权限:

GRANT SELECT ON XS TO king@localhost;

授予king用户更新Employees表的Name和Sex的权限:

GRANT UPDATE(Name, Sex) ON Employees TO king@localhost;

MySQL中授予表和列的权限如下:

SELECT、INSERT、DELETE、UPATE、REFERENCES、CREATE、ALTER、INDEX、DROP、ALL

而授予数据库的则多出以下几个:

CREATE TEMPORARY TABLES、CREATE VIEW、SHOW VIEW、CREATE ROUTINE、ALTER ROUTINE、EXECUTE ROUTINE、LOCK TABLES

比如授予YGGL的查询权限给king用户:

GRANT SELECT ON YGGL.* TO king@localhost;

GRANT后面还可以更加多的子句:

WITH GRANT OPTION 授予一用户的权限同样适用于其他用户
WITH MAX_QUERIES_PER_HOUR 每小时查询数据库的次数
WITH MAX_CONNECTIONS_PER_HOUR 每小时连接的次数
WITH MAX_UPDATES_PER_HOUR 每小时更新的次数
WITH MAX_USER_CONNECTIONS 每小时最大的用户连接数

REVOKE是回收权限的意思,用法其实和GRANT近乎一样:

REVOKE SELECT ON XS FROM king@localhost;

MySQL还支持表维护语句:

更新表中的索引的可压缩性:

ANALYZE TABLE Employees:
SHOW INDEX FROM XS;

检查表是否存在错误的语句,后续还可以添加QUICK、FAST、MEDIUM、EXTENDED、CHANGED选项:

CHECK TABLE Salary FAST;

获得校验和的命令,后面可以添加QUICK和EXTENDED选项:

CHECKSUM TABLE Salary:

由于长期读写表,表会产生很多碎片,OPTIMIZE就是用来减少碎片提高速度的:

OPTIMIZE TABLE Salary;

修复表的错误:

REPAIR TABLE Salary;

该文章发布在 数据库,标签:, 。收藏该永久链接

有 1 条《MySQL手记:用户和数据安全性》的回复

  1. 太阳雨 说到:

    路过

    回复回复

发表评论

您的电子邮箱不会被公开。 标记为 * 的区域必须填写

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">