MySQL必知必会 | 安全维护性能
Posted llllliznc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL必知必会 | 安全维护性能相关的知识,希望对你有一定的参考价值。
全球化和本地化
关于mysql处理不同字符集和语言
字符集和校对顺序
数据库被用来存储和检索数据,不同的语言和字符集需要以不同的方式存储和检索,因此,MySQL需要适应不同的字符集,适应不同的排序方式
一些术语:
字符集:字母和富豪的集合
编码:某某个字符成员的内部表示
校对:规定字符如何比较的指令
使用字符集和校对顺序
查看MySQL所支持的字符集完整列表
SHOW CHARACTER SET;
查看所支持校对的完整列表
SHOW COLLATION;
确认系统使用的字符集和校对
SHOW VARIABLES LIKE 'character%';
SHOW VARIABLES LIKE 'collation%';
一般情况下,不同的表甚至不同的列都可能需要不同的字符集,可以在创建表的时候指定
CREATE TABLE table_name
(
col_name_1 type,
col_name_2 type CHARACTER SET character_name COLLATE collate_name
)DEFAULT CHARACTER SET character_name
COLLATE collate_name;
MySQL决定字符集和校对的方式
- 如果指定
CHARACTER SET
和COLLATE
两者,则使用这些值 - 如果只指定
CHARACTER SET
,则使用词字符集以及其对应的默认校对 - 如果两者都不指定,则使用数据库默认的字符集和校对
校对在对用ORDER BY
子句检索出来的数据排序时,起到重要的作用(如是否考虑大小写),如果需要用与常见表示不同的校对顺序排序特定的SELECT
语句,可以在语句自身中设置
SELECT * FROM table_nmae
ORDER BY COL_1,COL_2 COLLATE collate_name
COLLATE
还可以使用于GROUP BY
/HAVING
/聚集函数/别名
安全管理
关于访问控制和用户管理
访问控制
- MySQL服务器的安全基础是,用户应该对他们需要的数据具有合适的访问权
- 管理访问控制需要创建和管理用户账号
root
账号对整个MySQL数据库具有完全控制,在日常的MySQL操作中不应该使用它
管理用户
-
MySQL用户账号和信息存储在名为
mysql
的MySQL
数据库中,当需要获取所有用户账号列表时,可以使用以下代码USE mysql; SELECT user FROM user;
-
创建用户账号
CREATE USER user_name IDENTIFIED BY 'password';
INENTIFIED BY
指定的口令为纯文本
-
重命名一个用户账号
RENAME USEER user_name TO new_name;
-
删除用户帐号
DROP USER user_name;
删除用户账号及其相关权限
-
查看用户访问权限
SHOW GRANTS FOR user_name;
-
授予用户权限
GRANT option ON table_name.col_name TO user_name
-
撤销权限
REVOKE option ON table_nmae.col_name FROM user_name
-
可以被操作的权限
权限 说明 ALL
除了 GRANT OPTION
以外所有权限ALTER
CREATE
DELETE
DROP
EXECUTE
使用 CALL
和存储过程FILE
使用 SELECT INTO OUTFILE
和LOAD DATA INFILE
GRANT OPTION
INDEX
INSERT
LOCK TABLES
PROCESS
RELOAD
REPLICATION
SELECT
SHOW
SHUTDOWN
SUPER
UPDATE
USAGE
无访问权限 授权时,用户必须先存在,但是被授权的对象可以不存在,这样的副作用是,当某个数据库或表被删除时,相关的权限仍然存在,如果未来再次创建这些数据库和表,这些权限仍然起作用
-
更改口令
SET PASSWORD FOR user_name = Password('PASSWORD')
-- 更新当前登录用户的口令
SET PASSWORD = Password('password')
数据库的维护
备份数据
MySQL数据库时基于磁盘的文件,普通的备份系统和例程就能备份MySQL的数据,但是由于这些文件总是处于打开和使用的状态,普通的文件副本备份不一定总是有效
几种解决方案:
- 使用命令函实用程序
mysqldump
转储所有数据库内容到某个外部文件 - 可用命令行实用程序
mysqlhotcopy
从一个数据库复制所有数据 - 使用
BACKUP TABLE
或·SELECT INTO OUTFILE
转储所有数据到某个外部文件
为了保证所有数据都被写到磁盘(包括索引数据),可能需要在进行备份前使用 FLUSH TABLES
语句
进行数据库维护
ANALYZE TABLE
用来检查表健是否正确
CHECK TABLE
用来针对许多问题对表进行检查
诊断启动问题
服务器启动问题通常在对MySQL配置或服务器本身进行更改时出现
MySQL在这个问题发生时报告错误,但由于多数MySQL服务器是作为系统进程或服务自启动的,这个消息可能看不到
在排除系统启动问题时,首先应该尽量手动启动服务器
MySQL服务器自身通过在命令杭商执行mysqld
启动
几个重要的mysqld
命令行选项
--help
显示帮助--safe-mode
装在减去某些最佳配置的服务器--verbose
显示全文本消息--version
显示版本信息然后退出
查看日志文件
MySQL维护管理员依赖的一系列日志文件
主要日志文件有以下几种:
- 错误日志
- 查询日志
- 二进制日志
- 缓慢查询日志
改善性能
在诊断应用的滞缓现象和性能问题时,性能不良的数据库通常是最常见的祸因
性能优化讨论和分析的出发点:
- 硬件建议
- 专用服务器
- 调整内存分配、缓冲区大小
- 多线程
- 编写
SELECT
语句的方式 - 使用存储过程
- 正确的数据类型
- 检索用于数据
DELAYED
关键字- 开启和关闭自动提交
- 索引
- or 和 union
- like 和 fulltext
- 每条规则都会在某些情况下被打破
以上是关于MySQL必知必会 | 安全维护性能的主要内容,如果未能解决你的问题,请参考以下文章