更新至MySQL 5.7.9的详细教程

 更新时间:2025年02月27日 11:15:13   作者:kn007  
文章介绍了MySQL 5.7.9 GA版本的更新过程和一些常见警告的解决方法,包括设置`secure-file-priv`参数、跳过SSL连接、使用`skip-networking`代替`skip-name-resolve`等,感兴趣的朋友一起看看吧

更新至MySQL 5.7.9,聊一聊最近

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好写不少。。。

补充:管理员 修改MySQL 5.7.9 新版本的root密码方法以及一些新变化整理

管理员 修改MySQL 5.7.9 新版本的root密码方法以及一些新变化整理

MySQL 5.7版本开始,增强密码验证机制,网上说安装的时候会在/root/.mysql_secret  文件中生成默认密码,这一点自 5.7.6版本以后也去掉了。

针对如果生成默认密码,网上有一个版本,内容如下:

1、修改配置文件,一般在 /etc/my.cnf, 在[mysqld]字段下增加skip-grant-tables 字段,用以忽略权限验证;

2、重启MySQL服务器,CentOS 7.0操作命令是:

systemctl restart mysqld.service

3、使用mysql -u root -p 登录数据, 密码直接回车;

4、修改mysql数据库(名称),user表的authentication_string字段,修改命令如下:  

mysql> update mysql.user set authentication_string=password('new_password') where user='root' and Host ='localhost';
mysql> flush privileges;
mysql> quit;

5、修改配置文件,去掉skip-grant-tables,恢复成原来的样子, 然后重新MySQL服务器。

6、使用第4步设置的密码,登录mysql服务器。

7、通过 set password=password('new_password'); 命令重新设置密码;

以上的方法,在MySQL 5.7早期版本时,还是很好用的,但在MySQL 5.7.6以后的版本,最后一点重置密码总是无法生效,会出来下面的错误。

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

同时,无法进行其它的操作。

这是因为,自MySQL 5.7开始,密码存在有效期的概念, 同时因为安全等级的问题,需要使用使用其它的方式进行设置。另一个需要注意的点是, 自5.7.6开始废弃了password()函数,同时无法设置old_password=1, 这真的是一件比较曲折的探索过程。

那么,先把MySQL 5.7.9版本以上的密码设置方法整理一下。

大部分和上面整理的内容相同,关键在第4步后,把authentication_string 里写入的值记一下(这是因为password()函数已废弃)

通过使用以下命令,代替第7步的, set password=password('new_password') 方法。

mysql> ALTER USER 'jeffrey'@'localhost'
    -> IDENTIFIED WITH mysql_native_password
    -> AS 'authentication_string字段内容';
Query OK, 0 rows affected (0.01 sec)

其实上面的命令有一个简化版本,命令如下

mysql> ALTER USER USER() IDENTIFIED BY 'news_password';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

之所以会出现上面的错误信息,这和密码的安全等级相关,查看安全等级命令如下

mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password_dictionary_file    |        |
| validate_password_length             | 8      |
| validate_password_mixed_case_count   | 1      |
| validate_password_number_count       | 1      |
| validate_password_policy             | MEDIUM |
| validate_password_special_char_count | 1      |
+--------------------------------------+--------+

通过  SET GLOBAL  validate_password_policy='LOW';  命令,降低安全等级后,就可以直接使用,限制是必须8个字符以上;

关于安全等级更详细的介绍如下

  • LOW 政策只测试密码长度。 密码必须至少有8个字符长。

  • MEDIUM 政策的条件 密码必须包含至少1数字字符,1 大写和小写字符,和1特别 (nonalphanumeric)字符。

  • STRONG 政策的情况 密码子字符串长度为4的或更长时间不能匹配 单词在字典文件中,如果一个人被指定。

最后,为了解决密码失效的问题, 最后在配置文件的[mysqld]字段下,增加以下字段

[mysqld]
default_password_lifetime=0

也可以通过命令行进行设置

ALTER USER 'script'@'localhost' PASSWORD EXPIRE NEVER

关于密码有效期相关的更多信息,可以参考 http://dev.mysql.com/doc/refman/5.7/en/password-expiration-policy.html

到此这篇关于更新至MySQL 5.7.9的详细教程的文章就介绍到这了,更多相关更新到MySQL 5.7.9内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL 如何将查询结果导出到文件(select … into Statement)

    MySQL 如何将查询结果导出到文件(select … into Statement)

    我们经常会遇到需要将SQL查询结果导出到文件,以便后续的传输或数据分析的场景,本文就MySQL中select…into的用法进行演示,感兴趣的朋友跟随小编一起看看吧
    2024-08-08
  • Mysql数据库主从同步的实现示例

    Mysql数据库主从同步的实现示例

    本文主要介绍了Mysql数据库主从同步的实现示例,包括配置文件设置、账户创建、同步命令及错误处理,具有一定的参考价值,感兴趣的可以了解一下
    2025-06-06
  • MySQL的索引详解

    MySQL的索引详解

    这篇文章主要介绍了MySQL的索引的一些资料,对于mysql的优化来说索引是不得不说的,这里就为大家介绍一下,需要的朋友可以参考一下
    2018-01-01
  • mysql本地安装详细步骤和验证方法(Windows、macOS、Ubuntu)

    mysql本地安装详细步骤和验证方法(Windows、macOS、Ubuntu)

    这篇文章主要介绍了mysql本地安装详细步骤和验证方法的相关资料,分别针对 Windows、macOS、Linux(Ubuntu)三大主流系统,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-10-10
  • mysql8.0.12如何重置root密码

    mysql8.0.12如何重置root密码

    这篇文章主要为大家详细介绍了mysql8.0.12如何重置root密码,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • mysql给字段添加默认值的实现

    mysql给字段添加默认值的实现

    在MySQL中可以使用语句来为现有字段添加默认值,或者在创建表时直接指定默认值,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2025-07-07
  • Mysql数据库设计三范式实例解析

    Mysql数据库设计三范式实例解析

    这篇文章主要介绍了Mysql数据库设计三范式实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Mysql常见bug及解决方案超详细讲解

    Mysql常见bug及解决方案超详细讲解

    在使用MySQL的过程中,相比大家都踩过不少坑,下面这篇文章主要给大家介绍了关于Mysql常见bug及解决方案超详细讲解的相关资料,文中介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • MySQL使用show processlist命令的实现

    MySQL使用show processlist命令的实现

    本文详细解析了MySQL的showprocesslist命令,包括其功能、返回参数、Command值和State值的含义,及利用它来诊断和优化高CPU或iowait问题,感兴趣的可以了解一下
    2025-10-10
  • Mysql事务中Update是否会锁表?

    Mysql事务中Update是否会锁表?

    这篇文章主要给大家介绍了关于Mysql事务中Update是否会锁表的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12

最新评论