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