rpm、yum安装

网页链接下载

首先进入官网:https://dev.mysql.com/downloads/repo/yum/

点击download(我使用的是centos7,请根据自己的版本进行选择)

鼠标右击NO thanks,just start my download. 后,复制链接地址。

检查

安装前检查是否安装过MySQL

[root@servera ~]# rpm -qa |grep -i mysql

若有则删除

[root@servera ~]# rpm -ev mysql80-community-release-el7-6.noarch   --nodeps

下载

下载rpm包

[root@servera ~]# mkdir /usr/local/mysql
[root@servera ~]# cd /usr/local/mysql
[root@servera mysql]# wget https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
[root@servera mysql]# rpm -ivh mysql80-community-release-el7-7.noarch.rpm

途中遇到了启动失败的问题,参考如下博客

https://www.dandelioncloud.cn/article/details/15158896152308080660

https://blog.csdn.net/qq_41566366/article/details/122868969

安装完成,启动MySQL

[root@servera mysql]# systemctl start mysqld

二进制安装

下载二进制安装包

[root@servera ~]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz
[root@servera ~]# tar -xvf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz

创建mysql用户

useradd mysql -s /sbin/nologin 

配置相应文件

移动文件并配置软连接

[root@servera ~]# mv mysql-5.7.30-linux-glibc2.12-x86_64 /usr/local/
[root@servera local]# ln -s  mysql-5.7.30-linux-glibc2.12-x86_64/   /usr/local/mysql

官方编译的二进制包默认是在 /usr/local 目录下的,若不在需要修改配置文件路径/usr/local/mysql/bin/mysqld_safe。

[root@servera local]# chown -R mysql.mysql /usr/local/mysql*

创建配置文件

[root@servera local]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld                                      #复制官方启动文件
[root@servera local]# vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql                     #mysql安装目录
datadir=/usr/local/mysql/data                #mysql数据存放目录
port=3307                                    #mysql监听端口
socket=/usr/local/mysql/tmp/mysql.sock       #mysql.sock文件存放目录                                                      
symbolic-links=1                             #mysql的符号链接
character-set-server=utf8                    #指定mysql的字符集为utf8
log-error=/usr/local/mysql/data/servera.err  #指定mysql的错误日志存放路径
pid-file=/usr/local/mysql/data/servera.pid   #mysql的pid文件存放目录

初始化数据库

[root@servera usr]# /usr/local/mysql/bin/mysqld  --defaults-file=/etc/my.cnf  --initialize --user=mysql
[root@servera usr]# vim /etc/profile.d/mysql.sh
export PATH="/usr/local/mysql/bin:$PATH"
[root@servera usr]# source /etc/profile

初始化数据库得注意记一下数据库密码

配置mysql.sh变量,主要用于登录mysql的

创建systemd管理文件

[root@servera usr]# vim /usr/lib/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=https://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000

启动数据库

[root@servera usr]# systemctl daemon-reload
[root@servera usr]# systemctl start mysqld
[root@servera usr]# systemctl enable mysqld

mysqladmin -uroot password '123456',若出现报错,可参考https://blog.csdn.net/weixin_43464964/article/details/121807241

service mysqld restart若报错可能是/etc/my.cnf配置出错,报错为

Starting MySQL… ERROR! The server quit without updating PID file (/application/mysql-5.6.40/data/servera.pid).

可以尝试改端口。参考博客https://www.apispace.com/news/post/2544.html

此部分参考博客https://blog.csdn.net/qq_65441164/article/details/126003586

源码编译安装

MySQL版本选择:

https://downloads.mysql.com/archives/community/

5.6:GA(稳定版) 6-12个月 小版本是偶数版是稳定版,奇数版本是开发版

5.7:选择5.17版本以上,支持MGR(MySQL自带的高可用)

下载源码,并且配置编译环境

[root@servera ~]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.40.tar.gz
[root@servera ~]# tar xzvf mysql-5.6.40.tar.gz
[root@servera ~]# yum install -y ncurses-devel libaio-devel cmake gcc gcc-c++ glibc

Mysql需要使用cmake来进行编译,所以需要安装cmake,并且5.7版本cmake版本不低于2.8

创建mysql用户

useradd mysql -s /sbin/nologin -M

编译并安装

创建管理文件夹

创建/application,将MySQL的数据包转移到这个文件夹内,便于管理

[root@servera ~]# mkdir /application
[root@servera ~]# mv mysql-5.6.40  /application/
[root@servera ~]# cd /application/mysql-5.6.40

预编译

预编译需要我们指定安装服务的参数或者模块,还会对编译环境进行测试,只有通过测试,才能进行编译,预编译失败一般都是缺少编译环境GCC或者其他的依赖包,需要我们手工安装完依赖包后,再次进行预编译。

[root@servera mysql-5.6.40]# cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.6.40 \
-DMYSQL_DATADIR=/application/mysql-5.6.40/data \
-DMYSQL_UNIX_ADDR=/application/mysql-5.6.40/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_ZLIB=bundled \
-DWITH_SSL=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_DEBUG=0

参数地址:

DCMAKE_INSTALL_PREFIX:指定MySQL程序的安装目录,默认/usr/local/mysql
DEFAULT_CHARSET:指定服务器默认字符集,默认latin1
DWITH_EXTRA_CHARSET=all:支持扩展字符集
DEFAULT_COLLATION:指定服务器默认的校对规则,默认latin1_general_ci
DENABLED_LOCAL_INFILE:可以使用load data infile命令从本地导入文件,默认OFF。(-DENABLED_LOCAL_INFILE=1 支持将本地文件转换为数据库数据)
DWITH_READLINE=1 使用readline功能,即方便在命令行复制、粘贴命令。
DWITH_xxx_STORAGE_ENGINE:指定静态编译到mysql的存储引擎,MyISAM, MERGE,MEMBER以及CSV四种引擎默认即被编译至服务器,不需要特别指定。
DWITH_MYISAM_STORAGE_ENGINE=1 :添加MYISAM存储引擎支持

DWITH_INNOBASE_STORAGE_ENGINE=1 :添加INNOBASE存储引擎支持
DWITH_MEMORY_STORAGE_ENGINE=1 : 添加MEMORY存储引擎支持
DSYSCONFDIR:初始化参数文件目录
DMYSQL_DATADIR:数据文件目录
DMYSQL_TCP_PORT:服务端口号,默认3306
DMYSQL_UNIX_ADDR:socket文件路径,默认/tmp/mysql.sock

检测命令执行结果

[root@servera mysql-5.6.40]# echo $?
0

#0说明上条命令执行成功,其他执行失败

安装

[root@servera mysql-5.6.40]# make install

配置相应文件

创建配置文件

[root@servera application]# ln -s /application/mysql-5.6.40/ /application/mysql
[root@servera application]# vim /etc/my.cnf
[mysqld]
basedir=/application//mysql-5.6.40                   #mysql安装目录
datadir=/application/mysql-5.6.40/data               #mysql数据存放目录
port=3307                                            #mysql监听端口
socket=/application/mysql-5.6.40/tmp/mysql.sock      #mysql.sock文件存放目录
symbolic-links=1                                     #mysql的符号链接
character-set-server=utf8                            #指定mysql的字符集为utf8
log-error=/application/mysql-5.6.40/data/servera.err #指定mysql的错误日志存放路径
pid-file=/application/mysql-5.6.40/data/servera.pid  #mysql的pid文件存放目录

创建启动脚本

[root@servera application]# cd mysql/support-files/
[root@servera support-files]# cp mysql.server /etc/init.d/mysqld

给脚本加执行权限

[root@servera support-files]# chmod +x /etc/init.d/mysqld

初始化数据库

[root@servera support-files]# cd /application/mysql/scripts/
[root@servera scripts]#yum -y install autoconf
[root@servera scripts]# ./mysql_install_db --user=mysql --basedir=/application/mysql --datadir=/application/mysql/data/

若出现权限不够的报错,则修改mysql_install_db文件的权限。

配置环境变量

[root@servera support-files]# vim /etc/profile.d/mysql.sh
[root@servera support-files]# source /etc/profile

systemd管理mysql

[root@servera mysql]# vim /usr/lib/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=https://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/appkication/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000

启动数据库

修改mysql文件属主和属组

[root@servera mysql]# mkdir /application/mysql/tmp
[root@servera mysql]# chown -R mysql.mysql /application/mysql*
[root@servera mysql]# /etc/init.d/mysqld start
Starting MySQL. SUCCESS!

若报错可能是/etc/my.cnf配置出错,报错为

Starting MySQL… ERROR! The server quit without updating PID file (/application/mysql-5.6.40/data/servera.pid).

可以尝试改端口。

参考博客https://www.apispace.com/news/post/2544.html

设置mysql开机启动,并且开始mysql服务

[root@servera data]# systemctl start mysqld
[root@servera data]# systemctl enable mysqld

设置mysql密码,并且登录测试

[root@servera data]# mysqladmin -uroot password '123456'
Warning: Using a password on the command line interface can be insecure.
[root@servera data]# mysql -uroot -p123456
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 2
Server version: 5.6.40 Source distribution

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

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> \q
Bye

参考博客https://blog.csdn.net/JinLu_/article/details/125245891