一、表名 和 数据库名 不要用大小写混合(即驼峰式),应该全部用小写,使用下划线作为连接符。

Linux中表名默认区分大小写,Windows中默认不区分(全部转为小写),相互间的导入导出会有问题!!

> 修改配置使Linux下MySQL不区分大小写
1、ROOT用户登录,vi /etc/my.cnf
2、找到 [mysqld],在里面加入一行 lower_case_table_names=1
3、重启数据库 service mysqld restart

在Thinkphp中,M('表名')方法,大小写这种形式的表名会自动被转为下划线形式而导致无法读取,只能使用 M() 空方法来操作数据库,会给后面的开发带来诸多不便。

注意1:修改此配置时,会导致原来代码中的大写的数据库名读不了,而且MySQL-Front工具显示小写但打不开数据库,而phpMyAdmin则仍然显示大写名且可以管理,数据库名在此状态下大小写不统一,非常尴尬。所以必须先把数据库中的数据库名和代码中的数据库名全改成小写的,然后再改这个配置项。而MySQL没有直接修改数据库名的功能,只能在网站很低流量的时候(通常是凌晨),新建一个小写的数据库名把所有表都复制过去,再上传修改好的代码。

注意2:修改此配置时,会导致原来的大写的表名读取不了,MySQL-Front中能显示,但打不开表,phpMyAdmin中则没有这个表显示出来。查了一遍资料,原来是这样:为0时(Linux默认),大小写敏感,创建和查询都是区分大小写;为1时,创建表以小写,查询表也是以小写;为2时,创建表区分大小写,查询表以小写。所以对于原来的表名就有大写的数据库,设置这个参数非但不能兼容大小写,而且还会使本来有大写字母的表 无论写的SQL是大写还是小写 都查不出来。所以解决方案是,先截图保存现在的数据库表名,在网站低峰期修改表名为小写,再修改这个配置项,然后重启MySQL。注意修改表名到重启MySQL成功之前这一段时间,代码运行是会报错的。重启MySQL之后,网站就可以正常运行了。而代码中的SQL语句表名比较多而繁杂,可以慢慢改。

二、表格式

数据表一般使用 MyISAM 格式,少数修改非常频繁的数据表(如各种日志)使用 InnoDB 格式,通常使用 utf8_general_ci 编码。

三、写的代码中SQL关键字使用大写作为规范

比如 SELECT sth FROM theorder WHERE swhere ORDER BY id DESC; 这样用大写关键字写可以非常直观地分辨出语句的段落,而使用小写的话则分辨起来比较费神,也容易看错。况且,网上的参考资料也绝大部分是使用大写关键字,突然看到小写的话觉得比较突兀,而大小写混用的话情况会遭。

四、注意SQL的关键字非常多

like(喜欢数,sql关键字为模糊查询),order(订单,sql关键字为排序),等等这些很可能被误用而导致一些SQL语句不能执行。设计时注意规避,包括表名、列名。这里有个SQL关键字列表

五、如何让 MySQL where 查询条件区分大小写:

根本原因:MySQL一般的数据库编码格式都是 utf8,utf8_general_ci。

其中的ci是 case insensitive 的意思,即大小写不敏感!所以,查询的时候所用的条件是不区分大小写的。

比如:

SELECT * FROM member WHERE name='batsing'

会把名为 batsing 和 Batsing 等大小写不一样的都选了出来

解决方案1:在查询语句中的末尾加上  collate utf8_bin,即是指定该条语句区分大小写。但有些会报错,要自己多调试。如 :

SELECT * FROM member WHERE name='batsing' collate utf8_bin

解决方案2:修改数据库类型,可以修改整个数据库,也可以修改单个表,这个要根据自己的项目来决定,改为 utf8_bin 编码格式。

六、服务器上每个网站要用独立的SQL用户

比如 batsing.com 就使用 batsing 用户,设置单独的密码,而且数据库权限为一个数据库,不能操作其它不相关数据库。

如果可以设置多个数据库用户,那么应该分别设置代码使用的MySQL用户和管理使用的MySQL用户。代码使用的数据库用户只有localhost(如果数据库与代码不同服务器则加上指定几个IP),一般只需要分配 数据行的增删改查权限 ,如果代码是需要安装的(开源项目如wordpress,ecshop等)则添加 表的增删改索引权限 ,安装完后再去除表的权限。而管理账号最好设置登录权限为仅本地(phpMyAdmin用)和限定几个IP(用于远程管理)。注意不同的数据库用户账号和密码应该设置不同。下图所示是MySQL-Front的用户权限设置界面>>

如果只有一个数据库用户(虚拟空间),通常都是一个项目用一个空间、一个SQL空间和用户,那么只能从代码方面防SQL注入了。

没什么特别重大的事情不要以 root 用户登录和使用mysql。这些数据库配置只针对服务器,对于本地开发机不一定需要这样,直接用 root 也可以,但开发中也需要注意代码中账号的权限,不建议代码中对 表的结构 有操作。

七、不要在正式项目使用 test数据库以及 test_开头 的数据库

因为这些数据库是开放给所有的数据库用户的。

八、项目开发上线后,不宜对表和字段进行重命名、删除的操作

因为线上可能会出现代码需要回滚旧版的情况,如果修改或删除了表或字段的名字,会导致旧版的代码不能运行,只得又修改数据库。在线上修BUG的紧张时刻,越多操作越容易出错。而只是增加表或字段的话,则回滚旧版代码也不会出现数据库的表与代码的兼容问题,数据库不需要任何修改。

MySQL配置、使用规范的更多相关文章

  1. Mysql配置信息

    MySQL配置信息 MySQl基本 由MySQL AB公司开发,隶属于Oracle公司 默认端口:3306 超级用户:root MySQL目录结构 两种安装方式 ZIP安装 MSI安装(仅Window ...

  2. linux下安装apache与php;Apache+PHP+MySQL配置攻略

    1.apache   在如下页面下载apache的for Linux 的源码包    http://www.apache.org/dist/httpd/;   存至/home/xx目录,xx是自建文件 ...

  3. MySQL 配置

    MySQL 配置 1.服务启动: (1)使用 service 启动:service mysqld start (2)使用 mysqld 脚本启动:/etc/inint.d/mysqld start ( ...

  4. mysql配置mysql-proxy读写分离

    MySQL配置读写分离 192.168.23.131与192.168.23.132两台服务器,131是主,132是从,131是读写,132是只读.myql-proxy的IP是192.168.23.13 ...

  5. mysql配置之skip-external-locking

    转载:http://www.kuqin.com/database/20120815/328905.html MySQL的配置文件my.cnf中默认存在一行skip-external-locking的参 ...

  6. MySQL配置

    一.登录MySQL 要登录到MySQL只需要使用如下命令. mysql -h localhost -u root -p localhost:IP地址: root:用户名: database:数据库名( ...

  7. hive 的mysql配置

    hive默认使用的是Derby数据库,Derby是一个嵌入式数据库,数据库一般创建在运行hive命令的目录,如果切换目录运行,则找不到数据库 hive mysql配置: 官网地址:https://cw ...

  8. 2016年5月19日php,mysql配置

    1.php配置 1. 配置disable_functiondisable_functions = eval,assert,popen,passthru,escapeshellarg,escapeshe ...

  9. CentOS6.5 MySQL 配置设置总结笔记

    三.登录MySQL 登录MySQL的命令是mysql, mysql 的使用语法如下:  mysql [-u username] [-h host] [-p[password]] [dbname]  u ...

  10. MySql配置参数很全的Mysql配置参数说明

    MySql配置参数 很全的Mysql配置参数说明 1. back_log 指定MySQL可能的连接数量.当MySQL主线程在很短的时间内得到非常多的连接请求,该参数就起作用,之后主线程花些时间(尽管很 ...

随机推荐

  1. jQuery实现右上角点击后滑下来的竖向菜单

    效果体验请点击这里:http://keleyi.com/a/bjad/27095rgj.htm 这个菜单我觉得可以做成在线客服之类的,点击下滑后,带关闭按钮,因此在不想显示的时候可以关掉它. 以下是源 ...

  2. 如何使用jQuery 制作全屏幕背景的嵌入视频

    实际效果查看:http://keleyi.com/keleyi/phtml/jqtexiao/28.htm 请使用支持HTML5的浏览器查看本效果. 完整代码如下: <!doctype html ...

  3. 鼠标悬停显示CSS3动画边框

    效果体验:http://keleyi.com/keleyi/phtml/css3/14.htm 以下是代码: <!DOCTYPE html> <html xmlns="ht ...

  4. 深入浅出node(1) Node简介

    这一系列主要是自己在学习深入浅出node.js这本书的学习笔试,部分加入了自己的一些理解 分享给一起学习node的小伙伴 自己还是个初学者 有很多地方理解的不到位 一起交流 一 什么是node 1.1 ...

  5. 在vs2012中用C#开发Android应用Xamarin环境搭建

    Xamarin是Mono创始人Miguel de Icaza创建的公司,旨在让开发者可以用C#编写iOS, Android, Mac应用程序,也就是跨平台移动开发. 简介 Xamarin是基于Mono ...

  6. 钉钉js依赖库学习

    看别人用的依赖库的好处在于,你知道有什么可以用,什么可以借鉴.(钉钉——协作桌面应用) PS:人最怕是不知道,而不是你不会. 1. jQuery 钉钉使用了1.9.1版本的jQuery,jQuery作 ...

  7. 用JS做一个简单的电商产品放大镜功能

    使用js制作一个简单的产品放大图 购物网站的产品页经常会放有一个产品展示图区.该图区有一个功能就是产品图的放大功能,移动左侧的焦点区域,可以放大细节部分观看,详情如下图.实现该功能的方法也非常简单. ...

  8. OC笔记一:Objective-C简介

    1.OC简介 全称:Objective-C,是扩充C的面向对象编程语言,主要用于iOS和Mac OS开发. C语言的基础上,增加了一层最小的面向对象语法 完全兼容C语言 可以在OC代码中混入C语言代码 ...

  9. SharePoint Conference 2014 Keynote

    让我们来看看今年 SharePoint Conference 2014 的重点都是些什么内容.虽然 BI 那个视频很有趣儿,但是 keynote 可能更重要一些,所以,先研究 keynote. 概括来 ...

  10. 架构验证过程发现非数据类型错误 validation found non-data type errors

    问题: infopath报一下错误 validation found non-data type errors 架构验证过程发现非数据类型错误 原因: 重复表字段在后台代码里要一一对应,否则报错. 错 ...