之前介绍过通过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= 3306socket= /tmp/mysql.sock
[mysqld]
port= 3306socket= /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= 1long_query_time= 1slow_query_log_file= /data/mysql/mysql-slow.log
skip-external-locking
key_buffer_size=32M
max_allowed_packet=1024M
table_open_cache= 128sort_buffer_size=768K
net_buffer_length=8K
read_buffer_size=768K
read_rnd_buffer_size=512K
myisam_sort_buffer_size=8M
thread_cache_size= 16query_cache_size=16M
tmp_table_size=32M
performance_schema_max_table_instances= 1000explicit_defaults_for_timestamp= true#skip-networking
max_connections= 500max_connect_errors= 100open_files_limit= 65535log_bin=mysql-bin
binlog_format=mixed
server_id= 232expire_logs_days= 10early-plugin-load = ""default_storage_engine=InnoDB
innodb_file_per_table= 1innodb_buffer_pool_size=128M
innodb_log_file_size=32M
innodb_log_buffer_size=8M
innodb_flush_log_at_trx_commit= 1innodb_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