首页 > 技术文章 > mysql 5.7~8.+ 手动安装

abc1069 2016-09-22 16:04 原文

再安装mysql5.7 或以上的版本出现了一些问题,现在总结下,希望能给初入学习mysql的人一下帮助

 

下载mysql 5.7/8.+ 社区版(免费),下载地址:https://dev.mysql.com/downloads/mysql/ 当然,你下载安装版的安装就简单了,这个教程主要是需要手动配置的mysql,也就是下载下来不是msi或者exe的一键式安装,而是需要自己配置安装的

 

更多详细信息请查看:

官方安装文档手册:https://dev.mysql.com/doc/refman/8.0/en/windows-create-option-file.html

 

第一步:设置mysql的安装路径

解压下载好的 mysql-8.0.28-winx64.zip

在里面找到my-default.ini 文件复制一份修改为my.ini

注意:mysql8.+版本已经没有my.ini文件,需要手动添加;

使用记事本打开my.ini ,找到basedir 和datadir  把前面的#删除

basedir修改为当前mysql的目录

datadir修改为当前目录下的data目录

比如我的mysql路径为: D:\\Development\\mysql

注意:内容里面的斜杠必须是:\\   或  /

那么我的设置是

 

mysql8.0的my.ini可参考下面:

[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=I:\\environment\\wnmp\mysql8
# 设置mysql数据库的数据的存放目录
datadir=I:\\environment\\wnmp\mysql8\\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证,注意:从mysql8开始已改为:caching_sha2_password
default_authentication_plugin=caching_sha2_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8

 

第二步,修改系统环境变量

右键桌面的计算机-属性-高级系统设置-环境变量-在系统变量栏下找到path

找到path编辑里的变量值,注意不要删除里面原来存在的值,只需再最后加上你的mysql路径就行了,注意前面的分好,我的输入是:

;D:\Development\mysql

然后一直确定保存就行了

 

第三部,安装并启动mysql

使用管理员的身份运行cmd

使用命令进入到mysql的目录下的bin文件夹(不论配没配置环境变量,都需要进入bin目录)

进入bin目录后,首先安装(手动注册)mysql服务

mysqld --install

提醒:此处是使用bin目录下的mysqld.exe 所以此操作需要进入bin目录下,否者出错

如果此处直接启动mysql服务的话

mysql 服务无法启动。

服务没有报告任何错误

既然是启动服务出错了,那么我们就可以查看系统的错误日志了,打开计算机管理-系统工具-事件查看器-windows日志-应用程序

我们发现发现爆出了两个错误信息

第一个是操作中断信息

看第二个

恩,错误很明显,大致意思是没有在datadir(第一步设置的data目录的一个值)目录里面设置的更多信息,查了下,data目录主要是保存和生成一些用户配置的数据,如登陆用户信息,日志,数据库文件等等,而在mysql5.7版本里面与mysql5.6版本里是有些不一样的,mysql5.6版本里已经默认有了data目录,而5.7是没有的,那么我们怎么办?

查了下资料,大部分都说把mysql5.6的data复制一份给5.7里,额。。。感觉有点不靠谱啊,继续找,终于发现了在mysql5.7里提供了一个命令来一件生成data这个目录

mysqld --initialize --console

或:mysqld --initialize-insecure --console

那么好,我们就是用这个命令看下

-------------------

好了,到了这步后来启动mysql服务

net start mysql

恩,启动成功了...   执行完上面命令后,MySQL会自动新建一个data文件夹,并且新建好默认数据库,登录的用户名为root,密码为空

至此,mysql服务已经启动成功了

卸载mysql,可跳过

1.停止mysql服务

 net stop mysql

(强制停止mysql服务        taskkill /f /im mysqld.exe              )

2.卸载服务

 mysqld --remove

3.彻底删除服务

sc delect mysql.exe

 

mysql5.7  登陆修改root密码

新安装的mysql是没有密码的,而忘记密码可以使用命令来跳过密码检测

1.新安装的mysql无密码登陆和修改:

进入mysql的bin目录

mysql -u root -p

在输入密码行处直接回车就登陆mysql了

查看数据库

show databases;

选择需要操作的数据库

use mysql;

然后我们直接设置mysql的密码

set password = password('7758258');

更新完后刷新权限表,使密码生效

flush privileges;

密码已更新,退出当前,重新使用密码登陆

quit;

 

mysql8.+  登陆修改root密码

alter user user() identified by "123456";

 

2.忘记密码的情况找回密码

极端的方法是删除data目录重新生成,这种方式不推荐,因为这种方式也能删除数据库或其他重要数据

我们需要优雅的修改mysql的密码,那么我们需要:

暂停mysql服务

net stop MySQL

跳过密码检测:

mysqld --skip-grant-tables

然后此cmd窗口不动,以管理员身份重新打开另一个cmd,转到mysql下的bin目录下

输入:mysql -u root 

直接进入到mysql了

然后直接修改密码(注意,mysql5.7的密码字段是authentication_stirng ,而5.6版本是password)

 

5.7:  update mysql.user set authentication_string=password('12567') where user ='root' and host ='localhost';

5.6(未测试):update mysql.user set password = password('12567') where user = 'root';

更新完后刷新权限表,使密码生效

flush privileges;

密码已更新,退出当前mysql和关闭另一个cmd,重新使用修改过的密码登陆

quit;

PS:修改密码不一定只有这种,还有其他方式,这里就多做解释了。

注:如果写得有问题,可以反馈哈,大部分资料都是从网上整理出来的

推荐阅读