在CentOS系统上通过源码安装MySQL,通常需要以下几个步骤:
1、基础准备:

创建MySQL用户和组。
安装必要的依赖包,如gcc、make、cmake等。
下载MySQL的源码包。
2、编译安装:
解压源码包并进入解压后的目录。
使用cmake进行配置,指定安装路径、数据目录等参数。

执行make命令进行编译,然后执行make install进行安装。
3、配置:
修改相关目录的权限,确保MySQL用户有正确的读写权限。
编辑my.cnf配置文件,设置数据库的相关参数。
初始化数据库,生成初始的系统数据库和用户。
4、启动服务:

将MySQL设置为开机自启动。
启动MySQL服务,并检查其运行状态。
以下是详细的步骤和代码示例:
基础准备
1、创建MySQL用户和组:
- groupadd r g 27 mysql
- useradd s /sbin/nologin r u 27 g 27 d /data/mysql mysql
2、安装必要依赖包:
- yum y install wget gcc gccc++ cmake ncursesdevel zlibdevel bzip2 perlDataDumper boost boostdoc boostdevel epelrelease
3、下载MySQL源码包:
- cd /opt
- wget https://dev.mysql.com/get/Downloads/MySQL5.7/mysql5.7.33el7x86_64.tar.gz
- wget https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL5.7/mysqlboost5.7.33.tar.gz
编译安装
1、解压源码包:
- tar zxvf mysql5.7.33el7x86_64.tar.gz
- mv mysqlboost5.7.33 mysql5.7.33el7x86_64/boost
2、配置:
- cd mysql5.7.33el7x86_64
- cmake . DDOWNLOAD_BOOST=1
- DCMAKE_INSTALL_PREFIX=/usr/local/mysql
- DMYSQL_DATADIR=/data/mysql
- DSYSCONFDIR=/etc
- DWITH_BOOST=boost
3、编译和安装:
- make j4 && make install
配置
1、修改目录权限:
- chown R root:mysql /usr/local/mysql/
- chown R mysql:mysql /data/mysql
2、编辑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
- pidfile = /data/mysql/data/mysql.pid
- log_error = /data/mysql/data/mysqlerror.log
- slow_query_log = 1
- long_query_time = 1
- slow_query_log_file = /data/mysql/data/mysqlslow.log
- skipexternallocking
- 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
- max_connections = 500
- max_connect_errors = 100
- open_files_limit = 65535
- log_bin=mysqlbin
- binlog_format=mixed
- server_id = 232
- expire_logs_days = 10
- earlypluginload = ""
- 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
3、初始化数据库:
- cd /usr/local/mysql/bin
- ./mysqld initializeinsecure user=mysql basedir=/usr/local/mysql datadir=/data/mysql/data
启动服务
1、设置开机自启动:
- cp /usr/local/mysql/supportfiles/mysql.server /etc/init.d/mysqld
- chmod +x /etc/init.d/mysqld
- chkconfig add mysqld
- chkconfig mysqld on
- service mysqld start
2、测试连接:
- /usr/local/mysql/bin/mysql uroot p
FAQs
问题1:为什么需要创建MySQL用户和组?
答:创建MySQL用户和组是为了保证数据库的安全,通过为MySQL分配独立的用户和组,可以限制对数据库文件的访问权限,只有MySQL用户和组的成员才能访问这些文件,这有助于防止未经授权的访问和潜在的安全威胁。
问题2:为什么需要指定数据目录和安装路径?
答:指定数据目录是为了让MySQL知道在哪里存储数据库文件和日志文件,而指定安装路径则是为了让MySQL知道它的可执行文件、库文件和其他资源文件应该安装在哪里,这些路径可以根据系统的实际情况和个人偏好来选择,但必须确保它们存在且有足够的空间来存储所需的文件。