CentOS安装MySQL:一步步教你搞定
CentOS 安装 MySQL:一步步教你搞定
MySQL 是一款流行的开源关系型数据库管理系统 (RDBMS),广泛应用于各种 Web 应用程序和服务器环境中。CentOS 作为一款稳定、可靠的企业级 Linux 发行版,是部署 MySQL 的理想选择。本文将详细介绍在 CentOS 上安装和配置 MySQL 的各个步骤,包括不同安装方式、安全性加固、基本管理等,力求让你全面掌握 CentOS 上 MySQL 的部署。
本文主要内容:
-
准备工作
- 系统要求
- 更新系统
- 关闭 SELinux 和防火墙 (可选,建议按需配置)
-
安装 MySQL (三种方式)
- 方式一:使用 YUM 包管理器 (推荐)
- 方式二:使用 MySQL 官方 YUM 仓库
- 方式三:从源码编译安装 (较复杂,适合高级用户)
-
启动和配置 MySQL
- 启动 MySQL 服务
- 设置开机自启动
- 运行安全配置脚本 (mysql_secure_installation)
-
MySQL 基本管理
- 连接到 MySQL 服务器
- 创建数据库和用户
- 授权用户访问数据库
- 导入和导出数据
- 查看 MySQL 状态和日志
-
MySQL 安全性加固 (进阶)
- 修改 root 用户密码
- 删除匿名用户
- 禁用远程 root 登录
- 限制特定 IP 地址访问
- 配置 SSL/TLS 加密连接
-
常见问题及解决方案
- 无法启动 MySQL 服务
- 忘记 root 密码
- 远程连接失败
- 性能调优
-
总结
1. 准备工作
在开始安装 MySQL 之前,我们需要做一些准备工作,确保系统满足要求并处于最佳状态。
1.1 系统要求
- CentOS 版本: 本文以 CentOS 7 和 CentOS 8 为例,其他版本可能略有差异。
- 硬件要求: 建议至少 1GB 内存和 10GB 可用磁盘空间,具体取决于你的数据库规模。
- 网络连接: 确保服务器可以访问互联网,以便下载软件包。
1.2 更新系统
在安装任何新软件之前,强烈建议更新系统到最新状态,以获取最新的安全补丁和软件包。
bash
sudo yum update -y
1.3 关闭 SELinux 和防火墙 (可选)
SELinux (Security-Enhanced Linux) 和防火墙是 CentOS 的安全机制,但在某些情况下可能会干扰 MySQL 的安装和运行。如果你不熟悉 SELinux 和防火墙的配置,可以暂时关闭它们 (生产环境中建议按需配置):
-
关闭 SELinux:
bash
sudo setenforce 0 # 临时关闭
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config # 永久关闭 (需重启) -
关闭防火墙:
```bash
CentOS 7
sudo systemctl stop firewalld
sudo systemctl disable firewalldCentOS 8
sudo systemctl stop firewalld
sudo systemctl disable firewalld
或者
bash
sudo firewall-cmd --add-port=3306/tcp --permanent #如果需要开启3306端口,执行这个命令
sudo firewall-cmd --reload #重新加载防火墙规则
```
注意: 在生产环境中,强烈建议配置 SELinux 和防火墙,只允许必要的流量通过,以提高服务器安全性。
2. 安装 MySQL (三种方式)
CentOS 上安装 MySQL 有多种方式,我们将介绍三种最常用的方法:
方式一:使用 YUM 包管理器 (推荐)
这是最简单快捷的方式,CentOS 的默认 YUM 仓库通常包含 MySQL 软件包。
-
安装 MySQL:
```bash
CentOS 7
sudo yum install mysql-server -y
CentOS 8 (MySQL 8.0 默认在 AppStream 仓库中)
sudo yum install @mysql -y
``` -
验证安装:
bash
mysql --version如果安装成功,将显示 MySQL 的版本信息。
方式二:使用 MySQL 官方 YUM 仓库
如果 CentOS 默认仓库中的 MySQL 版本较旧,或者你需要特定版本的 MySQL,可以使用 MySQL 官方提供的 YUM 仓库。
-
下载 MySQL YUM 仓库配置文件:
```bash
CentOS 7
wget https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
sudo rpm -ivh mysql80-community-release-el7-7.noarch.rpmCentOS 8
wget https://dev.mysql.com/get/mysql80-community-release-el8-7.noarch.rpm
sudo rpm -ivh mysql80-community-release-el8-7.noarch.rpm
```你可以根据需要选择其他版本的 MySQL。
-
安装 MySQL:
bash
sudo yum install mysql-community-server -y -
验证安装:
bash
mysql --version
方式三:从源码编译安装 (较复杂,适合高级用户)
如果你需要自定义 MySQL 的编译选项,或者需要安装特定版本的 MySQL 而官方 YUM 仓库没有提供,可以从源码编译安装。
-
安装编译所需的依赖:
bash
sudo yum install -y gcc gcc-c++ make cmake bison ncurses ncurses-devel -
下载 MySQL 源码包:
bash
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33.tar.gz # 替换为你需要的版本
tar -xzf mysql-8.0.33.tar.gz
cd mysql-8.0.33 -
配置编译选项:
bash
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 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci这些选项可以根据你的需求进行调整。
-
编译和安装:
bash
make
sudo make install编译过程可能需要较长时间。
-
创建 MySQL 用户和组:
bash
sudo groupadd mysql
sudo useradd -g mysql mysql -
初始化 MySQL 数据目录:
bash
sudo chown -R mysql:mysql /usr/local/mysql/data
sudo /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data初始化完成后,会生成一个临时 root 密码,请记录下来。
-
创建 MySQL 配置文件:
bash
sudo cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
sudo chmod +x /etc/init.d/mysql编辑
/etc/my.cnf
文件,配置 MySQL 的基本参数。 -
启动 MySQL 服务:
bash
sudo service mysql start之后步骤与 YUM 安装方式类似。
3. 启动和配置 MySQL
安装完成后,我们需要启动 MySQL 服务,并进行一些基本的配置。
3.1 启动 MySQL 服务
```bash
CentOS 7
sudo systemctl start mysql
CentOS 8
sudo systemctl start mysqld
```
3.2 设置开机自启动
```bash
CentOS 7
sudo systemctl enable mysql
CentOS 8
sudo systemctl enable mysqld
```
3.3 运行安全配置脚本 (mysql_secure_installation)
MySQL 提供了一个安全配置脚本,用于设置 root 密码、删除匿名用户、禁用远程 root 登录等,强烈建议运行此脚本。
bash
sudo mysql_secure_installation
脚本会提示你进行以下操作:
- 设置 root 密码: 输入并确认新的 root 密码。
- 删除匿名用户: 建议删除。
- 禁用远程 root 登录: 建议禁用,提高安全性。
- 删除 test 数据库: 建议删除。
- 重新加载权限表: 使配置生效。
4. MySQL 基本管理
现在,我们可以开始使用 MySQL 了。
4.1 连接到 MySQL 服务器
bash
mysql -u root -p
输入之前设置的 root 密码,即可登录到 MySQL 服务器。
4.2 创建数据库和用户
```sql
-- 创建数据库
CREATE DATABASE mydatabase;
-- 创建用户
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';
-- 授权用户访问数据库
GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'localhost';
-- 刷新权限
FLUSH PRIVILEGES;
```
mydatabase
:数据库名称。myuser
:用户名。localhost
:允许连接的主机 (可以是特定 IP 地址或%
表示所有主机)。mypassword
:用户密码。
4.3 导入和导出数据
-
导出数据:
bash
mysqldump -u root -p mydatabase > mydatabase_backup.sql -
导入数据:
bash
mysql -u root -p mydatabase < mydatabase_backup.sql
4.4 查看 MySQL 状态和日志
-
查看 MySQL 状态:
bash
sudo systemctl status mysql # CentOS 7
sudo systemctl status mysqld # CentOS 8 -
查看 MySQL 错误日志:
bash
tail -f /var/log/mysqld.log # CentOS 7
tail -f /var/log/mysql/error.log # CentOS 8 (或根据你的配置)
5. MySQL 安全性加固 (进阶)
为了提高 MySQL 服务器的安全性,建议采取以下措施:
5.1 修改 root 用户密码
sql
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_strong_password';
FLUSH PRIVILEGES;
5.2 删除匿名用户
sql
DELETE FROM mysql.user WHERE User='';
FLUSH PRIVILEGES;
5.3 禁用远程 root 登录
编辑 /etc/my.cnf
文件,添加或修改以下行:
ini
[mysqld]
bind-address = 127.0.0.1
重启 MySQL 服务使配置生效。
5.4 限制特定 IP 地址访问
```sql
-- 允许特定 IP 地址访问
GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'192.168.1.100' IDENTIFIED BY 'mypassword';
-- 拒绝其他 IP 地址访问
REVOKE ALL PRIVILEGES ON mydatabase.* FROM 'myuser'@'%';
FLUSH PRIVILEGES;
```
5.5 配置 SSL/TLS 加密连接
MySQL 支持 SSL/TLS 加密连接,可以提高数据传输的安全性。具体配置步骤较为复杂,请参考 MySQL 官方文档。
6. 常见问题及解决方案
6.1 无法启动 MySQL 服务
- 检查错误日志,查看具体错误信息。
- 检查端口是否被占用。
- 检查配置文件是否正确。
6.2 忘记 root 密码
- 停止 MySQL 服务。
-
以跳过权限检查的方式启动 MySQL:
CentOS 7:sudo mysqld_safe --skip-grant-tables &
CentOS8: 首先创建一个文件比如/tmp/mysql_init
并在其中写入:sql
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';然后运行:
bash
sudo mysqld --init-file=/tmp/mysql_init &
3. 连接到 MySQL,修改 root 密码。
4. 重新启动 MySQL 服务。
6.3 远程连接失败
- 检查防火墙是否允许 3306 端口的流量。
- 检查 MySQL 是否绑定到正确的 IP 地址 (bind-address)。
- 检查用户是否有远程访问权限。
6.4 性能调优
- 调整 MySQL 配置文件中的参数 (如
innodb_buffer_pool_size
)。 - 优化查询语句。
- 使用索引。
7. 总结
本文详细介绍了在 CentOS 上安装和配置 MySQL 的各个步骤,包括不同安装方式、安全性加固、基本管理等。希望通过本文,你能够成功在 CentOS 上部署和管理 MySQL 数据库,为你的应用程序提供稳定可靠的数据存储服务。记住,安全性和性能优化是数据库管理的重要方面,需要持续关注和改进。
希望这篇文章对你有帮助!如果有任何问题,请随时提问。