MySQL

  每次安装mysql都是一件比较繁琐的事情,这个数据库自从被oracle收购后,就不太方便从yum一键安装了,所以每次需要自己设置很多配置项,这篇文章整理一下mysql8的整体安装过程~

下载&安装

  下载的话国内镜像站都没有更新近年来(8.0)后的mysql版本,所以个人是去官网下的,官网 的话大陆没有服务器,所以特别慢,有代理尽量开代理~

官方下载页

- 从仓库安装

  第一块,YUMAPTSUSE 分别对应 red-hat系debian系suse系操作系统的在线软件源版本,如果机器可以全局在海外网络下的话是比较推荐用这个的,原因就是简单、快捷。

  拿CentOS举例,如果服务器在海外,那么点第一个 MySQL Yum Repository 会进入到一个选择系统版本的页面,按照自己的情况选择合适的仓库源。

yum选择版本

  下载完成后,会得到一个rpm文件,用Uvh参数更新一些软件仓库,随后安装即可。

# 把mysql添加至软件仓库
yum -Uvh {你下载下来的rpm包}
# 安装mysql服务端及客户端
yum -y isntall mysql-community-server mysql-community-client

  至此等待结束后,mysql就安装完成啦~

离线安装

  离线安装的话有两种方案,一种是通过预先下好的rpm安装包可以非常方便快捷的用少量命令完成安装工作,还有一种就是通过源码编译,这种方案比较复杂,但是可以在安装过程中定制各种参数,达到最大程度的客制化安装。

- rpm安装(推荐)

  在官方下载页中选择 MySQL Community Server,随后选择对应系统版本,下载需要的包,通常来说下载第一个是最保险的(涵盖所有组件)。下载完成后,把tar包上传至服务器(以下依旧以CentOS举例)

  1. 解压mysql安装包
tar -xvf {你下载的mysql包.tar}
  1. 卸载CentOS7自带的MariaDB依赖
rpm -qa|grep mariadb
rpm -e --nodeps mariadb-libs
rpm -qa|grep mariadb		# 再检查一下还有没有返回结果
  1. 安装相关依赖
yum -y install net-tools
yum -y install perl
  1. 依次安装mysql包
rpm -ivh mysql-community-common-xxxxx.rpm		# xxx代表你下载的版本号
rpm -ivh mysql-community-libs*
rpm -ivh mysql-community-client-xxxx.rpm
rpm -ivh  mysql-community-server-xxxx.rpm
  1. 启动mysql,获取默认root密码
service mysqld start
grep 'temporary password' /var/log/mysqld.log		# 查看预分配的密码
  1. 初始化mysql
# 这一步主要是更新一下mysql的root密码
mysql_secure_installation
# 具体我就不写了,跟着他提示走,然后根据你的需求进行初始化

  至此,mysql已安装完毕~

- 源码编译安装

  这个我就不讲了。。略复杂,稍微提一下就是在cmake的时候 带入各种参数,常用的有:

  • -DCMAKE_INSTALL_PREFIX:安装路径
  • -DMYSQL_DATADIR:数据存放目录
  • -DWITH_BOOST:boost源码路径
  • -DSYSCONFDIR:my.cnf配置文件目录
  • -DEFAULT_CHARSET:数据库默认字符编码
  • -DDEFAULT_COLLATION:默认排序规则
  • -DENABLED_LOCAL_INFILE:允许从本文件导入数据
  • -DEXTRA_CHARSETS:安装所有字符集

  更多详细的参数请看官方的:预编译参数

配置MySQL

1. 关闭Selinux

  这东西是一个安全模块。。但是开着很多时候在配置软件和使用过程中,会产生一些玄学问题,所以一般来说为了防止出现玄学问题,在配置前先把这个功能关掉

  • 临时关闭
setenforce 0
  • 永久关闭
vim /etc/selinux/config
把 SELINUX=enforcing 改为 SELINUX=disabled 即可
source /etc/selinux/config			# 让配置文件生效

2. 开启远程访问

  默认安装好的mysql是不开启远程连接的,但是在实际使用过程中,没有人直接登录上数据库服务器直接进行操作,所以得手动开一下

mysql -u root -p
输入密码
use mysql;
CREATE USER 'root'@'%' IDENTIFIED BY '你的密码';
GRANT ALL ON *.* TO 'root'@'%';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码';
FLUSH PRIVILEGES;

3. 设定数据存储路径

  一般来说MySQL默认存储位置在/var/lib/mysql下,这个位置一般用的是挂在系统根目录下的磁盘(一般来说不太会对这个位置扩容),为了更好的管理数据,一般会放在一块LVM的数据卷上,方便日后弹性扩容以及进行数据迁移。

Step.1 先看看磁盘具体分区情况

df -h

Step.2 创建数据存放点

# 找到你想要存放数据的目录,以下以/data 举例

# 关闭mysql服务
service mysqld stop

# 创建数据存放点
mkdir /data/mysql
cp -R /var/lib/mysql/*	/data/mysql		# 递归把原始路径下所有文件放到新的目录中
chown -R mysql:mysql /data/mysql		# 给/data/mysql授权

Step.3 修改mysql配置

vim /etc/my.cnf
# 把原先的注释掉,养成好习惯,不要直接改
datadir=/data/mysql
socket=/data/mysql/mysql.sock

# 在配置文件中,找个合适的位置添加
[client]
socket=/data/mysql/mysql.sock

Step.4 验证结果

service mysqld start		# 先把服务起起来
show global variables like "%datadir%";		# 看看文件存储位置是否已经生效