介绍
mysql 是一种RDBMS 关系型数据库管理系统 Relational Database Management System
关系型数据库将数据保存在不同的表中,而不是放在一个大仓库内,增加了速度,提高了灵活性。
.
mysql版本
5.7.x 和 8.0.x 是目前主流。2个版本有性能上差异。
一般三个月迭代一个小版本
.
安装
1、下载
去官网 https://dev.mysql.com/downloads/mysql/ 下载 Community(社区版) 的 generic(通用版) 二进制包文件。
mysql一般不用源码包编译因为时间太久。
.
看一下自己系统的C文件库是多少版本
.
2、解压
下载文件名为 mysql-8.0.33-linux-glibc2.17-x86_64-minimal.tar.xz ,需用 J 而不是 z 来解压。
tar Jxvf mysql-8.0.33-linux-glibc2.17-x86_64-minimal.tar.xz
.
做一个软链接让名字变短点。
ln -s mysql-8.0.33-linux-glibc2.17-x86_64-minimal mysql
.
3、创建用户
useradd -s /sbin/nologin mysql 创建一个无系统登录权限的mysql用户
useradd -s /sbin/nologin mysql
.
4、创建数据目录
mkdir -p /data/mysql
最好是单独在一个大的分区且是性能比较好的磁盘。数据库对磁盘读写的性能要求比较高。
.
设定数据目录的属主属组为要写入的用户名
chown -R mysql:mysql /data/mysql
.
5、核心配置文件
/etc/my.cnf
( 很多linux会默认自带有mariadb的配置文件,看内容可识别出来)
客户端【mysql】可配置端口和socket等,也可不配置。
重要的是服务端【mysqld】的配置,介绍几个最核心配置:
basedir 指定mysql程序路径
datadir 指定数据存放路径
socket是linux进程之间通信的一种方式
pid-file 是记录进程启动以后会产生的一个pid
log-error 错误日志记录的位置
plugin_dir mysql中plugin插件所在的路径;
symbolic-links=0 符号连接。如果设置为1,则mysql数据库和表里的数据支持储存在datadir目录之外的路径下,默认都是0
.
6、安装依赖
7、初始化mysql文件
初次运行 mysql 先要让指定的数据目录/data/mysql 产生初始文件。
/usr/local/mysql/bin/mysqld --console --initialize-insecure --user=mysql
--console 让返回打印在控制台。
--initialize-insecure 产生初始化文件。 -insecure 使用空密码的方式
--user 初始化使用的用户名,这样产生的文件属主属组都是这个用户的
.
--console 在启动时候的产生打印效果如下,这部分也可以在log日志中看到
.
--user = mysql 产生的效果
(上一步只是进行初始化,mysql 初始化结束后也并没有启动)
8、启动服务
写启动服务的脚步
vi /usr/lib/systemd/system/mysqld.service
(这些启动服务模板具有通用性)
[Unit]
Description=Mysql server
After=network.target
[Install]
WantedBy=multi-user.target
[Service]
Type=forking
TimeoutSec=0
PermissionsStartOnly=true
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --daemonize $OPTIONS
ExecReload=/bin/kill -HUP -$MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
KillMode=process
LimitNOFILE=65535
Restart=on-failure
RestartSec=10
RestartPreventExitStatus=1
PrivateTmp=false
--defaults-file= 指定启动时的配置文件。这里不指定也可以,因为mysql本身就默认会找这个文件
--daemonize 表示后台启动
ExecReload=/bin/kill -HUP -$MAINPID 杀掉进程,可以加 -s HUP 强制杀掉,下面QUIT 也可以改为 -s QUIT 强制退出。
-$MAINPID 就是定义的.pid文件
.
编辑好启动服务文件后,因为是新配置的启动服务,因此需要重置一下系统服务
systemctl daemon-reload
.
启动服务
systemctl start mysqld
可以从ps看到记录的mysql服务启动的命令就是 mysql.service 里定义的 ExecStart 命令
.
把服务设为开机自启动
systemctl enable mysqld
.
.
9、配置环境变量
为了使 mysql 的命令能直接输入运行,需要加入环境变量。不然只能用绝对路径 /usr/local/mysql/bin/XXX
vi /etc/profile
把mysql的路径加进去。
source /etc/profile #重载让文件生效
可能遇到错误:
1) libaio.so.1 缺少
这个错误是在初始化没装依赖 情况下会发生的。
yum provides "/*/libaio.so.1"
i686是32 位的。 x86_64是64位的。
uname -a #查看下当前系统的架构
yum install libaio-0.3.109-13.el7.x86_64 -y
2)The designated data directory /data/mysql/ is unusable
数据库存储目录没有使用权,可能是初始化过了需要remove;可能是这个文件夹的属组属主并不是 --user= 设定的那个