在CentOS7上安装MySQL8.0,虽然可以通过YUM源或者RPM包进行快速安装,但源码安装提供了更高的灵活性和可定制性
本文将详细介绍如何在CentOS7上通过源码安装MySQL8.0,确保每一步都清晰明了,让初学者也能轻松上手
一、准备工作 1. 检查并卸载旧版本MySQL或MariaDB 在安装MySQL8.0之前,需要确保系统中没有旧版本的MySQL或MariaDB
这些旧版本的数据库软件可能会与MySQL8.0产生冲突
可以通过以下命令检查并卸载它们: bash rpm -qa | grep mysql rpm -qa | grep mariadb 如果发现有相关软件包,可以使用`rpm -e --nodeps`命令进行卸载
例如: bash rpm -e --nodeps mariadb-libs rpm -e --nodeps mysql-libs 2. 安装必要的依赖包 MySQL的源码编译需要一些必要的依赖包,包括开发工具、库文件等
可以通过YUM包管理器进行安装: bash yum groupinstall Development Tools -y yum install cmake ncurses-devel bison -y 这些依赖包将确保源码编译过程中所需的所有工具和库文件都已准备就绪
二、下载MySQL源码 1.访问MySQL官方网站 前往【MySQL官方网站】(https://dev.mysql.com/downloads/mysql/),在“Downloads”页面中选择“MySQL Community Server”
2. 选择操作系统和版本 由于CentOS是基于Red Hat的,所以在“Operating System”选项中选择“Red Hat Enterprise Linux/Oracle Linux/CentOS”,在“OS Version”选项中选择“Linux - Generic(glibc2.12+)(x86,64-bit)”,然后选择“RPM Bundle”或“Source Code”进行下载
3. 下载源码包 点击“Download”按钮后,会跳转到登录页面
如果没有MySQL账户,可以选择“No thanks, just start my download.”进行下载
下载完成后,会得到一个`.tar.gz`格式的源码压缩包
三、编译和安装MySQL 1. 解压源码包 将下载的源码压缩包上传到CentOS7系统中,并解压到指定目录
例如,可以将其解压到`/usr/local/src`目录下: bash cd /usr/local/src tar -zxvf mysql-8.0.xx.tar.gz 将`mysql-8.0.xx`替换为实际的源码包名称
2. 创建编译目录 在解压后的源码目录中,创建一个用于编译的目录,并进入该目录: bash cd mysql-8.0.xx mkdir build cd build 3. 运行CMake进行配置 在编译目录中,运行CMake进行配置
CMake是一个跨平台的自动化建构系统,它用配置文件来控制软件编译过程
对于MySQL,需要指定一些编译选项,如安装目录、数据目录等
以下是一个示例命令: bash cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_BOOST=boost -DWITH_SSL=system 这里,`-DCMAKE_INSTALL_PREFIX`指定了MySQL的安装目录,`-DMYSQL_DATADIR`指定了数据文件的存放目录,`-DSYSCONFDIR`指定了配置文件的存放目录,`-DWITH_BOOST`指定了Boost库的路径(如果系统中已经安装了Boost库),`-DWITH_SSL=system`表示使用系统自带的SSL库
注意:如果系统中没有安装Boost库,可以从MySQL源码包中的`boost`目录中提取出来进行编译安装,或者从其他途径获取Boost库
4.编译MySQL源码 配置完成后,开始编译MySQL源码
这个过程可能需要一些时间,具体取决于系统的性能和源码的大小: bash make 5. 安装MySQL 编译完成后,使用`make install`命令将MySQL安装到指定的目录中: bash make install 四、配置MySQL 1. 创建MySQL组和用户 为了方便管理MySQL服务,需要创建一个专门的组和用户: bash groupadd mysql useradd -r -g mysql -s /bin/false mysql 2. 设置目录权限 将MySQL的安装目录和数据目录的所有权设置为mysql用户和组: bash chown -R mysql:mysql /usr/local/mysql 同时,还需要确保这些目录具有正确的权限,以便MySQL服务能够正常访问: bash chmod -R755 /usr/local/mysql chmod700 /usr/local/mysql/data 3.初始化数据库 在MySQL安装完成后,需要初始化数据库
这个过程会创建一些系统表和其他必要的文件: bash cd /usr/local/mysql/bin ./mysqld --initialize --user=mysql 初始化过程中,会生成一个临时密码,可以在`/var/log/mysqld.log`文件中找到
请务必记录下这个密码,因为稍后需要使用它登录MySQL
4. 配置MySQL服务 为了方便管理MySQL服务,可以将其添加到systemd服务中
首先,复制MySQL的支持文件到`/etc/init.d/`目录下(如果使用的是systemd,则这一步可以省略): bash cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql 然后,使用`systemctl`命令将MySQL服务添加到systemd中,并设置开机自启: bash chkconfig --add mysql systemctl enable mysql 注意:由于CentOS7默认使用systemd作为服务管理器,所以上述命令可能需要根据实际情况进行调整
如果系统中没有`chkconfig`命令,可以直接使用`systemctl`命令进行管理
另外,还可以创建一个systemd服务单元文件来管理MySQL服务
以下是一个示例文件`/etc/systemd/system/mysql.service`的内容: ini 【Unit】 Description=MySQL Server After=network.target After=syslog.target 【Service】 User=mysql Group=mysql ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf PIDFile=/usr/local/mysql/data/mysqld.pid LimitNOFILE =5000 【Install】 WantedBy=multi-user.target 创建完成后,使用`systemctl daemon-reload`命令重新加载systemd配置,然后使用`systemctl start mysql`命令启动MySQL服务
5. 配置MySQL客户端 为了方便使用MySQL客户端工具,可以将MySQL的bin目录添加到系统的PATH环境变量中
编辑`/etc/profile`文件,添加以下行: bash export PATH=$PATH:/usr/local/mysql/bin 然后,使用`source /etc/profile`命令使更改生效
五、登录MySQL并修改密码 1. 登录MySQL 使用初始化时生成的临时密码登录MySQL: bash mysql -uroot -p 然后输入临时密码进行登录
2. 修改root用户密码 登录成功后,需要立即修改root用户的密码
由于MySQL8.0默认安装了密码安全检查插件(validate_password),所以新密码必须符合一定的复杂度要求(包含大小写字母、数字和特殊符号,且长度不少于8位)
可以使用以下命令进行修改: sql ALTER USER root@localhost IDENTIFIED BY NewPassword123!; 将`NewPassword123!`替换为实际的新密码
如果希望设置一个简单的密码,可以先修改validate_password策略: sql SET GLOBAL validate_password.policy=0; SET GLOBAL validate_password.length=1; 然后再修改密码
但请注意,这样做会降低密码的安全性
3. 配置MySQL安全策略(可选) 为了提高MySQL的安全性,可以使用`mysql_secure_install