MySQL 5.5+ 的一些安全设置


开发环境
Ubuntu 16.10
mysql: 5.7.17

设置默认编码格式

[mysql]
default-character-set=utf8

安全更新, 防止全表更新

SET sql_safe_updates=1;

safe update

SET sql_safe_updates=1, sql_select_limit=500, max_join_size=1000000;

safe update

关于 test 数据库

默认情况下,mysql.db表中包含的行表示任意用户可以访问test数据库和test_开头的数据库。
这些行的User字段的值为空,表示匹配任意用户。
这意味着这些数据库(test数据库和test_开头的数据库)默认可以被任意用户使用(即使没有权限的用户)。

设置数据库编码 set names utf8; ^1

mysql> show variables like "character_set_%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.05 sec)

mysql>

在默认情况下,mysql字符集为latin1,而执行了set names utf8;以后,character_set_clientcharacter_set_connectioncharacter_set_results等与客户端相关的配置字符集都变成了utf8,但character_set_databasecharacter_set_server等服务端相关的字符集还是latin1

Mysql的utf8其实是阉割版utf-8编码,Mysql中的utf8字符集最长只支持三个字节
如果你需要Mysql支持四字节的utf-8,可以使用 utf8mb4 编码。


参考文档


Author: Itaken
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source Itaken !
  TOC目录