最近接了个项目,使用的数据库是5.7的,开始没太在意,但是在接手的过程中发送了些小插曲,特意记录下来。
首先,我想自己安装个noinstall版本的,结果发信下载下来的和之前版本的不一样,没有data目录,my.ini 里几乎没有内容,看来使用以前的办法是不行了,看了下官方的文档。基本有下面3步需要做,
- 确定好mysql的根目录,mysql的数据存储目录,按我的情况 D:/mysql 是根目录,我自己在这个目录下建了个data目录做数据存储目录 D:/mysql/data ,然后配置在my.ini 的文件里。
basedir = "D:/MySql-5.7" datadir = "D:/MySql-5.7/data" port = 3307
- 初始化数据库,需要在D:/mysql/bin 目录下,注意是bin目录下, 执行脚本命令: mysqld.exe --initialize --console。执行完后会有下面的类似结果出现。最后的是root用户的密码,需要记下来。而且我接下来使用Mysql WorkBench 连接的时候提醒,需要修改初试密码才能连接,这个不知道在别的软件上是不是也存在,因为Workbench是不能看到mysql库的。
- 最后其实就可以启动mysql了,使用命令 mysqld.exe ,然后使用命令行连接 mysql.exe -P3307 -p,回车,然后输入上面图片里的密码。
输入use mysql 的时候提示 :You must reset your password using ALTER USER statement before executing this statement. 需要执行下面的几行语句才可以继续使用。
SET PASSWORD = PASSWORD(‘your new password‘); ALTER USER ‘root‘@‘localhost‘ PASSWORD EXPIRE NEVER; flush privileges;
第一次我是可以直接use mysql的,然后修改密码的时候又遇到了问题,5.7的版本里已经没有password字段了。而是出现了authentication_string,password_expired,password_last_changed,password_lifetime 这几个字段,修改当前登录的root可以直接使用 set password=password('新密码'); flush privileges; 然后就生效了。这时也可以使用Mysql Workbench连接了。其他的用户我试了也可以把 authentication_string 当成以前的password 字段来修改密码,例如 update user set authentication_string=password('new_pwd') where User='root'。然后flush privileges。来使之生效。其他的字段再研究。
搜了下还有些有意思的新东西,下面的是摘自其他博客的。
一个是支持json,直接有个json类型,一般的客户端软件还不支持,手动建了一个,打算用workbench修改,直接报定义错误,这个换了个新的版本 6.3.7就支持了。
在ONLY_FULL_GROUP_BY中具有更高的自由度
在InnoDB中支持空间数据类型
更好地支持对亚洲语言的处理