CentOS 安装 MySQL 5.6
一、前言
在 CentOS 上安装 MySQL 5.6 是一个常见的任务,尤其对于需要特定版本进行兼容性测试或老项目维护的情况,本文将详细介绍如何在 CentOS 系统上安装和配置 MySQL 5.6,包括安装前准备、安装步骤、配置优化以及常见问题解决。

二、安装前准备
1. 系统信息检查与更新
确保你的 CentOS 系统是最新的,并且具有必要的软件包,执行以下命令来更新系统:
- sudo yum update y
2. 检查现有 MySQL 版本
如果系统中已经安装了其他版本的 MySQL,建议先卸载以避免冲突:
- rpm qa | grep mysql
- sudo yum remove mysql* y
3. 安装依赖包
MySQL 5.6 需要一些基础库和工具,执行以下命令来安装这些依赖:

- sudo yum install y libaio libaiodevel perlTimeHiRes curl curldevel zlibdevel openssldevel perl cpio expatdevel gettextdevel perlExtUtilsMakeMaker perlDBDMySQL
三、下载并安装 MySQL 5.6
1. 创建用户和目录
MySQL 需要一个专用用户来运行服务,并且需要一个数据目录来存储数据库文件:
- sudo groupadd mysql
- sudo useradd r g mysql s /bin/false mysql
- sudo mkdir /usr/local/mysql
- sudo mkdir /usr/local/mysql/data
- sudo chown R mysql:mysql /usr/local/mysql
2. 下载 MySQL 5.6
从 MySQL 官方网站下载所需版本的源码包:
- cd /tmp
- wget https://dev.mysql.com/get/Downloads/MySQL5.6/MySQL5.6.49.tar.gz
3. 解压源码包
- tar zxvf MySQL5.6.49.tar.gz
- cd MySQL5.6.49
4. 编译和安装 MySQL

执行以下命令进行编译和安装:
- cmake \
- DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
- DMYSQL_DATADIR=/usr/local/mysql/data \
- DSYSCONFDIR=/etc \
- DWITH_MYISAM_STORAGE_ENGINE=1 \
- DWITH_INNOBASE_STORAGE_ENGINE=1 \
- DWITH_MEMORY_STORAGE_ENGINE=1 \
- DWITH_READLINE=1 \
- DWITH_PARTITION_STOREGE=1 \
- DEXTRA_CHARSETS=all \
- DDEFAULT_CHARSET=utf8 \
- DDEFAULT_COLLATION=utf8_general_ci \
- DMYSQL_USER=mysql \
- DWITH_DEBUG=0 \
- DWITH_SSL=system
- make && make install
5. 初始化数据库
使用以下命令初始化 MySQL 数据库:
- cd /usr/local/mysql
- sudo scripts/mysql_install_db user=mysql basedir=/usr/local/mysql datadir=/usr/local/mysql/data
6. 设置权限和开机自启动
- sudo chown R mysql:mysql /usr/local/mysql
- sudo chown R mysql:mysql /usr/local/mysql/data
- sudo cp supportfiles/mysql.server /etc/init.d/mysqld
- sudo chmod +x /etc/init.d/mysqld
- sudo chkconfig mysqld on
四、配置和优化 MySQL
1. 复制配置文件模板
将默认配置文件复制到/etc
目录下:
- sudo cp supportfiles/mydefault.cnf /etc/my.cnf
2. 编辑配置文件
根据需求编辑/etc/my.cnf
,例如设置字符集、端口等:
- [client]
- port = 3306
- defaultcharacterset=utf8
- [mysqld]
- port = 3306
- charactersetserver = utf8
- collationserver = utf8_general_ci
- datadir = /usr/local/mysql/data
- socket = /usr/local/mysql/mysql.sock
- user = mysql
- 根据服务器硬件资源调整以下参数
- innodb_buffer_pool_size = 1G
- innodb_log_file_size = 256M
- max_connections = 1000
3. 启动 MySQL 服务
- sudo service mysqld start
4. 设置 root 用户密码
首次登录时需要设置 root 用户的密码:
- sudo /usr/local/mysql/bin/mysqladmin u root password 'new_password'
5. 远程访问配置(可选)
编辑/etc/my.cnf
,注释掉绑定地址限制行,或者将其设置为0.0.0.0
:
- [mysqld]
- ...
- bindaddress = 127.0.0.1 # 取消注释并修改为0.0.0.0以允许远程访问
- ...
重启 MySQL 服务使配置生效:
- sudo service mysqld restart
注意:为了安全性,请确保防火墙规则允许 MySQL 端口(默认是3306)的通信:
- sudo firewallcmd permanent addport=3306/tcp
- sudo firewallcmd reload
五、常见问答(FAQs)
Q1: 如何更改 MySQL 默认编码?
A1: 在/etc/my.cnf
中添加或修改以下内容:
- [client]
- defaultcharacterset=utf8
- [mysql]
- defaultcharacterset=utf8
- [mysqld]
- charactersetserver=utf8
- collationserver=utf8_general_ci
然后重启 MySQL:
- sudo service mysqld restart
Q2: 忘记 root 密码怎么办?
A2: 可以通过跳过授权表的方式重置密码,停止 MySQL 服务,然后在启动时添加skipgranttables
参数:
- sudo service mysqld stop
- sudo /usr/local/mysql/bin/mysqld_safe skipgranttables &
进入 MySQL:
- sudo /usr/local/mysql/bin/mysql u root
选择mysql
数据库并更新root
用户的密码:
- FLUSH PRIVILEGES;
- ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
- \q
停止 MySQL 并重新启动正常模式:
- sudo service mysqld stop
- sudo service mysqld start