众所周知,但凡需要等到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;
