linux安装mysql(yum安装、预编译的glibc二进制包安装、rpm包安装、编译源码包安装)
mysql的多种安装方式
前言
环境:Centos 8.2
官方对mysql的安装提供了很多种安装方式
第1种是,yum安装;
第2种是,直接解压预编译过的二进制包安装;
第3种是,rpm包安装;
第4种是,使用cmake编译源码包安装;
下面分别对这4种生产环境最常用的安装方式来讲解,根据自己的linux操作系统版本已经自己所需的mysql版本,各个不同的mysql版本安装都是一样的。
yum安装mysql
Yum安装mysql是最方便的,yum安装有一个不好的地方,那就是没办法自定义安装路径;
首先去官网下载mysql最新的自己想要的版本的yum的镜像仓库rpm包;
[root@web03 ~]# wget https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm #先下载mysql的镜像仓库
[root@web03 ~]# md5sum mysql80-community-release-el8-1.noarch.rpm #MD5校验
[root@web03 ~]# ls /etc/yum.repos.d/mysql* #查看yum仓库没有mysql源的
[root@web03 ~]# yum install mysql80-community-release-el8-1.noarch.rpm #安装刚才下载的mysql仓库包
[root@web03 ~]# ls /etc/yum.repos.d/mysql* #查看yum仓库有了mysql镜像源
mysql-community.repo mysql-community-source.repo
# 搜索mysql的版本,显示有这个mysql-community-server.x86_64 就行,我们要装的就是这个mysql-community-server.x86_64 ,如果显示没有
# mysql-community-server.x86_64 ,那就把原来的BaseOS和AppStream禁用
[root@web03 yum.repos.d]# yum search mysql| grep mysql-community-server
[root@web03 yum.repos.d]# vim CentOS-Linux-BaseOS.repo #把原来的源先禁用enable=0
[root@web03 yum.repos.d]# vim CentOS-Linux-AppStream.repo #把原来的源先禁用enable=0
[root@web03 ~]# yum install mysql-community-server #开始安装mysql-community-server
# 第一次启动mysql服务,会在/var/lib/mysql/目录下生产一堆文件,初始root登录密码也在里面
[root@web03 ~]# systemctl start mysqld.service #启动mysql
[root@web03 mysql]# grep "password" /var/log/mysqld.log #查看root初始登录密码
预编译的glibc二进制包安装mysql
从官方网站https://dev.mysql.com/doc/refman/8.0/en/binary-installation.html
(有空多读读官方文档)得知,mysql还发行了一种预编译过的二进制包,所以我们只需要解压包并初始化数据库即可使用mysql,那哪种才是二进制包呢?
由上图的官网可知,带有xxxx.xxx.tar.xz结尾的才是二进制包,下面我们去官方找一下二进制安装包:
可知,这种包需要用到glibc,查看自己的Linux服务器上glibc是多少版本的(rpm -qa | grep glibc
),然后才去下载对应版本的mysql二进制包即可。
这里我下载了mysql-8.0.25-linux-glibc2.12-x86_64.tar.xz
下面是具体二进制安装mysql步骤如下:
[root@web02 ~]# rpm -qa | grep glibc #查看本机的glibc版本后下载对应的mysql二进制包
[root@web02 ~]# wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.25-linux-glibc2.12-x86_64.tar.xz
[root@web02 ~]# yum install libaio #官方说要安装这个libaio依赖包
[root@web02 ~]# yum install ncurses-compat-libs #官方说要安装ncurses-compat-libs依赖包(建议直接yum install ncurses*)
[root@web02 ~]# xz -d mysql-8.0.25-linux-glibc2.12-x86_64.tar.xz #使用xz命令解压tar.xz包,解压后压缩包消失
[root@web02 ~]# tar -xvf mysql-8.0.25-linux-glibc2.12-x86_64.tar #上一步解压得到了一个tar包,继续解包
# 下面我们参照官网的安装说明执行下面的目录
shell> groupadd mysql #创建一个mysql组
shell> useradd -r -g mysql -s /bin/false mysql #创建一个系统用户mysql,并且指定属组,以及不能登录
shell> cd /usr/local
shell> tar xvf /path/to/mysql-VERSION-OS.tar.xz #如果tar不支持直接解压tar.xz包,可以执行上面的那两条命令
shell> ln -s full-path-to-mysql-VERSION-OS mysql #创建一个mysql软链接,这个mysql链接到实际mysql目录
shell> cd mysql
shell> mkdir mysql-files #创建一个mysql-files目录
shell> chown mysql:mysql mysql-files #改变mysql-files目录的属主属组
shell> chmod 750 mysql-files #对mysql-files目录授权
shell> bin/mysqld --initialize --user=mysql #初始化数据目录,会生成root初始登录密码
shell> bin/mysql_ssl_rsa_setup #配置自动支持安全连接
shell> bin/mysqld_safe --user=mysql & #启动mysql服务
shell> cp support-files/mysql.server /etc/init.d/mysql.server #将mysql的启动文件复制到/etc/init.d目录下
shell>echo 'PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile #配置环境变量
shell>echo 'export PATH' >> /etc/profile #配置环境变量
[root@web02 share]# service mysql.server start #启动数据库,未完,继续往下看
Shutting start MySQL.. SUCCESS!
成功开启mysql数据库,但是仔细观察的朋友就会发现,上面的步骤并没有复制或创建my.cnf文件,ls support-files/查看support-files目录发现并没有以.cnf结尾的配置文件,那么mysql是怎么启动的呢?一种说法是mysql采用了最小默认值的方式启动的,这里存疑,我们来看官网解释:
从上图得知,mysql8中已经不再提供默认的.cnf配置文件,所以 ls support-files/查看support-files目录发现并没有以.cnf结尾的配置文件,同时查看mysql.server文件,
[root@web02 support-files]# cat mysql.server
28 # If you install MySQL on some other places than /usr/local/mysql, then you
29 # have to do one of the following things for this script to work:
30 #
31 # - Run this script from within the MySQL installation directory
32 # - Create a /etc/my.cnf file with the following information:
33 # [mysqld]
34 # basedir=<path-to-mysql-installation-directory>
35 # - Add the above to any other configuration file (for example ~/.my.ini)
36 # and copy my_print_defaults to /usr/bin
37 # - Add the path to the mysql-installation-directory to the basedir variable
38 # below.
39 #
40 # If you want to affect other MySQL variables, you should make your changes
41 # in the /etc/my.cnf, ~/.my.cnf or other MySQL configuration files.
42
第28行也说可以自己创建一个/etc/my.cnf文件,那这里从其他地方复制一个/etc/my.cnf文件过来。
#从其他安装有mysql的服务器上复制一个my.cnf配置文件过去之后需要改一下my.cnf的参数
shell>scp /etc/my.cnf root@192.168.43.229:/etc/
shell> service mysql.server stop #停止mysql服务
shell> service mysql.server start #重新启动mysql服务,这样mysql就能读取/etc/my.cnf配置文件内容了
rpm包安装mysql
mysql官网还提供了rpm包来安装mysql服务,这种rpm包其实是一个Bundle包,其实捆绑了很多rpm包,所以很大,https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.38-1.el7.x86_64.rpm-bundle.tar
mkdir mysql
cd mysql/
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.38-1.el7.x86_64.rpm-bundle.tar
tar xf mysql-5.7.38-1.el7.x86_64.rpm-bundle.tar
rpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
ls /etc/my*
rpm -ivh mysql-community-common-5.7.38-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.38-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.38-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.38-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.38-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.38-1.el7.x86_64.rpm
rpm -ivh mysql-community-embedded-5.7.38-1.el7.x86_64.rpm
rpm -ivh mysql-community-embedded-compat-5.7.38-1.el7.x86_64.rpm
rpm -ivh mysql-community-embedded-devel-5.7.38-1.el7.x86_64.rpm
which mysqld
id mysql
#开始初始化mysql
mysqld --initialize --user=mysql
systemctl start mysqld
systemctl status mysqld
systemctl enable mysqld
grep "password" /var/log/mysqld.log
which mysql
mysql -uroot -p#%b9oE67kaj4
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Aa123456';
use mysql;
update user set host='%' where user='root';
FLUSH PRIVILEGES;
exit;
systemctl restart mysqld
源码包cmake编译安装mysql
使用cmake进行源码编译安装mysql,官网安装文档在https://dev.mysql.com/doc/refman/5.7/en/automatic-start.html
,首先下载mysql的源码包,如下,本次安装mysql-5.7.38版本。
编译参数说明
参数 | 说明 |
---|---|
-DCMAKE_INSTALL_PREFIX | mysql的安装目录 |
-DMYSQL_DATADIR | 数据文件存储路径 |
-DSYSCONFDIR | 配置文件路径(my.cnf) |
-DENABLED_LOCAL_INFILE=1 | 使用localmysql客户端的配置 |
-DWITH_PARTITION_STORAGE_ENGINE | 是mysql支持分表 |
-DEXTRA_CHARSETS | 安装支持的字符集 |
-DDEFAULT_CHARSET | 指定默认的字符集 |
-DDEFAULT_COLLATION | 连接字符集 |
-DWITH_SSL | 开启mysql的ssl的使用 |
--basedir 安装mysql的目录
--datadir 数据文件存储路径
--user 指定mysql使用的用户
yum install cmake
yum install ncurses-devel
yum -y install openssl-devel
`id mysql` &> /dev/null
[ $? -ne 0 ] && groupadd mysql && useradd -r -g mysql -s /bin/false -M mysql
cd /opt/
#官网显示必须安装 Boost 1.59.0 ,说以下载Boost 1.59.0
wget https://udomain.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
tar -zxvf boost_1_59_0.tar.gz -C /usr/local/
ll /usr/local/boost_1_59_0
#下载mysql源码包,源码包解压之后有很多CMake字样的文件,千万不要下载错源码包了
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.38.tar.gz
tar -zxvf mysql-5.7.38.tar.gz
cd mysql-5.7.38
#使用cmake命令开始编译
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_BOOST=/usr/local/boost_1_59_0 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SSL=system
#make 这步会耗时很久,如果依赖报错了,需要自己解决依赖,如果还是不行,那重新删除mysql-5.7.38目录重新解压看看吧(笔者
# 也是make 这一步报了很多编译错误,解决起来很麻烦,然后删除mysql-5.7.38目录重新解压重新make 就成功了,其实官网安装文档也提示,
#当你重新cmake之前,需要执行make clean、rm CMakeCache.txt来进行删除之前的缓存配置)
make -j 4
make install
rm -rf /etc/my.cnf
#这个源码包没有提供my.cnf配置文件
# cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
chown -R mysql:mysql /usr/local/mysql
cd /usr/local/mysql/bin
./mysqld --initialize --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
service mysqld start
chkconfig --add mysqld
echo 'PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
#指定安全验证,进行删除匿名用户,删除测试数据库
cd /usr/local/mysql/bin && ./mysql_secure_installation
#登录验证
mysql -uroot -p
mysql> show database;
最后mysql已经安装完成
更多推荐
所有评论(0)