最近才注意到MySQL的各个版本之间差别还挺大的,比如5.5.x版本的timestamp类型列只能有一个设置为default CURRENT_TIMESTAMP的,于是尝试了换成一个新版本是mysql,但是不想动本地原来的数据库,于是想在我的win7系统上安装两个MySQL数据,于是踩了以下好几个坑。
我安装的版本是mysql-5.7.18-winx64解压版,另外网上安装的教程很多,我就不在这里废话了。我参考了一个写的比较详细文档:MySQL安装教程,写的不错,不过这里说的my.ini放在bin下不是很准确,实际上放在和bin同级别的主目录下,当然了这个目录位置是可以配置的。
坑一:运行mysqld直接报msvcr120.dll找不到,解决方式:网上有可以下载https://www.microsoft.com/en-us/download/confirmation.aspx?id=40784,然后在开始->启动运行“regsvr32 msvcr120.dll”完成注册,很多帖子不讲这个,不知道居心何在?
坑二:由于我本地已经安装了MySQL,因此这个新安装的名字服务不能叫mysql,于是我在用mysqld -install安装的时候起名叫:mysql5.7,结果启动的时候发现说“发生系统错误 2。系统找不到文件。”。网上很多人说是因为注册表的原因,老夫查了注册表发现的确注册表的“ImagePath”属性指定的mysqld可执行文件不对,指向了C盘,我的实际上是在D盘,于是乎按照网上的要求修改了,结果不报文件找不到的错误了,但是启动还是失败,更加不幸的是这次啥错误也不报,只是报启动失败,后来我删掉重新搞,最后我仔细比较发现网友安装的时候起的服务名都没有“.”,于是我这次起名叫“mysql7”,果然搞定了,服务启动成功,很显然这是无意中碰到的一个bug,网友说的是一种情况,我遇到的又是更加复杂的一种情况,结论:服务的名称不要加“.”,我觉得最好也不要用其他的特殊符号(这里估计操作系统有要求,没有细查,若干年前遇到一个类似的问题,是因为起的服务名称过长)。
坑三:在使用“Navicat”导入的时候,报“2006 - mysql server has gone away”错误,这次是因为sql_mode设置的不对,这个原因是:MySQL5.7的默认值不兼容的问题。解决办法:在[mysqld]下面添加如下列:“sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”
坑四:2006 - mysql server has gone away,这个是因为max_allowed_packet的值太小,解决办法,在[mysqld]下面添加如下列:max_allowed_packet = 256M,这样导入数据的速度也明显提高。
坑五:1265 - Data truncated for column,这是因为倒出的数据列的值不对,比如性别使用的是enum类型的,但是导入的数据值却是空。我这里用Navicat导入psc格式的备份数据,解决办法:使用Navicat备份里的“提取SQL”导出到文本文件中修改下这个列的值即可。

cd bin
mysqld --install mysql
net start mysql

下载MySQL

https://dev.mysql.com/downloads/mysql/5.1.html#downloads

个人机子是64位的,所以选择下载:Windows (x86, 64-bit), ZIP Archive 版本

解压并安装

将下载下载的包解压到指定目录,(本人)解压到:D:\Program Files (x86) 目录下。
因此,MySQL的(安装)包的完整路径为:D:\Program Files (x86)\mysql-5.7.18-winx64

解压后,配置好系统环境变量。
新增系统环境变量:
键名:MYSQL_HOME
值为:D:\Program Files (x86)\mysql-5.7.18-winx64
接着在 Path 中添加:%MYSQL_HOME%\bin

解压后,准备好 my.ini 文件。
注意:(据说)以前版本解压后,在解压目录下都会有 my-default.ini 或 my.ini 文件,不过,v5.7.18 版本中解压后,是没有这些文件的。因此,需要手动创建好 my.ini 文件,文件的具体(完整的)内容如下:
按 Ctrl+C 复制代码

[client]
port=3306
default-character-set=utf8
[mysqld]
port=3306
character_set_server=utf8
basedir=%MYSQL_HOME%
datadir=%MYSQL_HOME%\data
[WinMySQLAdmin]
%MYSQL_HOME%\bin\mysqld.exe
按 Ctrl+C 复制代码
编辑好 my.ini 文件后,将 my.ini 放在 bin 目录下

以管理员身份打开 cmd 命令窗口,将目录切到MySQL安装包下的bin目录下

安装MySQL数据库,执行如下命令:
mysqld.exe -install
执行命令后,提示:Service successfully installed. 表示安装成功
初始化mysql数据,并创建一个具有空密码的root用户,执行如下命令:
mysqld --initialize-insecure --user=mysql
注意:最后的参数 --user=mysql 在 windows 也可以不用添加,但在 unix 等系统下好像很重要。
执行命令后,等一会后,系统会自动生成相应的 data 目录,并自动创建好空密码的 root 用户。此时表示初始化成功。

启动 mysql 服务,执行如下命令:
net start mysql
执行后,提示:
MySQL服务正在启动..
MySQL服务已经启动成功。
注意:要想登录使用 mysql,服务是必需要先启动的。以后也一样。

在服务启动后,因为刚创建的 root 用户是空密码的,因此,需要先进行密码设定。可执行如下命令:
mysqladmin -u root -p password 此处输入新的密码
Enter password: 此处输入旧的密码
执行完以上两条命令后,只要 Enter password: 后输入的旧密码正确,则 root 用户的新密码就算设定成功了。此后,要想登录 root 用户,则都需要使用新密码。
注意:刚创建的 root 用户是空密码的,因此,在第一次修改 root 用户的密码时,在 Enter password: 后面不需要输入任何密码,直接回车即可。

至此,MySQL v5.7.18 的解压安装就已经全部完成,因此,需要把先前已经启的 MySQL 服务给停止掉,执行如下命令:
net stop mysql
登录并使用MySQL

前面已经完成对MySQL数据库的安装,只要安装成功后,就可以正常登录 root 用户,并进行数据的相关操作,如:建表、增、删、改、查等等。下面是简单的流程:

以管理员身份打开 cmd,并切到 mysql 安装目录的 bin 目录下
net start mysql // 说明:该命令是启动 mysql 服务
mysql -u root -p // 说明:该命令是登录 root 用户
Enter password: 先前设置的 root 用户的密码
正确登录后,就可以对数据进行操作了如:增、删、改、查等等。示例:
mysql> show databases; // 显示所有数据库
mysql> select 语句............
...
不再使用数据库时,要退出用户,并停止服务,执行如下命令:
mysql> quit;
net stop mysql

删除数据库

如果不再想用mysql了,则可以执行如下命令:
mysqld --remove

安装MySQL5.7.18遇到的坑的更多相关文章

  1. centos系统下安装MySQL5.7.18

    1.首先安装依赖包 yum install -y gcc gcc-c++ ncurses-devel perl openssl-devel 最最重要的是,不要忘了安装openssl-devel 2.安 ...

  2. Windows下安装MySQL5.7.18的方法

    准备: 操作系统:win7 下64位的zip版本的MySQL,路径:http://dev.mysql.com/downloads/mysql/ 我下的是最新版的MySQL,解压后,目录如下: 可以看到 ...

  3. 在Fedora10上安装MySQL5.0.18,告捷!

    又一次安MySQL了,为什么又呢,因为前面成功那次算配置,即配置Fedora10自带的MySQL,这个还不算自己安装的,所以有必要再安装一次,以后还装也有可能,换操作系统,换MySql版本都可能这样做 ...

  4. centos7安装mysql5.7.18笔记

    重装了一下系统,装了centos7,但是centos7下默认没有安装mysql,有MariaDB数据库,网上的解释是: “MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用 ...

  5. mac下安装mysql5.7.18,连接出现Access denied for user 'root'@'localhost' (using password: YES)

    mac下,mysql5.7.18连接出错,错误信息为:Access denied for user 'root'@'localhost' (using password: YES) ()里面的为she ...

  6. CentOs 7 安装mysql5.7.18(二进制版本)

    1.下载二进制版本安装包.搜狐开源镜像站:http://mirrors.sohu.com/mysql/MySQL-5.7/   , 找 mysql-5.7.18-linux-glibc2.5-x86_ ...

  7. centos6.9安装mysql5.7.18

    详细记录在CentOS 6.9上安装MySQL 5.7.18 过程,希望对大家有所帮助. 下载地址:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysq ...

  8. centos6.4下安装mysql5.7.18

    1.安装前工作 在安装前需要确定现在这个系统有没有 mysql,如果有那么必须卸载(在 centos7 自带的是 mariaDb 数据库,所以第一步是卸载数据库). 卸载系统自带的Mariadb: 查 ...

  9. Linux.centos安装mysql5.7.18

    一:删除已有的mysql步骤 1 卸载旧的mysql 1.1 查询有哪些mysql文件 [root@zookeeper init.d]# find / -name mysql /var/lock/su ...

随机推荐

  1. Classification week3: decision tree 笔记

    华盛顿大学 machine learnign :classification week 3 笔记 第二步: 注: 其中 ,mistake 的计算方法: 给定一个节点的数据集M,对每个特征hi(x),根 ...

  2. 关闭QQ看点

    手机qq联系人 然后右上角公众号 然后看到看点 取消关注!!!

  3. python3----函数(sort和sorted)

    在学习python的过程中,感觉python中的排序相和c++中的泛型算法还是比较相似的,但相对于c++而言更加简单易用. python中列表的内置函数sort()可以对列表中的元素进行排序,而全局性 ...

  4. PHP实现自己活了多少岁

    1.mktime()函数的功能 2.代码: $birth = mktime(0,0,0,10,2,1992);//出生的时间戳 $time = time();//当前的时间戳 $age = floor ...

  5. timus1716(概率dp)

    题意无比诡异. http://acm.timus.ru/problem.aspx?space=1&num=1716 俄罗斯的英文简直把我吓尿. 题意是对于输入:X1X2X3X4(Xi为YES或 ...

  6. [Spring MVC]学习笔记--@RequestMapping支持的返回类型

    下面针对官方文档列出的支持类型进行举例. (本篇例子存于github上, https://github.com/lemonbar/spring-mvc-requestmapping) 可以直接下载, ...

  7. 【BZOJ1820】[JSOI2010]Express Service 快递服务 暴力DP

    [BZOJ1820][JSOI2010]Express Service 快递服务 Description 「飞奔」快递公司成立之后,已经分别与市内许多中小企业公司签订邮件收送服务契约.由于有些公司是在 ...

  8. FFF at Valentine(强连通分量缩点+拓扑排序)

    FFF at Valentine Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  9. python清除字符串中间空格的方法

    1.使用字符串函数replace >>> a = 'hello world' >>> a.replace(' ', '') 'helloworld' 看上这种方法真 ...

  10. FlaskWeb开发

    Flask基本使用 上下文 程序上下文 current_app g 请求上下文 request session https://blog.csdn.net/wsxqaz/article/details ...