MySQL 5.7版本新特性(三)

数据库 MySQL
本文将和大家一起分享下5.7的新特性,不过我们要先从即将被删除的特性以及建议不再使用的特性说起。根据这些情况,我们在新版本及以后的版本中,应该不再使用,避免未来产生兼容性问题。

  

[[140960]]

 本文将和大家一起分享下5.7的新特性,不过我们要先从即将被删除的特性以及建议不再使用的特性说起。根据这些情况,我们在新版本及以后的版本中,应该不再使用,避免未来产生兼容性问题。

  本文是基于MySQL-5.7.7-rc版本,未来可能 还会发生更多变化。本节开始讲5.7版本中的新特性。

  1、安全性

  a. 用户表 mysql.user 的 plugin字段不允许为空, 默认值是 mysql_native_password,而不是 mysql_old_password,不再支持旧密码格式;

  b. 增加密码过期机制,过期后需要修改密码,否则可能会被禁用,或者进入沙箱模式;

  c. 使用 mysql_install_db 初始化时,默认会自动生成随机密码,并且不创建除 root@localhost 外的其他账号,也不创建 test 库;

  【新特性实践】

  执行 mysql_install_db 进行新实例初始化: 

  1. [yejr@imysql.com]# ./bin/mysql_install_db --user=mysql --datadir=/data/mysql/ 
  2.  
  3. 2015-06-24 13:55:29 [WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize 
  4. 2015-06-24 13:55:38 [ERROR]   Child process: /opt/17173_install/mysql-5.7.7-rc-linux-glibc2.5-x86_64/bin/mysqld terminated prematurely with errno= 32 
  5. 2015-06-24 13:55:38 [ERROR]   Failed to execute /opt/17173_install/mysql-5.7.7-rc-linux-glibc2.5-x86_64/bin/mysqld --bootstrap --datadir=/data/mysql --lc-messages-dir=/usr/share/mysql --lc-messages=en_US 
  6. -- server log begin -- 
  7. mysqld: [Warning] --bootstrap is deprecated. Please consider using --initialize instead 
  8. -- server log end -- 

 

  可以看到提示 mysql_install_db 已经不再推荐使用了,建议改成 mysqld --initialize 完成实例初始化。

  改成 mysqld --initialize 后,如果 datadir 指向的目标目录下已经有数据文件,则会有类似提示:  

  1. [yejr@imysql.com]#./bin/mysqld --user=mysql --basedir=/opt/17173_install/mysql-5.7.7-rc-linux-glibc2.5-x86_64/ --datadir=/data/mysql --initial --initialize-insecure 
  2.  
  3. 2015-06-24T06:05:05.533588Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting. 
  4. 2015-06-24T06:05:05.533627Z 0 [ERROR] Aborting 

 

  因此,需要先确保 datadir 目标目录下是空的,避免误操作破坏已有数据。

  另外,在初始化时如果加上 --initial-insecure,则会创建空密码的 root@localhost 账号,否则会创建带密码的 root@localhost 账号,密码直接写在 log-error 日志文件中(在5.6版本中是放在 ~/.mysql_secret 文件里,更加隐蔽,不熟悉的话可能会无所适从)

  1. [yejr@imysql.com]#./bin/mysqld --user=mysql --basedir=/opt/17173_install/mysql-5.7.7-rc-linux-glibc2.5-x86_64/ --datadir=/data/mysql --initial 
  2. 2015-06-24T06:14:31.458905Z 0 [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. 

  初始化完毕后,如果没使用新版本的客户端登入,还会报告类似下面的错误: 

  1. mysql -uroot -p 
  2. Enter password
  3. ERROR 1862 (HY000): Your password has expired. To log in you must change it using a client that supports expired passwords. 

 

  上面的错误提示意思是需要用当前版本的客户端登入,因为新用户登入后需要立刻修改密码,否则无法继续后续的工作:

 

  1. [(root@imysql.com)]>use mysql 
  2. ERROR 1820 (HY000): You must SET PASSWORD before executing this statement 
  3.  
  4. [(root@imysql.com)]>set password = password('abcd'); 
  5. Query OK, 0 rows affected, 1 warning (0.00 sec) 

  修改完密码后,就可以继续使用旧版本的客户端工具了。

  下一期,我们讲讲5.7的其他新特性。

  参考资料:

  官方文档:1.4 What Is New in MySQL 5.7

  整理的比较仓促,若有遗漏或失误,请留言回复,谢谢!

责任编辑:honglu 来源: MySQL中文网
相关推荐

2015-07-17 13:43:09

MySQL 5.7

2015-07-17 13:27:16

MySQL 5.7

2015-07-17 13:59:33

MySQL 5.7

2009-12-18 13:43:07

Ruby 1.9版本

2022-06-27 06:02:27

geopandas开发Python

2010-03-16 14:05:57

Eclipse 3.6

2016-01-21 11:05:52

ES6JavaScript新特性

2012-09-28 09:58:35

Outlook 201Office 2013

2015-07-20 16:48:53

MongoDB 2.5查询引擎

2012-11-16 09:50:32

Windbg

2018-06-01 15:41:21

2010-06-08 09:45:27

openSUSE 11

2012-05-07 23:45:54

FantomJavaJVM

2012-03-06 13:45:43

JavaJActor

2019-07-19 15:53:45

MySQL 5.7MySQL 8.0MySQL

2011-12-15 09:38:13

2023-10-13 07:23:06

2018-08-31 15:06:45

数据库MySQLMySQL 8.0.1

2010-08-26 17:08:20

vsftpd faq

2009-01-16 10:01:57

MySQL复制特性测试
点赞
收藏

51CTO技术栈公众号