最好的安装方式就是不安装,直接初始化就能用,没错,这种方式就是下载二进制版本,解压后就能进行初始化,投入使用。其它的安装方式,无非2种,一是源码编译安装,二是使用安装包,Linux下使用yum之类系统安装工具。最麻烦的是源码编译安装了,这种方式往往可定制性非常灵活,可以选择需要的组件进行编译,本文介绍的是二进制包安装和编译方式安装。废话不多讲,先从简单的开始。
既然要使用进制安装MySQL,得先下载相应的安装包,那肯定是要从官网下载了,这是必须的,因为官网是权威的,正确性和可靠性都有保障(好像是废话)。
MySQL 社区版本 下载页面:https://downloads.mysql.com/archives/community/
下载二进制包时,在 operating system下拉列表选择:Linux-Generic ;在 OS Version 下拉列表中选择对应的glibc版本和平台架构(32位或64位)。
下载源码包时,在 operating system下拉列表选择:Source Code ;在 OS Version 下拉列表中选择对应的glibc版本和平台架构(32位或64位)。
在 OS Version 这个选择框里可能会出现不同的glibc版本,要怎么选择?那还要看linux操作系统中的glibc的版本是什么,一般情况是高版本兼容低版本。
查看系统glibc版本方法:下面是centos7.9 x64的输出。
二进制包安装官方文档:https://dev.mysql.com/doc/refman/8.0/en/binary-installation.html
mysql依赖libaio这个库,需要先行安装
在rhel8或centos8等8版本还需要安装一个包,叫ncurses-compat-libs
安装方式如下:
下面是官网给出的安装步骤:
以上部骤暂且执行到第5行,后面的是在初始化数据库,在后面再介绍。
解压出的目录里包含了mysql所有的启动命令和相关文件,但是每次要执行mysql相关命令时都要写全路径,这有点不方便,我们希望在shell里直接就能运行而不需要打全路径,一个通常的做法是将mysql/bin这个目录加入环境变量PATH中。通常建议写一个shell脚本放到/etc/profile.d/目录下,要想立即生效,source一下这个脚本 ,或者重启系统也可以生效。
源码包安装官方文档:https://dev.mysql.com/doc/refman/8.0/en/installing-source-distribution.html
如果要想安装过程顺利,其实是有先决条件的:https://dev.mysql.com/doc/refman/8.0/en/source-installation-prerequisites.html
MySQL5.7 要求make版本在3.75或以上
MySQL8.0 cmake要求:
此外还有这几个包:ncurses、openssl、 openssl-devel、perl
如果安装的mysql是开发版本,还要求bison 2.1 或更高版本
总之,缺少什么就安装什么。
源码包的安装方式比二进制安装,多了如下3步:
官网的安装步骤如下:
默认情况下,源码安装时,mysql被安装到了这个目录:/usr/local/mysql,当然也可以加参数进行指定,都有哪些参数呢,这里简单列出一些,供参考:
参数名
解释说明
CMAKE_BULD_TYPE
用来指定编译的是RELEASE版本还是DEBUG版本,或者是RelWithDebInfo版本的
CMAKE_INSTALL_PREFIX
用来指安装路径,即安装到哪个目录
MYSQL_DATADIR
用来生成默认的数据库路径,即在没有指定启动参数--defaults-file时的默认数据库路径
OPTIMIZER_TRACE
用来指明是否打开优化器TRACE模块
WITH_ARCHIVE_STORAGE_ENGINE
是否支持Archive存储引擎
WITH_INNOBASE_STORAGE_ENGINE
是否支持InnoDB存储引擎
WITH_BLACKHOLE_STORAGE_ENGINE
是否支持BLACKHOLE存储引擎
WITH_EXAMPLE_STORAGE_ENGINE
是否支持EXAMPLE存储引擎,示例引擎
WITH_INNODB_MEMCACHED
表示是否支持INNODB的MEMCACHED
WITH_PARTITION_STORAGE_ENGINE
表示是否支持partition存储引擎
WITH_SYSTEMD
启用systemd支持文件,即可以使用systemctl 来管理MySQL的启动、停止、重启
以上这些选项可以在CMAKE命令中通过在前面加上-D来指定相应的值,下面给出示例:
关于更多的CMAKE选项,参考官方文档:https://dev.mysql.com/doc/refman/8.0/en/source-configuration-options.html
默认参数情况下,不会产生systemd 的支持文件,这里我在安装的时候,其它所有选项保持默认,只加了一个-DWITH_SYSTEMD=ON这个参数,用来产生mysqld.service文件。
cmake执行完成后会看到如下提示:
接下来执行 make,加上 -j 4 表示启动4个线程执行make,这样会快一些(根据内存大小,否则线程越多,占用内存越多,搞不好就把机器搞挂了,我在4G虚拟机内存下启10个线程就挂了),完成后如下提示:
执行make install进行安装
在cmake的时候加了产生systemd文件的参数,看看有没有产生,可以看到确实产生了,mysqld.service的文件,后面就可以使用systemctl来管理服务端了。
有了mysqld.service的文件,还得把它放到合适的路径下,一般是/usr/lib/systemd/system/下,再执行systemctl daemon-reload 才可以使用。
MySQL的systemd管理具体详情参考官方文档:https://dev.mysql.com/doc/refman/8.0/en/using-systemd.html
不管用什么方式安装的数据库,初始化过程都是一样的,一般是先创建一个数据目录用于存放数据,对这个目录配置所属用户和组及权限,初始化完成后,会在这个目录下生成相应的文件,以后所有数据都会存放在这个文件夹下。
官方的操作如下:
初始化官方文档:https://dev.mysql.com/doc/refman/8.0/en/data-directory-initialization.html
通常在初始化时会指定一个配置文件,叫my.cnf,位于安装目录support-files目录下,如果没有就手动创建,放在/etc/目录下即可。
初始成功后,会有数据库的初始密码返回:
常用的mysql连接的2种方式:
第一次连接mysql后,其实不能执行任何命令,会提示要更改密码,改密码方式如下:
此时的MySQL服务器也只能从本机登录,原因是root用户的Host主机字段值为localhost。