Last Updated on

前言

Mysql,知名常用的开源数据库,我就不介绍了,实在是用的太广泛了。之前我记录过一篇通过yum安装mysql5.7的文章,比较方便快捷,有兴趣的请看:

《centos7 通过Yum安装MySql5.7并开启远程访问》

使用yum安装固然方便快捷,但是安装的过程是无法干预的,不支持自定义,不够灵活,而源码安装则可以按需进行,灵活配置,同时也可以方便管理,迁移等。但也并不是说源码安装就好,什么东西都要用源码安装,yum安装和源码安装本质上区别也不大,只要能满足自己都需求,明白自己装的什么,装在哪的,都一样灵活使用。

对于新学习的小白来说,我推荐每个软件都源码安装一次,源码安装可以一步步的进行,在过程中更好的了解软件,对于学习和熟悉来说是好事,等你熟悉了之后,不管用yum还是源码就感觉差不多了,根据需求选择就行。

mysql的话,有两种方案,用编译好的二进制包安装,或者使用最原始的源码手动编译安装。两种方法都行,使用源码手动编译的话,更复杂麻烦一些,编译后的文件跟下载的二进制包是一样的。为了方便这里我使用二进制包进行安装。

安装方式可以参考官方文档的二进制安装部分

正文

1. 下载软件包

首先,去官网下载页面下载最新的二进制安装包

选择版本,选择红帽系统,版本7,按图中所示下载压缩包,注意不是rpm包,别下错了。

# 目前的5.7最新版为5.7.26
$ wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.26-el7-x86_64.tar.gz

2. 卸载自带的mariadb

centos7 系统默认会自带mariadb,需要先删除mariadb。

# 查出mariadb的rpm包
$ rpm -qa|grep mariadb
mariadb-libs-5.5.44-2.el7.centos.x86_64

# 忽略依赖关系,删除此包
$ rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64

3. 安装mysql

下载好安装包,删除完mariadb后,下面进行mysql的安装,依次执行下面的步骤

# 解压
$ tar -zxvf mysql-5.7.26-el7-x86_64.tar.gz

# 将解压后的文件夹移动到/usr/local下并更名为mysql
$ mv mysql-5.7.26-el7-x86_64 /usr/local/mysql

# 添加用户组mysql
$ groupadd mysql

# 添加无法登录和使用shell的用户mysql并隶属于mysql组
$ useradd -r -g mysql -s /bin/false mysql

# 新建mysql数据存放目录
$ mkdir -p /usr/local/mysql/data

# 授权此目录的所有者为mysql用户
$ chown -R mysql:mysql /usr/local/mysql/data

# 权限设置为只有mysql用户可读写,mysql用户组可读,其他无权限。
$ chmod 750 /usr/local/mysql/data

# 初始化数据库
$ /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
# 输出的结果最后一行,会有一个初始化的root密码,要记录下来,后面第一次登录要用
2019-06-26T07:05:25.453402Z 1 [Note] A temporary password is generated for root@localhost: jDlit0srk9,r

# 生成rsa密钥
$ /usr/local/mysql/bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data

# 到此mysql的安装已经基本完成了,现在需要设置配置文件,在老版的mysql二进制包中,如mysql5.6是有配置文件的示例文件的,但是在mysql5.7中是没有的。
# 新增配置文件,添加下面的基础配置内容,此配置为最基础的配置,特殊的功能和设置需要自行额外进行设置。
$ vim /etc/my.cnf
-------------------------------------------------------------------
[client]
# 本地客户端指定sock路径,必须跟下面服务端配置的socket一致,不然本地找不到sock文件,无法连接直接使用mysql命令登录
socket = /usr/local/mysql/data/mysql.sock

[mysqld]
# 指定用户
user = mysql

# mysql主目录
basedir = /usr/local/mysql

# 数据目录
datadir = /usr/local/mysql/data

# 端口
port = 3306

# pid文件路径
pid-file = /usr/local/mysql/data/mysql.pid

# sock文件路径
socket = /usr/local/mysql/data/mysql.sock

# 错误日志路径
log-error = /usr/local/mysql/data/error.log

# 禁止反向解析hostname和dns,只使用ip进行连接
skip-name-resolve = 1

# 默认的sql_mode配置
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
-------------------------------------------------------------------

# 添加环境变量,添加下面的内容到最后
$ vim /etc/profile
------------------------------------------------------------------
export PATH=$PATH:/usr/local/mysql/bin
------------------------------------------------------------------

以上就已经安装好了mysql,至于mysql服务的配置文件设置,可以参看我的另一篇文章:《Mysql5.6 修改配置my.cnf,进行性能优化》。虽然是mysql5.6版本的配置文件,但很多都还是通用的,仅供参考,帮助了解配置。

然后就是启动mysql服务了,下面就将mysql设置成统服务来进行管理和使用。

# 复制服务脚本
$ cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

# 添加此服务到系统服务
$ chkconfig --add mysqld

# 添加服务后,就可以使用systemctl命令进行管理了
# 启动服务
$ systemctl start mysqld

# 设置服务为开机自启动
$ systemctl enable mysqld

# 查看服务运行状态
$ systemctl status mysqld

4. 开启远程访问

通过上面的步骤,mysql已经成功安装与启动,下面就登录mysql,进行设置

# 输入密码,登录mysql
$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.26

Copyright (c) 2000, 2019, 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>

# 修改密码,mysql5.7的默认密码强度很高,需要有大小写,符号和数字,长度大于6,缺一不可
mysql> alter user 'root'@'localhost' identified by 'your_password';
Query OK, 0 rows affected (0.00 sec)

# 如果你不像要这么复杂的密码,可以先修改密码强度设定为最低,即只判断密码长度
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)

# 开启远程访问
$ grant all privileges on *.* to 'root'@'%' identified by 'your_password';
Query OK, 0 rows affected, 1 warning (0.00 sec)

# 刷新权限生效
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

# 推出登录
mysql> exit
Bye


# 到此就完成了mysql的最初设置了,现在就可以用账号密码,访问此mysql服务了
# 访问之前别忘了要打开数据库3306端口
$ firewall-cmd --add-port=3306/tcp --permanent
$ firewall-cmd --reload

结束

好啦,到此就完成了mysql5.7的二进制安装,通过安装也可以更好的理解mysql的运行环境和情况。有兴趣的还可以通过官方文档,了解纯源码编译安装方式。

有什么问题,欢迎留言。