MySQL安全管理&数据库维护&改善性能
管理用户
MySQL用户账号和信息存储在名为mysql的Mysql数据库中。
查看有哪些用户:select user from user;
账号操作
- 创建用户:
create user ben identified by 'password';
- mysql在保存之前会对其密码加密。
- 为了安全起见不建议直接插入行到user表来增加用户,最好用标记和函数来处理这些表。
- rename use 重命名:
RENAME USER ben TO bforta;
- 删除用户:
DROP USER bforta;
访问权限操作
- 查看访问权限:
show grants for bforta;
mysql> show grants for changshan;
+---------------------------------------+
| Grants for changshan@% |
+---------------------------------------+
| GRANT USAGE ON *.* TO 'changshan'@'%' |
+---------------------------------------+
1 row in set (0.00 sec)
USAGE ON *.*
表示根本没有权限。
-
设置权限: 使用GRANT语句。至少给出下列信息:
- 要授予的权限;
- 被授予访问权限的数据库或表;
- 用户名。
- 格式:grant 权限 数据库/表/字段 TO 用户;
GRANT SELECT ON crashcourse.* TO changshan
crashcourse.*
表示 crashcourse数据库的所有表。
-
撤销特定的权限:
GRANT 的反操作为REVOKE.
REVOKE SELECT ON crashcourse.* FROM changshan
GRANT和REVOKE可在几个层次上控制访问权限:
- 整个服务器,使用GRANT ALL和REVOKE ALL;
- 整个数据库,使用ON database.*;
- 特定的表,使用ON database.table;
- 特点的列。
- 特点的存储过程。
更改密码
- 设置指定用户的密码:
set password for changshan = Password('password')
- 设置当前用户的密码:
set password = Password('password')
数据库维护
包括以下几部分:
- 数据库备份
- 数据库维护:
- 检测表键是否正确:
analyze table orders;
- check table: 针对问题表进行检查。
- 从一个表删除大量数据,应该使用optimize table 来收回所用的空间,从而优化表的性能。
- 检测表键是否正确:
- 诊断启动问题:在排除系统启动问题时,首先应该尽量手动启动服务器。mysql服务器自身通过在命令行上执行mysqld启动。
- 查看日志文件,分为以下几种:
- 错误日志
- 查询日志
- 二进制日志
- 缓慢查询日志
注: - mysqld是用来启动mysql数据库的命令
- mysql是打开并执行sql语句的命令