最近才注意到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. HDU1087 Super Jumping! Jumping! Jumping! 最大连续递增子段

    Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  2. awk 特征相同的行合并

    [root@linux-node1 ~]# cat test.txt hisk01 hisk02 hisk03 hisk04 hisk05 hisk06 hisk07 hisk08 [root@lin ...

  3. 前端基础------JS

    JS中的语句要以分号 ;  为结束符. JS语言基础: 1, JS 的变量名可以使用 下划线, 数字, 字母, $ 组成. 不可以是数字开头 2, 声明变量使用var 变量名. 的格式来进行声明. v ...

  4. 初探webpack之环境配置

    先感叹一句,前端的发展真是太快了,ng和bb还没怎么学好就要过时了.现在感觉react当是未来的一个大方向. 以前一直用的grunt,不过前段时间作者已经停止更新了.正好webpack风头正盛,咱也不 ...

  5. BZOJ 2431

    2431: [HAOI2009]逆序对数列 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 1521  Solved: 883[Submit][Statu ...

  6. Python 编码(一)— Python3

    Unicode 什么是 Unicode 标准 unicode 标准 Unicode 为每个字符提供了一个独特的数字,并且跨平台.设备.应用或者编程语言都是通用的. -- 来自 http://unico ...

  7. Introduction to Mathematical Thinking - Week 9 评论答案2

    根据 rubic 打分. 1. 我认为,如果说明 m, n 是自然数,所以最小值是 1 会更清楚.所以 Clarity 我给了 3 分.其他都是 4 分,所以一共是 23 分. 2.  我给出的分数 ...

  8. float 的先后顺序 理解流

    <!DOCTYPE html><html><head><style> p{float:right;}</style></head> ...

  9. Display BLOBs and CLOBs (DB2可视化工具AQT )

    Displaying BLOBs and CLOBs Dealing with LOBs BLOB and CLOB columns are difficult to display because: ...

  10. opencv如何打印长图?

    cv::Mat longMap(std::vector<cv::Mat> &set) { int matNumber = set.size(); int width = set[0 ...