柏虎资源网

专注编程学习,Python、Java、C++ 教程、案例及资源

深入探究:Linux 系统下 MySQL 源码安装全攻略

在互联网软件开发领域,MySQL 作为一款广泛应用的开源关系型数据库管理系统,其重要性不言而喻。对于 Linux 系统上的开发者而言,通过源码方式安装 MySQL 数据库,能够获得更高的定制性和性能优化空间。今天,就来为大家详细介绍如何在 Linux 系统上通过 MySQL 源码完成安装,助力各位开发者更好地掌控数据库环境。

安装前的周密准备

(一)系统环境检查

在开始安装 MySQL 源码之前,务必确保您的 Linux 系统满足相应的条件。不同版本的 MySQL 对系统内核、glibc 等基础组件有特定要求,需提前查阅 MySQL 官方文档进行确认。例如,MySQL 8.0 可能要求 Linux 内核版本在 3.10 及以上。同时,检查系统资源,如内存、磁盘空间等,以保障安装和后续运行的顺畅。一般而言,建议至少预留 1GB 以上的空闲内存和 5GB 以上的磁盘空间用于 MySQL 的安装和数据存储。

(二)卸载冲突组件

一些 Linux 发行版,如 CentOS,默认会安装 mariadb 组件。由于 mariadb 与 MySQL 在功能和文件结构上有相似之处,会对 MySQL 安装造成冲突。通过命令rpm -qa | grep mariadb可以检查系统中是否安装了 mariadb。若存在,使用rpm -e --nodeps mariadb-libs命令将其卸载。这里的--nodeps参数表示仅卸载 mariadb-libs,而不处理其依赖关系,避免因依赖问题导致其他软件异常。

(三)安装依赖包

源码安装 MySQL 需要一系列依赖包的支持,这些依赖包提供了编译、链接等必要工具和库。常见的依赖包包括 cmake、make、gcc、gcc-c++、openssl、openssl-devel、ncurses、ncurses-devel、bison、bison-devel 等。以 CentOS 系统为例,可使用yum install -y cmake make gcc gcc - c++ openssl openssl - devel ncurses ncurses - devel bison bison - devel命令一次性安装这些依赖包。其中,-y参数表示在安装过程中自动确认所有提示,无需手动干预。

(四)下载 MySQL 源码包

前往 MySQL 官方网站的下载页面(
https://dev.mysql.com/downloads/mysql/ ),在 “Select Version:” 处选择您期望安装的 MySQL 版本,如 5.7、8.0 等。由于我们要进行源码安装,在 “Select Platform:” 处务必选择 “Source Code”。随后,页面会展示适用于不同系统的安装包选项,对于 Linux 系统,通常选择 “Generic Linux (Architecture Independent), Compressed TAR Archive”。点击其右侧的 “Download” 按钮获取下载链接,也可直接使用类似wget
http://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.34.tar.gz的命令进行下载(请根据实际版本号替换链接中的版本部分)。若系统中未安装wget工具,可先使用yum -y install wget命令进行安装。

安装过程的步步为营

(一)创建用户组和系统用户

出于安全和权限管理的考虑,需要创建专门用于运行 MySQL 服务的用户组和系统用户。使用以下命令创建名为 mysql 的用户组和属于该用户组的系统用户 mysql:

groupadd mysql
useradd -r -g mysql -s /bin/false mysql

其中,-r参数表示创建系统用户,-g参数指定用户所属的用户组为 mysql,-s /bin/false表示该用户不能用于登录系统,进一步增强系统安全性。

(二)解压源码压缩包

将下载好的 MySQL 源码包上传至 Linux 系统,例如放置在/my_package/source目录下(可提前使用mkdir -p /my_package/source命令创建该目录)。使用tar -zxvf mysql - 8.0.34.tar.gz命令解压源码包(同样需根据实际版本号调整命令)。解压完成后,进入解压后的目录,一般该目录中会包含 README(软件包介绍说明)和 INSTALL(安装说明)文件,虽然我们可以不依赖这些文件进行安装,但它们提供了很多有价值的信息,有兴趣的开发者可以阅读。

(三)安装参数配置、编译和安装

进入解压后的 MySQL 源码目录,利用 cmake 命令进行安装参数配置。以下是一个常用的配置示例:

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/usr/local/mysql/etc -DWITH_INNOBASE_STORAGE_ENGINE=ON -DWITH_MYISAM_STORAGE_ENGINE=ON -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DENABLED_LOCAL_INFILE=ON -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock -DWITH_INNODB_MEMCACHED=ON -DWITH_BOOST=boost/boost_1_59_0

各参数含义如下:

  • -DCMAKE_INSTALL_PREFIX:指定 MySQL 的安装路径,这里设置为/usr/local/mysql。
  • -DMYSQL_DATADIR:数据目录,即 MySQL 的数据存放路径,设为/usr/local/mysql/data。
  • -DSYSCONFDIR:配置文件所在路径,设为/usr/local/mysql/etc。
  • -DWITH_INNOBASE_STORAGE_ENGINE和-DWITH_MYISAM_STORAGE_ENGINE:启用 InnoDB 和 MyISAM 存储引擎,这两种引擎在 MySQL 中应用广泛,InnoDB 支持事务、行级锁等高级特性,MyISAM 则在一些读密集型场景表现出色。
  • -DDEFAULT_CHARSET和-DDEFAULT_COLLATION:指定字符集为 utf8,排序规则为 utf8_general_ci,以确保对多语言的良好支持和正确的字符排序。
  • -DENABLED_LOCAL_INFILE:启用LOAD DATA LOCAL INFILE语句,方便从本地文件导入数据。
  • -DMYSQL_TCP_PORT:指定 MySQL 服务的端口号为 3306,这是 MySQL 的默认端口,若该端口已被占用,可根据实际情况修改。
  • -DMYSQL_UNIX_ADDR:指定 Unix 套接字文件的路径,用于本地连接。
  • -DWITH_INNODB_MEMCACHED:启用 InnoDB 存储引擎对 Memcached 的支持,可用于缓存数据,提升性能。
  • -DWITH_BOOST:指定 boost 库,MySQL 在编译过程中可能会依赖一些 boost 库的功能。

配置完成后,使用make -j命令进行编译,其中-j参数可指定线程数,例如-j4表示使用 4 个线程进行编译,能显著缩短编译时间。编译完成后,执行make install命令完成安装过程。这一步骤可能需要一些时间,具体取决于系统性能和硬件配置。

(四)MySQL 数据目录初始化

安装完成后,需要对 MySQL 的数据目录进行初始化操作。首先,切换到 MySQL 的安装目录/usr/local/mysql,使用以下命令进行初始化:

chown -R mysql.
chgrp -R mysql.
scripts/mysql_install_db --user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
chown -R root.
chown -R mysql data

上述命令先将/usr/local/mysql目录的所有者和所属组改为 mysql,然后使用mysql_install_db脚本进行数据目录初始化,指定--user为 mysql,--basedir为安装目录,--datadir为数据目录。初始化完成后,再将/usr/local/mysql目录的所有者改为 root,/usr/local/mysql/data目录的所有者改为 mysql。此时,在/usr/local/mysql目录中会自动生成一个配置文件my.cnf。若系统的其他位置存在my.cnf文件,可能会在启动 MySQL 时产生冲突,建议将其他位置的my.cnf文件删除,例如使用rm -f /etc/my.cnf命令(请谨慎操作,确保备份好重要数据)。

(五)启动和关闭 MySQL 服务

手动启动 MySQL 服务可使用以下命令:

cd /usr/local/mysql
bin/mysqld_safe --user=mysql &

启动完成后,可使用netstat -tlunp或ps aux | grep mysql命令检测 MySQL 是否启动成功。若 MySQL 未能成功启动,可查看错误日志
/usr/local/mysql/data/localhost.localdomain.err(日志文件名可能因系统配置略有不同),根据错误信息排查问题。常见的问题包括端口被占用、依赖包缺失、配置参数错误等。例如,若提示端口 3306 被占用,可使用lsof -i:3306命令查看占用该端口的进程,并根据情况进行处理,如终止占用进程或修改 MySQL 的端口配置。

关闭 MySQL 服务可使用bin/mysqladmin -u root -p shutdown命令,输入 root 用户密码后即可关闭服务。若在启动和关闭过程中遇到权限问题,需检查相关目录和文件的权限设置,确保 mysql 用户对相关文件和目录具有正确的读写和执行权限。

配置环境变量与后续优化

(一)配置环境变量

为了在系统的任意位置都能方便地使用 MySQL 命令,需要配置环境变量。编辑~/.bash_profile文件,添加以下两行内容:

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

保存并退出文件后,执行source ~/.bash_profile命令使配置生效。这样,在终端中就可以直接使用mysql、mysqladmin等 MySQL 相关命令,而无需指定命令的完整路径。

(二)设置开机自启

为了让 MySQL 服务在系统开机时自动启动,可将/usr/local/mysql/support - files/mysql.server文件复制到/etc/init.d/mysqld,然后使用chkconfig mysqld on命令将其设置为开机自启。对于使用 systemd 的系统,也可使用systemctl enable mysqld命令达到相同效果。这样,每次系统启动时,MySQL 服务都会自动运行,确保数据库随时可用。

(三)安全设置与优化

修改 root 密码:首次启动 MySQL 后,root 用户的密码是随机生成的,记录在初始化日志中。使用生成的密码登录 MySQL 后,应立即修改 root 密码以增强安全性。例如,使用以下命令修改密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPassword';

将YourNewPassword替换为您设置的强密码,强密码应包含字母、数字、特殊字符,且长度足够。

远程访问设置:默认情况下,MySQL 只允许本地访问。若需要从远程客户端连接 MySQL,需进行相应设置。登录 MySQL 后,执行以下命令:

use mysql;
update user set user.Host='%' where user.User='root';
flush privileges;

上述命令将允许 root 用户从任意主机访问 MySQL。在实际应用中,出于安全考虑,建议只允许特定的 IP 地址或 IP 段进行远程访问,例如将%替换为具体的 IP 地址或网段,如192.168.1.%表示允许 192.168.1.x 网段的主机访问。

优化配置文件:根据实际应用场景和系统性能,对my.cnf配置文件进行优化。例如,可调整max_connections参数以控制允许的最大连接数,根据服务器内存情况设置innodb_buffer_pool_size参数来优化 InnoDB 存储引擎的缓冲池大小等。对于高并发读写的应用场景,适当增大innodb_log_file_size参数可减少日志切换的频率,提高性能。但需注意,参数的调整需谨慎,应根据实际测试结果进行优化,避免因参数设置不当导致系统性能下降或不稳定。

通过以上详细的步骤,您已经成功地在 Linux 系统上通过源码安装了 MySQL 数据库,并进行了基本的配置和优化。在实际应用中,还可根据具体的业务需求和系统环境,进一步深入优化 MySQL 的性能和安全性,为互联网软件开发项目提供稳定、高效的数据库支持。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言