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语句的命令

附录权限表: