1.安装MySQL5.7
(1) Ubuntu换源
Ubuntu20.04系统自带源直接安装是MySQL 8.0,我要安装MySQL 5.7的版本的所以先进行换源。
① 备份原来的source文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.old
② 修改sources.list文件
sudo vim /etc/apt/sources.list
我选择的是阿里镜像源。将sources.list内容清空,然后选择一个源粘贴到sources.list,保存退出。
# 阿里镜像源
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
③ 更新镜像源和软件
# 更新镜像源
sudo apt-get update
# 更新软件
sudo apt-get upgrade
(2) 安装mysql
前面的准备工作做完,就要开始安装mysql了。在这里提供两种安装方式,自行选择一种进行安装。
① apt-get install方式安装
这种方式需要服务器能联网。
# 执行下面安装命令
# 安装mysql5.7服务端
sudo apt-get install mysql-server-5.7
# 安装mysql5.7客户端
sudo apt-get install mysql-client-5.7
安装时需要输入两次mysql的root用户的密码(此密码需要记住)。
安装完成后查看MySQL版本和服务
mysql -V # 查看mysql版本
netstat -tap | grep mysql # 查看mysql服务
如上图所示说明安装成功。
① deb安装包方式安装
这种安装方式服务器能联网或不能联网都可以。
1) 下载deb安装包
自己去官网下载,选择好MySQL版本和操作系统版本然后点击下载。
网址:https://downloads.mysql.com/archives/community/
2) 使用deb包进行安装
将下载好的mysql-server_5.7.31-1ubuntu18.04_amd64.deb-bundle.tar压缩包导入Linux服务器。此处我是将该deb包放入了如下所示文件夹中(当然放哪都无所谓,按自己喜好放就行):
然后打开终端,cd到该目录下,进行如下操作:
# 新建目录
mkdir mysql5.7.31
mv mysql-server_5.7.31-1ubuntu18.04_amd64.deb-bundle.tar ./mysql5.7.31
# 解压
cd mysql5.7.31
sudo tar -vxf mysql-server_5.7.31-1ubuntu18.04_amd64.deb-bundle.tar
# 解压出来的deb安装包如下:
libmysqlclient20_5.7.31-1ubuntu18.04_amd64.deb
mysql-client_5.7.31-1ubuntu18.04_amd64.deb
mysql-community-source_5.7.31-1ubuntu18.04_amd64.deb
mysql-server_5.7.31-1ubuntu18.04_amd64.deb
mysql-common_5.7.31-1ubuntu18.04_amd64.deb
mysql-testsuite_5.7.31-1ubuntu18.04_amd64.deb
libmysqlclient-dev_5.7.31-1ubuntu18.04_amd64.deb
mysql-community-client_5.7.31-1ubuntu18.04_amd64.deb
mysql-community-server_5.7.31-1ubuntu18.04_amd64.deb
libmysqld-dev_5.7.31-1ubuntu18.04_amd64.deb
mysql-community-test_5.7.31-1ubuntu18.04_amd64.deb
# 删除2个测试相关的包
sudo rm -f mysql-testsuite_5.7.31-1ubuntu18.04_amd64.deb
sudo rm -f mysql-community-test_5.7.31-1ubuntu18.04_amd64.deb
用dpkg进行安装。
# 用dpkg进行安装
sudo dpkg -i mysql-*.deb
安装过程中可能会遇到如下所示的报错。
报错的意思是缺少2个包 libtinfo5 和 libmecab2,那就安装这两个包,如果还缺少其他包,按照下面的步骤安装即可。
# 服务器能联网时直接安装
sudo apt-get install libtinfo5
sudo apt-get install libmecab2
服务器不能联网时就自己去下载然后上传到服务器。
# 下载软件包需要区分硬件架构
uname -m # 查看硬件架构
# 显示
x86_64 # x86_64就是AMD64
将Binary Package对应的网址复制到浏览器即可下载,然后将下载好的 libtinfo5 和 libmecab2包导入服务器进行安装。
sudo dpkg -i libtinfo5_6.2-0ubuntu2_amd64.deb
sudo dpkg -i libmecab2_0.996-10build1_amd64.deb
# 再次用dpkg进行安装
cd mysql5.7.31
sudo dpkg -i mysql-*.deb
提示输入2次root密码,然后安装成功。
安装完成后查看MySQL版本和服务。
mysql -V # 查看mysql版本
netstat -tap | grep mysql # 查看mysql服务
如上图所示说明安装成功。
(3) 数据库参数优化
1. lower_case_table_names
a. 简介
mysql设置大小写是否敏感的一个参数
b. 参数说明
lower_case_table_names=0 表名存储为给定的大小和比较是区分大小写的 lower_case_table_names = 1 表名存储在磁盘是小写的,但是比较的时候是不区分大小写 lower_case_table_names=2 表名存储为给定的大小写但是比较的时候是小写的
c. 具体配置
lower_case_table_names = 1
2. innodb_buffer_pool_size
a. 简介
该参数主要作用是缓存innodb表的索引,数据,插入数据时的缓冲
b. 参数说明
默认值:128M 专用mysql服务器设置的大小: 操作系统内存的70%-80%最佳。 此外,这个参数是非动态的,要修改这个值,需要重启mysqld服务。 所以设置的时候要非常谨慎。 并不是设置的越大越好。设置的过大,会导致system的swap空间被占用,导致操作系统变慢,从而减低sql查询的效率。
c. 具体配置
3. log_bin_trust_function_creators
a. 简介
当二进制日志启用后,这个变量就会启用。它控制是否可以信任存储函数创建者,不会创建写入二进制日志引起不安全事件的存储函数。
b. 参数说明
如果设置为0(默认值),用户不得创建或修改存储函数,除非它们具有除CREATE ROUTINE或ALTER ROUTINE特权之外的SUPER权限。 设置为0还强制使用DETERMINISTIC特性或READS SQL DATA或NO SQL特性声明函数的限制。 如果变量设置为1,MySQL不会对创建存储函数实施这些限制。 此变量也适用于触发器的创建。 那么为什么MySQL有这样的限制呢? 因为二进制日志的一个重要功能是用于主从复制,而存储函数有可能导致主从的数据不一致。所以当开启二进制日志后,参数log_bin_trust_function_creators就会生效,限制存储函数的创建、修改、调用。
c. 具体配置
log_bin_trust_function_creators = 1
1. 找到Mysql的配置文件
具体步骤如下:
① 查看是否使用了指定目录的my.cnf
启动mysql后,我们查看mysql的进程,看看是否有设置使用指定目录的my.cnf文件,如果有则表示mysql启动时是加载了这个配置文件。
命令:
ps aux|grep mysql|grep 'my.cnf'
输出:
可以看到/etc/my.cnf就是mysql启动加载的配置文件。
如果上面的命令没有输出,表示没有设置使用指定目录的my.cnf。
② 查看mysql默认读取my.cnf的目录
如果没有设置使用指定目录的my.cnf,mysql启动时会读取安装目录根目录及默认目录下的my.cnf文件。
查看mysql启动时读取配置文件的默认目录,命令:
mysql --help|grep 'my.cnf'
输出:
这些就是mysql默认会搜寻my.cnf的目录,顺序排前的优先。
③ 启动时没有使用配置文件
如果没有设置使用指定目录my.cnf文件及默认读取目录没有my.cnf文件,表示mysql启动时并没有加载配置文件,而是使用默认配置。
需要修改配置,可以在mysql默认读取的目录中,创建一个my.cnf文件(例如:/etc/my.cnf),把需要修改的配置内容写入,重启mysql后即可生效。
2. 修改my.cnf(my.cnf 一般在/etc文件夹下)
vim /etc/my.cnf (打开后,输入"i" 或者点击"insert"键,输入相应的参数。输入完成,按"Esc",输入":wq",保存并退出)
3. 重启 mysql
service mysql restart