前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL 的 ZIP 版本 24 步安装过程

MySQL 的 ZIP 版本 24 步安装过程

作者头像
问问计算机
发布2021-05-08 11:21:42
8780
发布2021-05-08 11:21:42
举报
文章被收录于专栏:问问计算机
    • MySQL的安装 24 步
    • MySQL 的删除
    • MySQL 密码修改
    • MySQL 中的 Flush Privileges 的使用
    • MySQL 对 Host 的修改
    • 其他常见异常

MySQL 是在软件开发过程中不可或缺的一个部分,但是对于初学者来说搭建环境总是会遇到各种各样的问题,或者是未授权,或者是密码修改未成功,或者是服务无法安装,无法删除等等一系列问题,总要在学习初期遇到各种各样的坑。

为了解决这个问题,笔者总结了 ZIP 版本 MySQL(MySQL 8.0.18 1045 28000)的 24 步安装过程。

  • MySQL 的安装
  • MySQL 的删除
  • MySQL 的密码修改
  • MySQL 中的 Flush Privileges 的使用
  • MySQL 对 Host 的修改
  • 其他常见异常

其中对于 Flush Privileges 在 MySQL Ref-Manual 中的阐述的描述是相对来说比较提倡的一种学习方法。

下面分别从上述几个方面进行具体描述。

MySQL的安装 24 步

1. 配置系统环境变量,对于这一步骤,可以配置系统环境变量,也可以配置用户环境变量,至于两者的区别,再这就不做赘述了。

对于这一步骤有些用户操作的时候可能会出现如下问题:

环境变量配置完成后,仍然提示“'mysql' 不是内部或外部命令”。这种情况下,不需要重启电脑,重新打开命令提示符窗口即可。

2. 直接在系统路径下进入 MySQL 报错,如下:

代码语言:javascript
复制
ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)

3. 尝试启动 MySQL,提示:

代码语言:javascript
复制
发生系统错误 2。
系统找不到指定的文件。

4. 切换到 MySQL 解压文件夹 bin 文件夹所在路径:

5. 执行 mysqld install 命令安装 MySQL 服务,net start mysql 启动服务。

6. 拒绝访问

代码语言:javascript
复制
ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO)

7. 无密码访问

代码语言:javascript
复制
mysqld --console --skip-grant-tables --shared-memory

提示:

代码语言:javascript
复制
2020-01-06T05:49:30.805343Z 0 [System] [MY-010116] [Server] D:\software\mysql-8.
0.18-winx64\bin\mysqld.exe (mysqld 8.0.18) starting as process 3980
2020-01-06T05:49:31.078781Z 1 [ERROR] [MY-012271] [InnoDB] The innodb_system dat
a file 'ibdata1' must be writable
2020-01-06T05:49:31.107101Z 1 [ERROR] [MY-012278] [InnoDB] The innodb_system dat
a file 'ibdata1' must be writable
2020-01-06T05:49:31.207687Z 1 [ERROR] [MY-010334] [Server] Failed to initialize
DD Storage Engine
2020-01-06T05:49:31.259445Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initi
alization failed.
2020-01-06T05:49:31.285812Z 0 [ERROR] [MY-010119] [Server] Aborting
2020-01-06T05:49:31.428390Z 0 [System] [MY-010910] [Server] D:\software\mysql-8.
0.18-winx64\bin\mysqld.exe: Shutdown complete (mysqld 8.0.18)  MySQL Community S
erver - GPL.

针对这个问题,有提供了一种解决方案,删除 data 文件夹下的,ib_logfile0、ib_logfile1 两个日志文件。

但是,由于没有对缘由进行说明,所以放弃这种方案。另外,对于这种不明确缘由直接删除相关文件情况下,实际上也是在为后续工作埋雷,及时当前配置经过折腾正常启动后,依然会导致运行过程中存在不确定因素。

上述这个过程看上去没什么问题,实际上是不对的,在安装过程中环境变量配置完成后直接安装并启动服务,但是缺少一个“初始化”的步骤,所以导致无法正常启动。所以在配置过程中应该,环境变量配置完成后,首先初始化,初始化过程中会生成响应的data文件夹下的文件和配置一些属性。

另一种方案

8. 删除方案一中已经安装的服务,mysqld -remove

9. 去下载 ZIP 版本的MYSQL

https://dev.mysql.com/downloads/mysql/

并解压,第一次解压后会发现目录中并没有 data 文件夹。

10. 在解压的目标路径下,创建data文件夹。

11. 在解压目录路径下创建 my.ini 文件,注意右下角,保存 ini 文件的时候,选择 ANSI 编码方式。

12. 初始化 mysqld --initialize --console(注:是先初始化,再安装启动,而不是先安装服务启动,再初始化,先安装启动的情况下,会在启动时提示,无法启动),可是报编码有歧义。

这个在步骤 3 中已经标注完成了,由原来的 UTF-8,修改为 UTF8MB4。

13. 再次初始化,有些情况下,由于在删除服务后没有删除 data 文件夹,所以文件夹下会有文件,再次初始化的时候,提示 data 文件已经存在了,删除即可。

14. 再初执行 mysqld --initialize --console,可以看到初始化完成,并且生成了临时密码。

密码:

i%lsDLpT?6J+(这个密码是可以直接复制的)

15. mysqld install 安装 MySQL 服务:

16. net start mysql 启动 MySQL 服务:

17. 使用刚才的密码登录 MySQL(注意:这个密码是可以复制粘贴的),进入 MySQL。

18. 由于刚才的密码不便于记忆,或者由于别的原因,通常需要修改密码,使用如下语句:

代码语言:javascript
复制
mysql>ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123';
mysql>FLUSH PRIVILEGES;

19. 修改完成后 Ctrl+Z,退出 MySQL。

20. 测试新密码成功连接:

21. 有些情况下,需要查看 MySQL 占用的端口:

代码语言:javascript
复制
show global variables like 'port';

需要注意的是,命令号要用分号结尾。

当然,也可以通过之前添加的配置文件中查看使用的端口。

22. 使用客户端连接,报错:

代码语言:javascript
复制
错误号码1130,host ' ' is not allowed to connect to this mysql server

如果使用 navicat 连接的情况下,也有可能报错误:

代码语言:javascript
复制
protocol mismatch; server version=10 client version=11

解决办法:

语句:

代码语言:javascript
复制
use mysql;
select host,user from user;
update user set host='%' where user='root';
flush privileges;

23. 连接成功。

24. 在提示密码过期的情况下,即使重置也没有用,必须在原来的密码输入以后,修改密码,设置不过期才可以,经过测试,在密码过期之后重新初始化 MySQL,生成临时密码后,输入临时密码,依然无效,需要使用过期的旧密码,输入后,进入 MySQL,修改密码,过程如下:

代码语言:javascript
复制
-- 修改密码以能够在客户端登陆:
set password for root@localhost = password('123');
-- 修改root密码永不过期:
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;

到此经过 24 步骤的尝试,基本上对 MySQL 8.0.19 的 ZIP 版本的安装算是完成。

MySQL 的删除

代码语言:javascript
复制
mysqld -remove

MySQL 密码修改

步骤 11 中用到的如下语句:

代码语言:javascript
复制
mysql>ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123';

在密码修改过后使用 Flush Privileges 进行缓存的清除,对权限进行刷新。

MySQL 中的 Flush Privileges 的使用

代码语言:javascript
复制
mysql>FLUSH PRIVILEGES;

Flush Privileges,顾名思义,对权限进行刷新,很多人不明白这究竟是个什么东西,看一下官方的解释(来自 MySQL 的 refman-5.7-en.pdf)就明白了:

重新从 MySQL 的系统数据库中加载授权表中的权限,Flush Privileges 能够使运行时的权限及时生效。这和其中提及到的 --skip-grant-tables 的参数有关系,也就是说如果在启动的时候禁用了权限系统,使用 Flush Privileges 就能够释放缓存,重新使修改的内容生效。这就从根本上了解了,--skip-grant-tables,Flush Privileges的作用,而不用每次使用的时候都懵懵懂懂。

通过上面 Flush Privileges 的机制在 Ref-Manual 中的阐述,对于用法的深入了解,实际上是一种很值得提倡的学习方法。

我们会发现,尤其对于初学者,在知识点的学习和查找过程中,对于很多博客无法正确解决心中的疑虑,总是多多少少的令人感到不解。

这种情况下追根溯源,找到它的出处,看最原始的解释,就能很直白,简单的理解问题的症结所在。

通过上面这种方式,我们查看在上文中提到的 ib_logfile0 和 ib_logfile1 是什么?

代码语言:javascript
复制
innodb_log_group_home_dir= /dr3/ibblogs

通过原文的描述知道,放置 InnoDB 的 log files 在不同的物理存储位置,避免发生资源的读写冲突。就是在上述描述的方案中出现的错误提示。在 Ref-Manual 中很明确的提到,只要对路径指向别处,便可以避免权限导致的读写错误,而不是直接选择删除。

通过这种方式,在 MySQL 安装过程中遇到的所有问题,便可以迎刃而解,而不是翻阅各种重复的,不够深入理解的博客方案,导致的各种问题无法正确理解。通过这种方式,一劳永逸,举一反三的解决。

当然不仅仅局限于官方手册,虽然官方手册是比较优秀的选择,但是对于有些同学来说,存在一定难度,那么可以选择比较系统的相关书籍,结合博客深入,全面理解。

提供一个基本的 ini 配置如下:

代码语言:javascript
复制
[mysqld]

# 设置3306端口
port=3306

# 设置mysql的安装目录
basedir=E:\\***\MySQL\\mysql-8.0.19-winx64

# 设置mysql数据库的数据的存放目录
datadir=E:\\***\MySQL\\mysql-8.0.19-winx64\\data

# 允许最大连接数
max_connections=200

# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10

# 服务端使用的字符集默认为UTF8
character-set-server=UTF8MB4

# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password

[mysql]
# 设置mysql客户端默认字符集
default-character-set=UTF8MB4

[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=UTF8MB4

MySQL 对 Host 的修改

使用上面提供的具体方法, 再次愉快的从《refman-5.7-en》的第 996 页中找到答案。如下:

表中展示了,用户名称,主机值,以及允许链接的备注信息,从表中可以看出通配符百分号,以及 IP 地址所对应的含义。具体内容,可以去手册上查找,如果不明确的话,可以留言。

其他常见异常

1. 错误输入命令,使用 mysqld -u root -p 会出现如下错误。修改 mysqld 为 mysql 即可。

代码语言:javascript
复制
mysqld: Can not perform keyring migration : Invalid --keyring-migration-source option.
2020-01-20T08:17:51.407930Z 0 [System] [MY-010116] [Server] E:\Tool\MySQL\mysql-8.0.19-winx64\bin\mysqld.exe (mysqld 8.0.19) starting as process 25932
2020-01-20T08:17:51.413918Z 0 [ERROR] [MY-011084] [Server] Keyring migration failed.
2020-01-20T08:17:51.424474Z 0 [ERROR] [MY-010119] [Server] Aborting
2020-01-20T08:17:51.424758Z 0 [System] [MY-010910] [Server] E:\Tool\MySQL\mysql-8.0.19-winx64\bin\mysqld.exe: Shutdown complete (mysqld 8.0.19)  MySQL Community Server - GPL.

2. 无法连接 MySQL 服务,原因是没有启动服务导致的:

代码语言:javascript
复制
ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)

3. 发生系统错误 2,系统找不到系统文件:

切换到 bin 所在路径安装,才能可执行文件路径才不是默认的系统路径,如下图:

再启动才能够正常启动服务:

如有问题,欢迎交流,后期将逐步更新,Linux 版本下的 MySQL 安装,MySQL 集群的配置与使用。如有不足之处,欢迎指正。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 changyandou 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MySQL的安装 24 步
  • MySQL 的删除
  • MySQL 密码修改
  • MySQL 中的 Flush Privileges 的使用
  • MySQL 对 Host 的修改
  • 其他常见异常
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档