共计 7479 个字符,预计需要花费 19 分钟才能阅读完成。
从零开始学 MYSQL – MYSQL 装置
前言
这个专栏也能够认为是学习笔记,因为之前的专栏学习的是网络上的培训机构教程,学习实现之后发现尽管讲到一些有一些深刻的货色,然而讲的都不是特地深,所以从这一节开始将会从零开始来全盘理解 MYSQL,这里找了一本书《从根上了解 Mysql》,集体也非常举荐读者去看看这边书,不仅有新个性对接解说,也有很多的干货,同时讲的也非常好,作为反对集体前面也买了一本实体书(尽管根本都是拿 pdf 看的)。
思维导图(继续更新)
https://www.mubucm.com/doc/7D…
图片地址:https://gitee.com/lazyTimes/i…
参考资料:
- 英文 mysql5.7 官网文档:https://dev.mysql.com/doc/ref…
- 中文对应翻译网站(机翻):https://www.docs4dev.com/docs…
概述
- 意识 mysql 的客户端和服务端是怎么一回事
- 理解装置 mysql 的注意事项,以及回顾 mysql 集体
-
简要介绍对于 mysql 启动的常见四个命令以及具体的作用
- mysqld
- mysqld_safe
- mysql.server
- mysqld_multi
意识客户端和服务端
因为是 Mysql 的专栏,这里就不牵扯下面 TCP/IP,什么网络传输协定了,总之咱们只须要理解 mysql 是分为客户端和服务端的,通常咱们拜访页面或者浏览数据就是一次数据库的拜访过程(当然当初少数货色都动态化了),所以连贯的这一方被称为客户端而承受申请的这一方面被称为服务端。
mysql 的根本工作
通常咱们应用 MYSQL 根本都是干这些事件:
- 连贯数据库。
- 查询数据库的数据,客户端发送申请给服务端,服务端依据命令找到数据回送给客户端。
- 和数据库断开连接。
mysql 实例
说完了下面的废话之后,咱们来说下 mysql 实例,实例也在操作系统的层面叫做过程,而过程能够看做是处理器,内存,IO 设施的形象,咱们不须要晓得这个过程底层是如何传输数据存储数据的,咱们只须要理解他须要一个 端口 ,并且每一个实例都有一个 过程 ID的货色,在数据库实例运行的时候零碎会调配一个过程 ID 给它并且保障惟一,而每一个过程都有本人的名字,这个名称是装置的时候由程序员本人设置的,然而如果没有调配则会应用 MYSQL 本人默认设置的名称。
咱们启动的 MySQL 服务器过程的默认名称 为 mysqld,而咱们 罕用的 MySQL 客户端过程 的默认名称为 mysql。
从这个名称咱们也能够揣测出为什么咱们启动一个服务通常会应用 Mysqld,而咱们连贯数据库通常应用 mysql。
- 每一个文件就是对于 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 又是启动的,这里有点奇怪。
这里找了下网络上的解决办法,其实加个环境变量就行了,而后应用 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 分期才敢碰的神物,我置信用的人也不多,所以这里间接放个帖子:
https://www.cnblogs.com/nickc…
Linux 装置过程
因为集体应用云服务器搭建 mysql 比拟多,这里提供了一个阿里云 rpm 包的装置形式,版本是 centeros7,centeros6 同样能够应用,不过须要批改局部命令。
https://juejin.cn/post/689525…
Mysql 启动:
少数状况咱们应用 mysql.sever 启动即可,因为它会间接的调用其余的几个命令,而 mysqld_muti 这个命令更倡议本人实战的时候进行配置的学习应用,更加事倍功半。
mysqld
Mysqld:代表的是 mysql 的服务器程序,运行就能够启动一个服务器的过程,然而 不罕用。
集体在实际之后应用了 mysqld 命令之后,发现运行的后果如下,起初比拟莫名其妙的问题,然而看日志不难发现问题,其实就是 目录不存在 并且 mysql 又没法给你创立目录,只有应用 everything 找到对应点文件即可(mac 为什么没有这么好用的软件,哎)。
你能够通过找到上面的 my.ini
文件并且批改外面对于 datadir 的门路即可。
通过关上这个文件发现配置门路外面有一个/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
启动一个服务器过程并且在对应的目录上面构建了对应的文件。
答案的灵感来自于上面的局部:
What I did (Windows 10) for a new installation:
- Start cmd in admin mode (run as administrator by hitting windows key, typing cmd, right clicking on it and selecting “Run as Administrator”
- Change into “MySQL Server X.Y” directory (for me the full path is C:\Program Files\MySQL\MySQL Server 5.7″)
using notepad create a my.ini with a mysqld section that points at your data directory
[mysqld] datadir="X:\Your Directory Path and Name"
- created the directory identified in my.ini above.
- change into bin Directory under server directory and execute:
mysqld --initialize
- Once complete, started the service and it came up fine.
mysqld_safe
mysqld_safe 是一个启动脚本,在间接的调用 mysqld,同时 监控过程,应用 mysqld_safe 启动服务器程序时,会通过监控把出错的内容和出错的信息重定向到一某个文件外面产生出错日志,这样能够不便咱们找出产生谬误的起因。
然而集体实际之后找不到,其实起因是 windows 没有这个命令 的,对于更多 mysqld_safe 命令的解释能够看看 mysql 的官方网站:https://dev.mysql.com/doc/ref…
如果浏览英文有艰难,这里有一个中文的翻译网站:https://www.docs4dev.com/docs…
对于一些 Linux 平台,应用 RPM 或 Debian 软件包装置的 MySQL 包含对 ManagementMySQL 服务器启动和敞开的零碎反对。在这些平台上可能被认为没有必要所有没有装置 mysql.server 和 mysqld_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
有的时候咱们可能会想要在一台的机器上应用多个服务器的过程,这个命令的作用是对于每一个服务器过程进行启动或者进行监控,然而因为这个命令较为简单,集体还是倡议应用下面的官网稳固链接进行具体的细节理解。
如果浏览英文有艰难,这里有一个中文的翻译网站:https://www.docs4dev.com/docs…
window& 服务启动
这个简略理解一下即可,window 端的 mysql 根本是为了关照 windows 的用户才呈现的,真正能施展拳脚的中央还是 linux,当然有些公司的确会应用 window 作为服务器。。。。。所以还是过一下,上面是装置一个 windows 的服务的命令:
"残缺的可执行文件门路" --install [-manual] [服务名]
其中的 -manual 能够省略,区别在于加上会敞开 主动启动 改为 手动启动
最初上面是集体的 mysqld 服务装置命令,请读者依据本人的零碎环境自行装置即可。
C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld --install
装置之后应用 net start mysql
和net stop mysql
命令即可启动或者敞开。
Mysql 连贯
这里只有一个须要留神一下的点那就是对于命令格局来说,如果应用 -u、- p 等参数的时候应用一个短划线,然而如果应用 –username、–password 等要应用双划线的模式。
总结
本节内容非常简单,介绍了对于 mysql 的装置过程的踩坑和四个常见的启动命令,其实咱们重点只须要把握一个命令即可,同时对于局部命令更加倡议本人应用的时候边学边记录能够更好的消化和排汇。
以上就是笔者边学习边踩坑的记录,最初发现最好的教程还是官网文档,另外遇到问题也不要慌,先在本人脑海中大胆的猜想问题点,进行验证之后重复重试,踩坑多了之后天然会相熟。
写在最初
算了对于专栏的从新编写,后续会对之前的学习内容做一个复盘和总结。