centos7源码安装mysql数据库

之前介绍过通过yum方式安装mysql数据库,这种方法虽然简单,但安装时间较长,并有下载失败的风险。现在在家闲来无事,试试通过源码方式安装mysql数据库。如果有兴趣也可以对比一下两种方法的不同。我通过两种方法都是安装成功的,都可以试一下。传送门:centos7yum安装mysql数据库

环境:centos7

目标:通过源码安装方式安装mysql5.7数据库,并设置systemcel方式启动

0x001准备工作

首先卸载系统自带的mariadb数据库

rpm -qa|grep mariadb

rpm -e --nodeps mariadb*

添加用户(如果不添加用户,请把后面配置文件和初始化语句里的user相关语句去掉或省略)

useradd –s /sbin/nologin mysql

0x002下载、编译安装

1、安装依赖包和需要的工具

yum install -y  vim wget gcc gcc-c++ cmake ncurses ncurses-devel bison

2、下载相应源码包

wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.25.tar.gz

3、解压压缩包到/usr/local/mysql

如果没有此路径的需要自己创建一个

mkdir /usr/local/mysql

解压

tar –xvf  mysql-boost-5.7.25.tar.gz -C /usr/local/mysql/

4、切换到解压之后的目录下,编译安装

cd /usr/local/mysql/mysql-5.7.25
cmake -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=boost

make && make install 

5、安装好后的/usr/local/mysql目录结构

 6、编辑vim /etc/my.cnf(如果没有则创建)

vim /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

7、创建数据库数据目录并赋权

注:/data/mysql/data目录下一定要为空才行(需要与配置里的路径一致!)

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

8、初始化mysql

cd /usr/local/mysql/bin
./mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data

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

9、测试是否可运行再进行下一步

启动mysql服务

/usr/local/mysql/support-files/mysql.server start

这里暂时可以通过netstat -ntlp查看端口和服务是否起来了

进入usr/local/mysql/bin目录下

cd usr/local/mysql/bin
./mysql -uroot -p

发现mysql可以使用了

 0x003修改环境变量

修改环境变量的作用是可以在任意目录下打开mysql,而不再需要进入特定目录下打开

vim /etc/profile

新增一行

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

保存并退出

执行以下命令使之生效

source /etc/profile

0x004设置systemctl方式启动mysql服务

在/usr/lib/system/system/目录下创建一个启动文件,以.service结尾

touch /usr/lib/system/system/mysqld.service
vim /usr/lib/system/system/mysqld.service

添加如下内容

[Unit]
Description=mysql
SourcePath=/usr/local/mysql
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/mysql/support-files start
ExecStop=/usr/local/mysql/support-files stop

[Install]
WantedBy=multi-user.target

:wq保存并退出

为文件赋权

chmod -755 /usr/lib/system/system/mysqld.service

重新加载服务的配置文件

systemctl daemon-reload

使用systemctl命令启动服务

systemctl start mysqld.service

查看日志

journalctl –f

好了,到目前为止,我们可以通过systemctl方法启动mysql服务了,并且可以在任意目录打开mysql数据库

进入数据库

mysql –uroot –p

原文地址:https://www.cnblogs.com/maohai-kdg/p/12395463.html