设为首页收藏本站language→→ 语言切换

鸿鹄论坛

 找回密码
 论坛注册

QQ登录

先注册再绑定QQ

查看: 1056|回复: 2
收起左侧

扒扒MySQL 5.7新特性

[复制链接]
发表于 2016-4-1 13:55:11 | 显示全部楼层 |阅读模式
MySQL 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)

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

 楼主| 发表于 2016-4-6 15:45:41 | 显示全部楼层
感谢关注东方瑞通!我们会持续分享更多精彩IT资讯!
板凳 2016-4-6 15:45:41 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-1-23 03:19 , Processed in 0.054030 second(s), 10 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表