2020-11-23 MySQL8 安装

这篇博客详细介绍了MySQL 8.0.22的下载、解压、配置my.ini、初始化、安装服务、启动服务的步骤,并特别强调了初始化密码的重要性。在遇到登录错误时,提供了跳过权限表认证的解决办法,以及在MySQL8中修改密码的正确方法,包括使用ALTER命令更新root用户的authentication_string。
摘要由CSDN通过智能技术生成

MySQL 8.0.22下载和安装说明

MySQL官网:https://dev.mysql.com/downloads/mysql/
Other Downloads:下载 (mysql-8.0.22-winx64.zip)
在这里插入图片描述
选择 No thanks, just start my download. 直接下载
在这里插入图片描述
下载完成
在这里插入图片描述
将下载完压缩包解压到指定位置
在这里插入图片描述

配置初始化的my.ini文件

MySQL初始化配置文件说明:

  1. 如果没有告诉mysqld_safe例如分给多少内存这些条件,mysqld_safe会按照统一(默认)的配置进行启动
  2. MySQL的启动很多必要条件都是需要管理人员提前设定好才能够正常运行

解压后的目录下并没有my.ini配置文件,在安装根目录下新建文本文档,修改后缀名。
基本配置内容如下:

[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录,要和实际存放的路径一致
basedir=J:\SoftWare\mysql-8.0.22-winx64
# 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
# MYSQL8.0 默认是安装在C盘下的(C:\ProgramData\MySQL\MySQL Server 8.0)安装时不能改变安装路径
#datadir=C:\ProgramData\MySQL\MySQL Server 8.0
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为utf8mb4
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4

MySQL的“utf8”实际上不是真正的UTF-8。
MySQL的“utf8mb4”是真正的“UTF-8”
“utf8”只支持每个字符最多三个字节,而真正的UTF-8是每个字符最多四个字节
在这里插入图片描述

初始化MySQL

在安装时,避免权限问题出错我们尽量使用管理员身份运行cmd,否则在安装时会报错,会导致安装失败的情况
在这里插入图片描述
选择以管理员身份运行
在这里插入图片描述
找到mysql的bin目录,我本地安装在J盘,输入mysqld --initialize --console直接回车,执行初始化

J:
cd J:\SoftWare\mysql-8.0.22-winx64\bin
mysqld --initialize --console

在这里插入图片描述
稍等一会,初期化完成,看【Note】后面的信息:zvvgh)Pul2:,很重要哦,这是初始化密码
在没有更改密码前,需要记住这个密码,后续登录需要用到。

2020-11-23T16:00:48.476715Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: zvvgh)Pul2:>

提示:如果你关了这个窗口,或者没记住,那也没事,删除安装目录中data里面文件,再执行一遍初始化命令,又会重新生成的,这次再记住吧。
在这里插入图片描述
mysql会在和bin同级目录下产生data文件,即是root的数据库。
在这里插入图片描述
–initialize :初始化时,会生成一个root用户和一个随机的密码,并且密码设置为过期,需要你立即修改密码。
–initialize -insecure :另外,你也可以使用该配置初始化,但这种方式会生成一个root用户,并且密码是空(第一次登录密码空即可),同样需要你立即修改密码
–console 控制台表示

安装服务

当前bin 目录下执行命令

mysqld --install [服务名]

服务名可以不写,默认的名字为 mysql。当然,如果电脑上需要安装多个MySQL服务,就可以用不同的名字区分了,比如 mysqlOne
Service successfully installed. 提示安装成功
在这里插入图片描述

启动服务

输入下面命令,启动MySQL服务
启动该服务需要使用管理员权限运行

net start mysql

在这里插入图片描述

登录数据库

输入下面目录,这时候会提示输入密码,使用上面安装时给的随机密码,填入即可登录成功,进入MySQL命令模式。

mysql -u root -p

在这里插入图片描述
输入随机密码:zvvgh)Pul2:
但是登录出现了错误提示。
在这里插入图片描述
首先解析此英文:ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES);
解析的地方有两处:
①Access denied(拒绝访问root);②using password:NO/YES (使用了密码)
出现access denied的原因有如下可能:
1)mysql的服务器停止
2)用户的端口号或者IP导致
3)mysql的配置文件错误----my.ini等文件
4)root用户的密码错误
上边的原因都排查后,还是登录不进去。
采用新的解决方案
1、跳过权限表认证
打开MySQL目录下的my.ini文件,在[mysqld]后添加一行“skip-grant-tables”,保存并关闭文件。
但是最新的数据库版本MySQL8这个命令已失效
应该添加:skip-grant-tables
shared-memory
在这里插入图片描述
2、重启MySQL服务。(或者执行命令:MySQL net start mysql)
在这里插入图片描述
在这里插入图片描述
**3、在命令行中输入“mysql -uroot -p”(不输入密码),**回车即可进入数据库。
在这里插入图片描述
在MySQL8.0.4以前,
执行SET PASSWORD=PASSWORD(’[修改的密码]’);就可以更改密码,
但是MySQL8.0.4开始,这样默认是不行的。
因为之前,MySQL的密码认证插件是“mysql_native_password”,
而现在使用的是“caching_sha2_password”。
因为当前有很多数据库工具和链接包都不支持“caching_sha2_password”,
为了方便,我暂时还是改回了“mysql_native_password”认证插件。
my.ini文件

default_authentication_plugin=mysql_native_password

4、输入’ use mysql '连接权限数据库。
在这里插入图片描述
5、输入’ show tables; '(分号注意)
update mysql.user set authentication_string=‘123’ where user=‘root’;
6、输入:select user,host from user; 查看user信息
在这里插入图片描述
select host, user, authentication_string, plugin from user;
host: 允许用户登录的ip‘位置’%表示可以远程;
user:当前数据库的用户名;
authentication_string: 用户密码;在mysql 5.7.9以后废弃了password字段和password()函数;
plugin: 密码加密方式;

7、修改密码

update mysql.user set authentication_string="123456" where user="root";

在这里插入图片描述
很多博主的修改方式:
update user set password=password(‘123’) where user=‘root’ and host=‘localhost’;
然后一执行就会无数次报错。

注意:
①必须要使用双引号" ",不能使用单引号‘ ’
②数据库8.0已经没有’password’这个字段了,password字段改成了 authentication_string。所以需要将password改成authentication_string。

8、刷新权限
输入命令:flush privileges;

flush privileges;

终于修改成功了。
在这里插入图片描述
最后退出数据库

quit

在这里插入图片描述
下一步,将my.ini配置文件,跳过权限的设定删除掉

# skip-grant-tables 
# shared-memory

在登录还是提示密码有问题。说明还没有修改成功,继续搞。

再一次放开权限,再去看看MySQL的user表

 use mysql
 select host, user, authentication_string, plugin from user;
 update user set authentication_string='' where user='root';
 select host, user, authentication_string, plugin from user;

在这里插入图片描述
退出mysql
在这里插入图片描述
将my.ini配置文件,跳过权限的设定删除掉,然后重启mysql服务;
在这里插入图片描述
使用root用户进行登录,因为上面设置了authentication_string为空,所以可以免密码登录;

mysql -u root -p  
passwrod:直接回车;

在这里插入图片描述
使用ALTER修改root用户密码;

ALTER user 'root'@'localhost' IDENTIFIED BY “js123#”;

重新登录以后终于用我自己设定的密码进来了。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值