Linux[CentOS]下编译安装Mysql5.7 步骤

前言

在之前,我写了两篇关于编译安装Nginx和PHP的文章,全部手动编译。

以后可以使用那些一键的脚本,但是要明白一些底层的操作,以后才能更得心应手。一味的用那些面板、一键安装脚本,并不是一个很好的选择。

动手安装一遍,并记录一篇文章,然后以后若忘了,翻一翻文章,也就想起了。挺好。

下载安装

下载MySQL源码包

官网地址:https://dev.mysql.com/downloads/mysql/

官网现在首页是8.x的版本,若要使用5.7,得经历一番步骤:

A. 选择Source Code

B. 选择Source Code后,选择Generic Linux(Architecture Independent)

C. 点击右侧的:Looking for previous GA versions?,因为首页默认是8.x版本的:

D.

E. No thanks, just start my download.

右键复制以上的链接,或者下载到本地电脑,再上传到Linux运行。

嗯,你也可以直接运行以下命令,下载5.7.x版本: wget -c https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.28.tar.gz 以上也是官网地址。2333

新建myqsl用户

useradd -s /sbin/nologin mysql

我们还是单独使用一个用户来管理mysql

建立目录

mkdir -p /data/mysql/data
chown -R mysql:mysql /data/mysql

解压

将下载好的mysql 解压到/usr/local/mysql 目录下

mkdir /usr/local/mysql # 创建mysql安装的目录,有则不创建
tar -zxvf mysql-boost-5.7.28.tar.gz -C /usr/local/mysql/

编译安装

进入目录

cd /usr/local/mysql # 切换到mysql 安装目录
cd mysql-5.7.28 #  /usr/local/mysql 目录里面还有一个mysql-5.7.28 ,所以我们还需要进入

cmake

cmake -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=boost

还记得么,我们下载源码时,选择了带boost的版本,所以这里后面有个-DWITH_BOOST=boost,5.7后的版本,必须带这个参数,如果我们没选择带boost的版本,这里可能还要麻烦点。

编译安装

make && make install

编译中,时间稍微有点长【不是一般的长....,可能我虚拟机配置不是很好】

可能我虚拟机给的配置确实不行,这一步过了1个多小时 此步完成界面:

安装好了的/usr/local/mysql目录:

配置

编辑/etc/my.cnf

( 没有则创建)

vi /etc/my.cnf

有的话,应该有一些默认配置,然后贴一下网上找到的配置:

你可选择删除默认配置,粘贴以下配置。或自己配置。 以下配置内容非必须,可依据实际情况,做相应的调整!

[client]
port        = 3306
socket      = /tmp/mysql.sock

[mysqld]
port        = 3306
socket      = /tmp/mysql.sock
user = mysql


basedir = /usr/local/mysql
datadir = /data/mysql/data
pid-file = /data/mysql/mysql.pid

log_error = /data/mysql/mysql-error.log
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /data/mysql/mysql-slow.log


skip-external-locking
key_buffer_size = 32M
max_allowed_packet = 1024M
table_open_cache = 128
sort_buffer_size = 768K
net_buffer_length = 8K
read_buffer_size = 768K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
thread_cache_size = 16
query_cache_size = 16M
tmp_table_size = 32M
performance_schema_max_table_instances = 1000

explicit_defaults_for_timestamp = true
#skip-networking
max_connections = 500
max_connect_errors = 100
open_files_limit = 65535

log_bin=mysql-bin
binlog_format=mixed
server_id   = 232
expire_logs_days = 10
early-plugin-load = ""

default_storage_engine = InnoDB
innodb_file_per_table = 1
innodb_buffer_pool_size = 128M
innodb_log_file_size = 32M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 32M
sort_buffer_size = 768K
read_buffer = 2M
write_buffer = 2M

把安装目录用户和组更改为mysql【mysql用户和组为之前创建的】

chown -R mysql:mysql mysql

执行以上命令是在/usr/local目录,然后改目录下有你之前创建的mysql安装目录。如下:

把数据库数据目录用户和组更改为mysql ( 数据库数据目录:/data/mysql/data),方法同上! cd /data/mysql chown -R mysql:mysql data

初始化mysql

cd /usr/local/mysql/bin # 进入bin执行文件目录
./mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data # 执行初始化命令

注:网上网友说到这一步很容易出问题,在初始化的时候一定要加上面的参数,而且在执行这一步操作前/data/mysql/data 这个目录必须是空的;在这里指定的basedir 和 datadir 目录必须要和/etc/my.cnf 配置的目录一直才行。如下:

初始化,没报错说明成功了:

拷贝可执行配置文件

cd support-files # 此命令在/usr/local/mysql目录下执行
cp mysql.server /etc/init.d/mysqld

启动

service mysqld start

service 命令找的文件就是/etc/init.d/目录下的可执行文件,这也是上一步操作的原因。

测试连接

./mysql -hlocalhost -uroot -p
# 这一步命令执行是在 /usr/local/mysql/bin 目录下,这也是我在写文章时经常强调的。
# 目录不对,这是一些新手用户在参考你的文章时,运行同样的命令,一直报错的重要原因之一。

修改环境变量

在/etc/profile 中新增一行

PATH=$PATH:/usr/local/mysql/bin
export PATH

保存退出,刷新生效:

source /etc/profile

设置开机自启动

systemctl enable mysqld

好了,至此mysql也配置好了。

以后的一篇可能就是nginx结合。

本篇文章全部实际操作,一步步截图,如有转载,请务必注明本站出处。 本文参考: https://blog.csdn.net/sssssscccccc/article/details/80919826 https://blog.csdn.net/zhang_referee/article/details/88212695

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券