0.序言
- 为了做项目,最近需要安装Mysql8.0,遇到的一个最难的问题就是: 本人已经安装过mysql5.7,但是在mysql8安装的时候,进行初始化完后,获取到对应的初始密钥,执行
mysqld -uroot -p
的时候遇到初始密码登不进去的问题,后面进行skip grant指令发现总是进到mysql5.7的情况,以及在mysql8.28的bin下进行密码修改成功但是quit退出之后,还是连接不上,如果你遇到这类问题,这篇正好可以解决,也让你对安装进一步了解。
1.Windows下装Mysql5.7
我们在开发过程中,可能会遇到一些旧项目中用的 MySQL5.7 版本,而较新的项目会用高版本的 MySQL8 版本。而这个时候我们又不能将旧版本的 mysql 替换掉。
- 最新的已经8.30了,大可不比,用5.7是因为很稳定,8.0虽然出来好几年了,但是还不够稳定,要不是项目才不装这玩意hhhh
- 下载好后直接双击解压
- 那么5.7在哪呢?我们点击查看历史版本
1.1解压Mysql5.7并安装
- 解压完后开始我们的安装,我上图肯定和大家不一样,我是安好的5.7,
你们注意应该是没有data和my.ini
1.新建一个my.ini文件
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
# 设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=D:\Enviroment\mysql-5.7.19
# 设置mysql数据库的数据的存放目录(自动生成,不然可能报错)
datadir=D:\Enviroment\mysql-5.7.19
# 允许最大连接数
max_connections=10000
# 允许最大连接人数
max_user_connections=1000
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 连接时间一年
wait_timeout=31536000
interactive_timeout=31536000
2.进行mysql的安装或者初始化(用管理员打开,切换到对应安装bin目录下)
mysqld install mysql --defaults-file="D:\Enviroment\mysql-5.7.19\my.ini"
此时会弹出一个Service successful install;如下图一样
3. 生成data文件(如果有你就删除)
以管理员身份打开cmd,切换到bin目录下
输入命令:mysqld --initialize
生成对应的data文件了,找到err文件对应的password
4 启动mysql
net start mysql
5.登陆mysql5并修改密码
mysql -u root -P 3306 -h localhost -p
提示生成密码后,将err文件的临时密码输进去
登陆成功后,修改密码输入:
update user set authentication_string = password("新密码") where user = "用户名";
6.刷新权限
flush privileges;
- mysql5就安装完了
2.安装mysql8.28
这里有两种哈,一种是第一次安装两个软件,另一个是和我一样已经安装好Mysql5.7在安装8.0的
- 如果是第一次安装,可以安装上面的来,同时你也可以在解压后,设置环境变量,这样你就可以全局进行启动了
2.1对应环境变量的设置
- 系统变量里面将对应安装路径装上去
- 在path里面新建
- 剩下的就是和上述mysql5一样了
2.2曾经装好5.7后再来安装8
1.解压mysql8
2. 新建my.ini文件
因为装两个,端口号肯定是要不一样的,注意一定不能是3306
[mysqld]
# 设置3306端口
port=3307
# 设置mysql的安装目录
basedir=D:\\OnlineSoft\\mysql-8.0.28-winx64
# 设置mysql数据库的数据的存放目录(自动生成,不然可能报错)
datadir=D:\\OnlineSoft\\mysql-8.0.28-winx64\\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3307
default-character-set=utf8
标出来的设置成你自己的哈
3. 安装过程
1.以管理员启动cmd
2. 进入到mysql的安装目录下
cd "D:\OnlineSoft\mysql-8.0.28-winx64"
3.执行mysql初始化
bin\mysqld install mysql2 --defaults-file="D:\OnlineSoft\mysql-8.0.28-winx64\my.ini"
4.初始化Mysql
bin\mysqld --initialize --console
密码再控制台要记住
5.修改注册表(最重要的一步)
找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mysql2
- 这里有两个,一个是之前的mysql5.7,现在我们找到对应的Mysql2,将imagePath进行修改
- 修改如下
D:\OnlineSoft\mysql-8.0.28-winx64\bin\mysqld --default-file=D:\OnlineSoft\mysql-8.0.28-winx64\my.ini mysql2
4.启动mysql
net start mysql2
5. 登陆mysql
mysql -u root -P 3307 -h localhost -p
6.修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
7.刷新权限
flush privileges ;
其实5.7版本的mysql挺好用的,要不是客户安装的8,我去tmd才不装8,万恶的版本更新,万恶的客户!!!
感觉越改版越不好用,挺多东西不兼容的。
最后,如果安装失败,不用担心,不会卸载,不用担心,可以从第3步以后,把mysql2改为mysql3,即
3. 常见问题
3.1如何忘记密码进行修改mysql密码
对于5.7版本:
1.在命令行输入 net stop mysql 关闭当前运行的mysql。
2.切换到MySQL安装路径下:D:\Enviroment\MySQL-5.7.19\bin;如果已经配了环境变量,可以不用切换了。
命令行输入:mysqld -nt --skip-grant-tables
这时这个cmd窗口会卡注
3.重新打开一个cmd,用管理员打开,输入mysql -uroot -p
;如果提示密码直接回车就进去了
4.修改密码:1)use mysql;(2) update user set password=password(“这里输入新密码”) where user=“root”;
(3) flush privileges;
对于mysql8.0以上的有几点不一样的地方:
1.将第 2 步的,命令行改为:mysqld --console --skip-grant-tables --shared-memory
这时这个cmd窗口会卡住;
2.然后重启一个CMD窗口,输入mysql -uroot -p,按空格直接进入,不用输入密码。
然后输入指令:use mysql
3.再输入:
flush privileges ;
4.修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
这样就完成了
3.2本机已经有mysql5.7了但Mysql8失败的原因
原因:我在网上找了很多博客,最后终于在修改注册表那里发现了为什么再输入初始密码哪里总是报ERROR;原因是我们initial的时候,data文件的路径是指向mysql5.7的,因此我们需要将路径换了
4.解决方法
1.查看注册表路径
- 这里的应该是mysql8.28的路径,也就是我们安装的那个
- 还有一个是这个地方的路径是否是安装的路径
- 只要两者满足,现在再安装就不会失败了
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/101997.html