我爱大自然: 鲁肉饭之大数据 - 这是一个围绕着“大”的故事
以下我要写的文章,其实不是我爱写的文章类型,因为这种文章的逻辑不通,而且对科技界一点贡献也没有。再者我也不喜欢吃鲁肉饭,这篇算是比较没有营养的文章,大家可以当作笑话看看就好。不过我还是有些“大数据”的观念想跟大家分享。
以下我要写的文章,其实不是我爱写的文章类型,因为这种文章的逻辑不通,而且对科技界一点贡献也没有。再者我也不喜欢吃鲁肉饭,这篇算是比较没有营养的文章,大家可以当作笑话看看就好。不过我还是有些“大数据”的观念想跟大家分享。
1. 备份单一数据库:
$ mysqldump -u Username -p --opt DatabaseName > Backup.sql
2. 仅备份特定数据库下的资料表:
$ mysqldump -u Username -p --opt DatabaseName Table1 Table2... > Backup.sql
3. 仅汇出资料表结构:
$ mysqldump -u Username -p --opt --no-data DatabaseName > Backup.sql
4. 备份全部的数据库:
$ mysqldump -u Username -p -A --opt > AllBackup.sql
1. 建立数据库,再从备份档汇入单一数据库:
$ mysqladmin -u Username -p create DatabaseName
$ mysql -u Username -p DatabaseName < Backup.sql
2. 从备份档汇入全部的数据库 (不需先建立数据库):
$ mysql -u Username -p < AllBackup.sql
状况 1.
汇入数据库时出现错误讯息: Unknown collation: 'utf8mb4_unicode_ci' 或 Unknown collation: 'utf8mb4_unicode_520_ci'
说明:
MySQL 于 v5.5.3 版之后才有“utf8mb4”的编码格式。原本 utf8 的最大编码长度为 3bytes,而 utf8mb4 的最大编码长度为 4bytes,因此它比 utf8 可以储存更多的字符。但是以常用的文字来讲,utf8 已经完全足够使用了。若不升级 MySQL Server,则只须将汇入的字符编码格式改为原本的 utf8。
解决方法:
先将备份档中的 utf8mb4 字串替换成 utf8: (以下的三行指令需依照顺序执行)
$ sed -i 's/utf8mb4_unicode_ci/utf8_general_ci/g' Backup.sql $ sed -i 's/utf8mb4_unicode_520_ci/utf8_general_ci/g' Backup.sql $ sed -i 's/utf8mb4/utf8/g' Backup.sql
全部替换完再进行汇入:
$ mysql -u Username -p DatabaseName < Backup.sql
状况 2.
以 mysqldump 汇出数据库时出现错误讯息: Got error: 1044: Access denied for user 'backup'@'localhost' to database 'test' when using LOCK TABLES
说明:
这错误讯息已说明了用来执行 mysqldump 的帐号没有“LOCK TABLES”权限! 通常用 root 帐号汇出数据库不会发生这个问题,因为我们会给 root 所有的权限。然而我们在设定其它帐号时可能会忘了给它设定“LOCK TABLES”权限,而执行 mysqldump 至少需要“SELECT”与“LOCK TABLES”权限才行,最好再加上“SHOW VIEW”、“EVENT”与“TRIGGER”。
解决方法:
重新授予用户权限:
grant SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER on *.* to 'backup'@'localhost' identified by '{Password}';
flush privileges;
状况 3.
从 cpanel 下载的 MySQL 档案格式为 *.gz,可以用 gunzip 解压缩:
$ gunzip Backup.sql.gz
注意: 使用 gunzip 解压缩后,原本的 *.gz 会被删除!!若要保留旧档,须改用下列指令:
$ gunzip -c Backup.sql.gz > Backup.sql
MySQL 的数据库放在 /var/lib/mysql 下,以数据库的名称做为目录的名称。直接将 /var/lib/mysql 下的数据库目录用 tar 指令个别压缩起来即可做为备份。要还原再把档案解压缩回去。
要以这种方式执行备份与还原都必须先停止 MySQL 的服务:
$ service mysqld stop
这是我在 Facebook 上看到的安全资讯,我觉得很重要,也适用在任何的网站套件上。
以 WordPress 为例,首先,请查看你的 WordPress 目录下是否有这些档案:
|
|
今天被一个 Bug 困住好久,可能是之前自己的手误造成!!
原因就是...MySQL 的字段名称竟然可以使用空白字符,而且还可以放在第一个字符,我真是学艺不精!!
经测试,连资料表的名称也可以使用空白字符:
CREATE TABLE ` test table` ( ` field 1` TINYINT NOT NULL , PRIMARY KEY ( ` field 1` ) ) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_unicode_ci;
上面看得出我在资料表与字段的名称都用了空白字符吗? 而且还是放在第一个字符!
我想,如果想要陷害别人绝对可以用 MySQL 这一招。
至于处理空白字段名称的问题,你可以:
因为我在写程式所用的到的 MySQL,同时有 3.x 版及 5.x 版要处理,所以对 MySQL 的字符编码问题需要特别做研究,研究了一阵子之后,终于有了一些初步的心得,列出旧版及新版的 MySQL 做为比较:
Read more
phpMyAdmin 应该是大家最常用的 MySQL 数据库管理套件,如果要修改它的默认值,请编辑 phpMyAdmin 目录下的 “config.inc.php”,以下列出一些我建议修改的参数:
Read more
Cheat Sheet Roundup 是一个很棒的网站,内有作业系统、程式设计、数据库、网页设计…等 30 余种相关的资料手册可供下载(包含一些单页的 Data Sheet 可以用来贴在自己的座位墙板上),对于设计师与相关资讯人员,都是很好的参考资料,强力推荐。
转载自: Neo’s Blog
今天大概把几种常见的数据库命名方式给整理了一下。
单复数皆有人使用,如 products、product。
美国人命名比较喜欢依照口语习惯来用复数命名,知名的 OpenSource 软件像 phpBB、OSCommerce、In-Link、pLog 皆是以复数命名。而 Moveable Type 则是少数使用单数名命的软件,台湾人也是单数命名居多。
使用 MySQL 的 Opensource 软件比常见整批性的加前缀(Prefix) 在字段里面,如 products 表单中的“产品名称”,可能就会命名为“products_name”而 Microsoft SQL Server 则是以纯字段名称居多,如产品名称就直接取叫“name”了。
前缀的命名有“语意导向”跟“实用导向”二种,所谓语意导向以口语的习惯来命名,像 products 是产品的集合(复数),里面的每个产品是单数,所以用产品名称为例就是“product_name”。
而实用导向常见的就是以表单名称做为前缀,如前例在 products 里的产品名称字段就会命名为“products_name”,如此做的好处是程式会非常清楚每个字段是从哪个表单抓出来的。但是缺点是在程式里面语意不清,看起来会很不习惯。
然而大部份的字段前缀字符还是以语意导向为主,若要使用实用导向,最好表单名称采用单数(如 Moveable Type),否则像 OSCommerce 的全员复数,感觉程式在用名字就很奇怪,如程式明明就是只抓一笔产品名称出来,看到 products_name 就觉的既不是复数,而且文法上也不通,意义上反而比较像 product’s name。
Microsoft 的命名方式喜欢单字第一个字母大写,如 OrderDetail。而 MySQL 比较常见全部小写,单字中间加底线的命名方式,如 order_detal。这跟数据库的字符大小写敏感度默认值有关,MS SQL Server 默认是大小写不分,MySQL 则是大小写视为不同字段,所以统一小写比较不容易出错。
转载自: 中文 PHP 资讯站
LAMP 架构的网站,我以前注重的多是安装/配置方面的,讲述开发的相对较少,因为自己从事开发也少。本文的原文当然也来自:
看了以后,颇有启发,以前开发中遇到的一些问题,迎刃而解。所以翻译出来和大家共用。
我们解决了什么问题?我们创造了什么价值?
近期回响