从零开始学MYSQL - MYSQL安装

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 从零开始学MYSQL - MYSQL安装

从零开始学MYSQL - MYSQL安装

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动

前言

这个专栏也可以认为是学习笔记,由于之前的专栏学习的是网络上的培训机构教程,学习完成之后发现虽然讲到一些有一些深入的东西,但是讲的都不是特别深,所以从这一节开始将会从零开始来全盘了解MYSQL,这里找了一本书《从根上理解Mysql》,个人也十分推荐读者去看看这边书,不仅有新特性对接讲解,也有很多的干货,同时讲的也十分好,作为支持个人后面也买了一本实体书(虽然基本都是拿pdf看的)。

思维导图(持续更新)

www.mubucm.com/doc/7DDOY0C…

图片地址:p3-juejin.byteimg.com/tos-cn-i-k3…

参考资料:

  1. 英文mysql5.7官方文档:dev.mysql.com/doc/refman/…
  2. 中文对应翻译网站(机翻):www.docs4dev.com/docs/zh/mys…

概述

  1. 认识mysql的客户端和服务端是怎么一回事
  2. 了解安装mysql的注意事项,以及回顾mysql个人
  3. 简要介绍关于mysql启动的常见四个命令以及具体的作用
  1. mysqld
  2. mysqld_safe
  3. mysql.server
  4. mysqld_multi

认识客户端和服务端

由于是Mysql的专栏,这里就不牵扯什么TCP/IP,什么网络传输协议了,总之我们只需要了解mysql是分为客户端和服务端的,通常我们访问页面或者浏览数据就是一次数据库的访问过程(当然现在多数东西都静态化了),所以连接的这一方被称为客户端而接受请求的这一方面被称为服务端.

mysql的基本任务

通常我们使用MYSQL基本都是干这些事情:

  1. 连接数据库。
  2. 查询数据库的数据,客户端发送请求给服务端,服务端根据命令找到数据回送给客户端。
  3. 和数据库断开连接。

mysql实例

说完了上面的废话之后,我们来说下mysql实例,实例也在操作系统的层面叫做进程,而进程可以看做是处理器,内存,IO设备的抽象,我们不需要知道这个进程底层是如何传输数据存储数据的,我们只需要了解他需要一个端口,并且每一个实例都有一个 进程ID的东西,在数据库实例运行的时候系统会分配一个进程ID给它并且保证唯一,而每一个进程都有自己的名字,这个名称是安装的时候由程序员自己设置的,但是如果没有分配则会使用MYSQL自己默认设置的名称。

我们启动的 MySQL 服务器进程的默认名称mysqld , 而我们常用的 MySQL 客户端进程的默认名称为 mysql

从这个名称我们也可以推测出为什么我们启动一个服务通常会使用Mysqld,而我们连接数据库通常使用mysql。

image.png

  • 每一个文件就是对于IO设备的抽象
  • 虚拟内存是对内存和IO设备的抽象
  • 进程:则是对处理器,虚拟内存和IO设备的抽象

安装Mysql的注意事项

安装Mysql十分简单但是实际上如果全手动安装细节还是比较多的,通常情况下我们自己使用直接用EXE程序或者直接使用BIN包等,但很多时候对于Linux的软件很多人都会推荐使用 源码安装,源码安装的好处不仅仅是缩小体积,经过不少的实验证明源码的安装方式效率会有所提升,所以正式环境下 尽可能使用源码安装,最后需要注意的一点是:Linux下使用RPM包会有单独的服务器和客户端RPM包,需要分别安装

安装目录位置的区别

下面是具体的Mysql安装目录,当然下面这里只做参考,个人mac电脑使用的是brew install mysql加上m1的的芯片安装的,适配性未知,所以为了保证笔记的可靠,这里用回了windows系统来进行实际测试和演练,下面是不同的操作系统在mysql的安装目录存储位置存在细微的不同,但是一定要十分清楚mysql真实的安装位置,这对于自己捣鼓各种命令以及设置参数很重要。

macOS 操作系统上的安装目录:
/usr/local/mysql/
Windows 操作系统上的安装目录:
C:\Program Files\MySQL\MySQL Server 5.7

Mysql安装

windows安装过程

安装过程就不演示了,网上的教程一抓一大把,为了稳妥起见这里个人使用的mysql版本是5.7的版本,同时使用了默认exe程序安装,如果你使用了mysql-installxx.exe安装,有的时候会出现下面的命令:

'mysql' 不是内部或外部命令,也不是可运行的程序

看到这个提示之后,第一反应是进入power shell的管理员模式:

PS C:\Windows\system32> mysql -uroot -p
mysql : 无法将“mysql”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正
确,然后再试一次。
所在位置 行:1 字符: 1
+ mysql -uroot -p
+ ~~~~~
    + CategoryInfo          : ObjectNotFound: (mysql:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

发现还是报错,然后我跑去服务看了下mysql是否有启动,发现mysql又是启动的,这里有点奇怪

image.png

然后这里找了下网络上的解决办法,其实加个环境变量就行了,然后使用power shell直接安装即可,最后我们照常输入命令就可以发现mysql正常安装完毕了:

PS C:\Windows\system32> mysql -uroot -pxxxxxx
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.35-log MySQL Community Server (GPL)
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>

关于绝对路径和相对路径启动问题:

绝对路径:如果你的系统环境变量里面访问不到你的应用程序命令,这时候就需要进入到相关的目录执行命令,比如上面我没有配置环境变量就需要进入到C:\Program Files\MySQL\MySQL Server 5.7\bin目录下进行操作,也可以正常使用mysql,但是每次这样弄很麻烦,所以基本是个正常人都会使用环境变量,如果你不知道环境变量是什么,额。。。。请自行百度

相对路径:配置完环境变量之后,我们敲命令会根据系统环境变量配置的 先后顺序找到我们的命令并且执行,但是这点在mysql有点特别,后续会讲到如果多个系统参数配置会默认使用 最后读到的配置参数为准

macos安装过程

Mac本子个人也是24分期才敢碰的神物,我相信用的人也不多,所以这里直接放个帖子:

www.cnblogs.com/nickchen121…

Linux安装过程

由于个人使用云服务器搭建mysql比较多,这里提供了一个阿里云rpm包的安装方式,版本是centeros7,centeros6同样可以使用,不过需要修改部分命令。

juejin.cn/post/689525…

Mysql启动:

多数情况我们使用mysql.sever启动即可,因为它会间接的调用其他的几个命令,而mysqld_muti这个命令更建议自己实战的时候进行配置的学习使用,更加事半功倍。

mysqld

Mysqld:代表的是mysql的服务器程序,运行就可以启动一个服务器的进程,但是不常用

个人在实践之后使用了mysqld命令之后,发现运行的结果如下,起初比较莫名其妙的问题,但是看日志不难发现问题,其实就是 目录不存在并且mysql又没法给你创建目录,只要使用everything找到对应点文件即可(mac为什么没有这么好用的软件,哎)。

你可以通过找到下面的my.ini文件并且修改里面关于datadir的路径即可。

image.png

通过打开这个文件发现配置路径里面有一个/Data,然后发现目录里面没有这路径:

# Path to the database root
datadir=C:/ProgramData/MySQL/MySQL Server 5.7/Data

下面是上面描述的日志的运行结果,感兴趣的可以自己试一试,也可能遇不到我这种问题

PS C:\Windows\system32> mysqld -datadir=D:\soft\mysqltest
mysqld: Can't change dir to 'C:\Program Files\MySQL\MySQL Server 5.7\data\' (Errcode: 2 - No such file or directory)
2021-10-28T14:20:14.063607Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2021-10-28T14:20:14.063669Z 0 [Note] --secure-file-priv is set to NULL. Operations related to importing and exporting data are disabled
2021-10-28T14:20:14.064027Z 0 [Note] C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld.exe (mysqld 5.7.35) starting as process 3296 ...
2021-10-28T14:20:14.066088Z 0 [Warning] Can't create test file C:\Program Files\MySQL\MySQL Server 5.7\data\DESKTOP-L8AD9HM.lower-test
2021-10-28T14:20:14.066416Z 0 [Warning] Can't create test file C:\Program Files\MySQL\MySQL Server 5.7\data\DESKTOP-L8AD9HM.lower-test
2021-10-28T14:20:14.067090Z 0 [ERROR] failed to set datadir to C:\Program Files\MySQL\MySQL Server 5.7\data\
2021-10-28T14:20:14.067408Z 0 [ERROR] Aborting
2021-10-28T14:20:14.067619Z 0 [Note] Binlog end
2021-10-28T14:20:14.067904Z 0 [Note] C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld.exe: Shutdown complete

最后你可以运行mysqld启动一个服务器进程并且在对应的目录下面构建了对应的文件。

image.png

答案的灵感来自于下面的部分:

What I did (Windows 10) for a new installation:

  1. Start cmd in admin mode (run as administrator by hitting windows key, typing cmd, right clicking on it and selecting "Run as Administrator"
  2. Change into "MySQL Server X.Y" directory (for me the full path is C:\Program Files\MySQL\MySQL Server 5.7")
  3. using notepad create a my.ini with a mysqld section that points at your data directory
[mysqld]
datadir="X:\Your Directory Path and Name"
  1. created the directory identified in my.ini above.
  2. change into bin Directory under server directory and execute: mysqld --initialize
  3. Once complete, started the service and it came up fine.

mysqld_safe

mysqld_safe 是一个启动脚本,在间接的调用mysqld ,同时监控进程,使用 mysqld_safe 启动服务器程序时,会通过监控把出错的内容和出错的信息重定向到一某个文件里面产生出错日志,这样可以方便我们找出发生错误的原因。

但是个人实践之后找不到,其实原因是windows没有这个命令的,关于更多mysqld_safe命令的解释可以看看mysql的官方网站:dev.mysql.com/doc/refman/…

如果阅读英文有困难,这里有一个中文的翻译网站:www.docs4dev.com/docs/zh/mys…

对于一些Linux 平台,使用 RPM 或 Debian 软件包安装的 MySQL 包括对 ManagementMySQL 服务器启动和关闭的系统支持。在这些平台上可能被认为没有必要所有没有安装mysql.servermysqld_safe

mysql.server

这个文件同样也是一个启动脚本,也是最常用的脚本,实际上这个命令可以看做是一个链接,也就是一个“快捷方式”,实际指向的路径为: ../support-files/mysql.server,另外这个命令会间接的调用mysqld_safe,我们使用下面的命令就可以直接启动服务:

mysql.server start

如果操作系统在安装之后没有构建相应的链接文件,可能需要自己手动构建一个链接文件,另外,linux服务器需要注意权限的问题,因为有时候没有root权限可能需要对于对应的目录配置用户组,下马是关于官网的介绍

如果从源分发版或使用不自动安装mysql.server的二进制分发版格式安装 MySQL,则 可以手动安装脚本。它可以 support-files在 MySQL 安装目录下的目录或 MySQL 源代码树中找到。将脚本复制到/etc/init.d名为mysql的目录并使其可执行:

shell> cp mysql.server /etc/init.d/mysql
shell> chmod +x /etc/init.d/mysql

最后启动和关闭mysql可以使用如下的方式(linux系统):

mysql.server start
mysql.server stop

如果是windows系统,使用上面的命令会报错,所以我们使用下面的命令即可:

PS C:\Windows\system32> mysql.server start
mysql.server : 无法将“mysql.server”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径
,请确保路径正确,然后再试一次。
所在位置 行:1 字符: 1
+ mysql.server start
+ ~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (mysql.server:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
PS C:\Windows\system32> net start mysql
服务名无效。
请键入 NET HELPMSG 2185 以获得更多的帮助。
PS C:\Windows\system32> net start mysql57
请求的服务已经启动。

mysqld_multi

有的时候我们可能会想要在一台的机器上使用多个服务器的进程,这个命令的作用是对于每一个服务器进程进行启动或者停止监控,但是由于这个命令较为复杂,个人还是建议使用上面的官方稳定链接进行具体的细节了解。

如果阅读英文有困难,这里有一个中文的翻译网站:www.docs4dev.com/docs/zh/mys…

window&服务启动

这个简单了解一下即可,window端的mysql基本是为了照顾windows的用户才出现的,真正能施展拳脚的地方还是linux,当然有些公司确实会使用window作为服务器。。。。。所以还是过一下,下面是安装一个windows的服务的命令:

"完整的可执行文件路径" --install [-manual] [服务名]

其中的 -manual 可以省略,区别在于加上会关闭 自动启动改为手动启动

最后下面是个人的mysqld服务安装命令,请读者根据自己的系统环境自行安装即可。

C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld --install

安装之后使用net start mysqlnet stop mysql命令即可启动或者关闭。

Mysql连接

这里只有一个需要注意一下的点那就是对于命令格式来说,如果使用-u、-p等参数的时候使用一个短划线,但是如果使用--username、--password等要使用双划线的形式。

总结

本节内容非常简单,介绍了关于mysql的安装过程的踩坑和四个常见的启动命令,其实我们重点只需要掌握一个命令即可,同时对于部分命令更加建议自己使用的时候边学边记录可以更好的消化和吸收。

以上就是笔者边学习边踩坑的记录,最后发现最好的教程还是官方文档,另外遇到问题也不要慌,先在自己脑海中大胆的猜测问题点,进行验证之后反复重试,踩坑多了之后自然会熟悉。

写在最后

本文算是对于专栏的重新编写,后续会对之前的学习内容做一个复盘和总结。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
安全 关系型数据库 MySQL
mysql8安装
本文介绍了在 CentOS 7 上安装 MySQL 5.7 的详细步骤,包括下载、环境准备、系统配置、安装过程及启动方法。首先通过wget下载MySQL压缩包并解压至指定目录,接着进行主机名修改、依赖安装、用户与用户组创建、ulimit配置等环境准备工作。随后,对操作系统环境进行调整,如文件句柄和进程数的设置、内核参数优化、SELinux和防火墙的关闭等。最后,完成MySQL的安装配置,创建数据和日志目录,初始化MySQL,并设置启动脚本和环境变量,确保MySQL能够正常运行。
80 4
|
2月前
|
安全 关系型数据库 MySQL
Linux下安装mysql8.0(以tar.xz包安装--编译安装)
通过上述步骤,您完成了从下载、编译、安装到配置MySQL 8.0的全过程。此过程虽然较为复杂,但提供了对MySQL安装环境的完全控制,有助于满足特定的部署需求。在实际操作中,根据具体的系统环境,可能还需调整部分步骤或解决未预见的依赖问题。始终参考官方文档和社区资源,保持安装过程与最新版本的兼容性。
946 67
|
29天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
39 4
|
2月前
|
关系型数据库 MySQL Linux
Docker安装Mysql5.7,解决无法访问DockerHub问题
当 Docker Hub 无法访问时,可以通过配置国内镜像加速来解决应用安装失败和镜像拉取超时的问题。本文介绍了如何在 CentOS 上一键配置国内镜像加速,并成功拉取 MySQL 5.7 镜像。
497 2
Docker安装Mysql5.7,解决无法访问DockerHub问题
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
83 3
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。
本文介绍了在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。内容涵盖准备工作、下载源码、编译安装、配置服务、登录设置及实践心得,帮助读者根据需求选择最适合的安装方法。
59 2
|
1月前
|
存储 SQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(1)作者——LJS[含MySQL的下载、安装、配置详解步骤及报错对应解决方法]
Mysql And Redis基础与进阶操作系列(1)之[MySQL的下载、安装、配置详解步骤及报错对应解决方法]
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
104 2
|
24天前
|
运维 关系型数据库 MySQL
安装MySQL8数据库
本文介绍了MySQL的不同版本及其特点,并详细描述了如何通过Yum源安装MySQL 8.4社区版,包括配置Yum源、安装MySQL、启动服务、设置开机自启动、修改root用户密码以及设置远程登录等步骤。最后还提供了测试连接的方法。适用于初学者和运维人员。
145 0
|
2月前
|
SQL Oracle 关系型数据库
安装最新 MySQL 8.0 数据库(教学用)
安装最新 MySQL 8.0 数据库(教学用)
135 4