更新至MySQL 5.7.9,聊一聊最近

提醒:本文最后更新于 2681 天前,文中所描述的信息可能已发生改变,请仔细核实。


MySQL 5.7.9 GA版本已经出来,目前VPS已更新完成,虽说不像修正版本号更新一样,直接把数据库目录移过去就好那么容易,但也不难。

这次更新了子版本号,过程顺利,没坑,启动有告警。(我是从MySQL 5.6.27更新而来)

说说第一个:

[Warning] Insecure configuration for --secure-file-priv: Current value does not restrict location of generated files. Consider setting it to a valid, non-empty path.

secure-file-priv这个参数主要是限制LOAD_FILE和LOAD DATA和SELECT … ,INTO OUTFILE报表到指定的目录。

一般来说很少用,默认值有empty、dirname、NULL,正确的意思就是:留空、指定路径、NULL值。千万不要以为是empty、指定路径、NULL。。。empty会报错的哦,empty其实就是留空,会转成默认值,也就是platform-specific,我也不知道是什么东东。反正会如上提示。设置路径会要求你该路径其他系统用户不能读,而且不能获取到你的MySQL数据库目录。NULL就是空,也是禁用的意思。

所以我在my.cnf中把secure-file-priv设置成NULL:

secure-file-priv = NULL

如此操作可以看到,现在提示:

[Note] --secure-file-priv is set to NULL. Operations related to importing and exporting data are disabled

直译就是:[提示]--secure-file-priv被设置成NULL,有关数据导入导出操作被禁止。

这个不会影响mysqldump使用,放心好了。

第二项警告是:

[Warning] Failed to set up SSL because of the following SSL library error: SSL context is not usable without certificate and private key

在5.7中,通过ssl方式连接mysql被作为默认和推荐。如果你并不需要(比如web端和db端同一台服务器,db服务器处于web端内网等),就可以不用使用ssl方式。

干掉警告很简单,只要在my.cnf声明跳过ssl就行了。

skip-ssl

如此便OK了。

还有个警告。。。是:

[Warning] 'user' entry 'root@localhost' ignored in --skip-name-resolve mode.
[Warning] 'user' entry 'mysql.sys@localhost' ignored in --skip-name-resolve mode.
[Warning] 'db' entry 'sys mysql.sys@localhost' ignored in --skip-name-resolve mode.
[Warning] 'proxies_priv' entry '@ root@localhost' ignored in --skip-name-resolve mode.
[Warning] 'tables_priv' entry 'sys_config mysql.sys@localhost' ignored in --skip-name-resolve mode.

如果一定要使用skip-name-resolve参数,这个真心无解,在5.6中压根不会报localhost的错。

如果你不喜欢这个提示,只能说,不要使用skip-name-resolve参数。

还要即便你有心去把localhost修改为127.0.0.1,很多应用,比如wordpress这些默认访问localhost的应用,都会不可用,需要更改host为127.0.0.1才行。

如果你只有单一的数据库或应用。那就可以通过修改localhost为127.0.0.1来解决。我线上数据库和应用太多就懒得改了。

要是你没有远程访问数据库的话,只是在本地使用数据库,推荐你用skip-networking而不是skip-name-resolve。skip-name-resolve参数它的功能主要是禁用DNS解析的,而skip-networking参数是设置MySQL不要监听网络,也就只能本机访问。

还有一个大家看不出来,SQL Mode目前默认值为:

ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

我的建议是把NO_ZERO_IN_DATE和NO_ZERO_DATE去掉,因为毕竟很多产品(比如Wordpress)的默认值就是0000-00-00 00:00:00,如果不去掉是不被允许的。当然这个,无伤大雅。

不去掉,如果出错,MySQL会在查询出现警告:

#1067 - Invalid default value for 'comment_date'

最后,说说大家最关心的,性能。我做了一些测试,感觉5.7.9比5.6.27还要慢。。。对的,你没看错,不如5.6.27快。。。好失望,我还是期待PHP7吧。

或许我该选择MariaDB或是Percona Server。。。偏向后者,虽说前者可能性能更优,但后者更稳定。前者我曾经在其早期使用过,怎么说呢,很看人品的暴击率。


聊聊最近发生在身边的事情吧。

最近网易的事,很火。我用了网易邮箱10多年了,看了下帐号没问题(带安全码)。

想了下,还是把帐号申诉下把密保改了,然后安全码就没了。。。

是不是以前带安全码的数据库就没有问题呢。。。后悔改密保了。。。

不过改了也就改了,安全点。

想人生第一个邮箱是雅虎中国,然后同年马上进入了126的怀抱。如今雅虎中国邮箱已经88,就剩126了。

当年选择126的原因,只是因为126短、是数字、好记,特别是比起yahoo.com.cn好写不少。。。


还有个好消息,Let's Encrypt被信任了。原文:《Let's Encrypt is Trusted》。

以后或许可以用上免费的SSL证书了。虽然内心觉得还是泛域名和付费的B格高一点。。。


感慨下,什么时候也能有足够的带宽,才能真正的享受云。有足够的带宽,我就能把购买硬件的钱,花在云上,日常数据处理与云实时同步等。这样既不用担心硬盘损坏数据的问题,而且想怎么折腾本地的电脑就怎么折腾。


被百度K了,而且新文章没有一篇被收录,再次说明百度放开对https站点的收录纯属扯淡。。

最近站长平台还推送个新的提交工具:“自动推送”,写的代码倒好看,地址是双斜杠//,可惜那个地址用https根本不能访问,恶心。还不如直接写成http://,浪费心情。

其实提起百度,主要是使用https前,新文章都是1个小时内必定收录。现在干脆啥都没了。

转载请注明转自:kn007的个人博客的《更新至MySQL 5.7.9,聊一聊最近