centos7如何编译安装mysql

发布时间:2021-12-28 10:34:35 作者:小新
来源:亿速云 阅读:356
# CentOS7如何编译安装MySQL

## 前言

在Linux系统中安装MySQL数据库有多种方式,其中编译安装是最灵活但也最复杂的一种方式。通过编译安装,我们可以获得以下优势:

1. 可以自定义MySQL的功能模块
2. 能够选择最新的MySQL版本
3. 可以针对特定硬件进行优化
4. 完全控制安装路径和配置参数

本文将详细介绍在CentOS 7系统上从源代码编译安装MySQL 8.0的全过程,包括环境准备、依赖安装、编译配置、安装部署以及初始化配置等步骤。

## 一、环境准备

### 1.1 系统要求

- CentOS 7.x 操作系统(建议使用最小化安装)
- 至少2GB内存(编译过程内存消耗较大)
- 至少10GB可用磁盘空间
- root用户权限或具有sudo权限的普通用户

### 1.2 下载MySQL源代码

访问MySQL官方下载页面(https://dev.mysql.com/downloads/mysql/),选择"Source Code"版本:

```bash
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33.tar.gz

验证下载文件的完整性:

md5sum mysql-8.0.33.tar.gz
# 对比官方提供的MD5值

1.3 安装基础开发工具

yum groupinstall "Development Tools" -y
yum install cmake ncurses-devel openssl-devel bison -y

二、编译安装MySQL

2.1 解压源代码

tar -zxvf mysql-8.0.33.tar.gz
cd mysql-8.0.33

2.2 创建MySQL用户和组

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

2.3 创建安装目录和数据目录

mkdir -p /usr/local/mysql
mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql

2.4 配置编译选项

执行cmake进行配置:

cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql \
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=boost

常见参数说明:

2.5 编译MySQL

make -j $(nproc)

-j参数指定并行编译的线程数,$(nproc)会自动获取CPU核心数。

2.6 安装MySQL

make install

三、配置MySQL

3.1 设置环境变量

echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
source /etc/profile

3.2 初始化MySQL

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

初始化完成后会显示root用户的临时密码,请务必记录下来:

[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Abc123!@#

3.3 配置my.cnf文件

创建/etc/my.cnf配置文件:

[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
port=3306
user=mysql
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid

character-set-server=utf8mb4
collation-server=utf8mb4_general_ci

[client]
socket=/tmp/mysql.sock
default-character-set=utf8mb4

3.4 配置systemd服务

创建服务文件/etc/systemd/system/mysql.service:

[Unit]
Description=MySQL Server
After=network.target

[Service]
User=mysql
Group=mysql
Type=forking
PIDFile=/data/mysql/mysql.pid
ExecStart=/usr/local/mysql/support-files/mysql.server start
ExecStop=/usr/local/mysql/support-files/mysql.server stop
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

重新加载systemd配置:

systemctl daemon-reload

3.5 启动MySQL服务

systemctl start mysql
systemctl enable mysql

四、安全配置与基本使用

4.1 修改root密码

使用初始化时获得的临时密码登录:

mysql -uroot -p

然后执行:

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

4.2 创建新用户和数据库

CREATE DATABASE testdb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'testuser'@'%' IDENTIFIED BY 'Test123!';
GRANT ALL PRIVILEGES ON testdb.* TO 'testuser'@'%';
FLUSH PRIVILEGES;

4.3 配置远程访问(可选)

如果需要远程访问MySQL,需要修改用户权限并配置防火墙:

UPDATE mysql.user SET host='%' WHERE user='root';
FLUSH PRIVILEGES;

防火墙配置:

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

五、常见问题解决

5.1 编译错误处理

  1. 缺少依赖包:根据错误提示安装相应的开发包
  2. 内存不足:增加swap空间或减少make的并行线程数
  3. CMake版本过低:升级CMake到最新版本

5.2 启动失败排查

  1. 检查错误日志:cat /data/mysql/mysql.err
  2. 检查权限:确保mysql用户对数据目录有读写权限
  3. 检查端口冲突:netstat -tulnp | grep 3306

5.3 性能优化建议

  1. 根据服务器内存调整innodb_buffer_pool_size
  2. 配置适当的字符集和排序规则
  3. 定期维护和优化表

六、总结

通过本文的详细步骤,我们成功在CentOS 7系统上完成了MySQL 8.0的编译安装。相比直接使用yum安装,编译安装虽然过程复杂,但可以获得更好的性能和更灵活的配置选项。建议在生产环境中使用前,充分测试MySQL的稳定性和性能。

附录

A. 常用MySQL命令

B. 参考资源

  1. MySQL官方文档:https://dev.mysql.com/doc/
  2. MySQL编译选项参考:https://dev.mysql.com/doc/refman/8.0/en/source-configuration-options.html
  3. CentOS官方文档:https://www.centos.org/docs/

C. 版本说明

”`

推荐阅读:
  1. centos7下源码编译安装mysql 5.7.21的简单教程
  2. centos7 编译安装 mysql-5.7.25

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mysql centos7

上一篇:mysql.ini在哪里

下一篇:mysql导入txt乱码的解决方法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》