Quantcast
Channel: 小蓝博客
Viewing all articles
Browse latest Browse all 3155

Ubuntu 20配置MySQL时的关键注意事项

$
0
0

在 Ubuntu 20 配置 MySQL 时的关键注意事项

MySQL 是一种广泛使用的开源关系型数据库管理系统,常被用于 Web 开发和其他应用程序的数据存储。对于 Ubuntu 20 用户,正确配置 MySQL 非常重要,既要确保其高效运行,又要保障其安全性。本文将详细说明在 Ubuntu 20 系统中配置 MySQL 时需要特别注意的关键事项。

1. 安装 MySQL

1.1 使用 apt 安装 MySQL

在 Ubuntu 20 中,MySQL 8.0 是默认版本。可以通过以下命令来安装 MySQL 服务器:

sudo apt update
sudo apt install mysql-server -y

解释

  • sudo apt update 用于更新本地的软件包索引,确保你安装的 MySQL 版本是最新的。
  • sudo apt install mysql-server -y 命令安装 MySQL 服务器。

1.2 启动和检查 MySQL 服务

安装完成后,MySQL 服务会自动启动。你可以使用以下命令检查 MySQL 服务的状态:

sudo systemctl status mysql

如果服务未启动,可以手动启动:

sudo systemctl start mysql

并确保 MySQL 在系统启动时自动启动:

sudo systemctl enable mysql

1.3 配置防火墙

如果你的系统启用了防火墙(例如 UFW),你需要允许 MySQL 服务通过防火墙:

sudo ufw allow mysql

这会自动配置防火墙规则,允许默认的 MySQL 端口 3306 进行连接。

2. 安全性配置

MySQL 的默认安装通常没有开启很多安全措施,为了确保 MySQL 安全运行,推荐进行以下配置。

2.1 运行 mysql_secure_installation

MySQL 提供了一个安全配置脚本 mysql_secure_installation,可以帮助你完成一系列安全设置,包括:

  • 设置 root 密码
  • 删除匿名用户
  • 禁止 root 用户远程登录
  • 删除测试数据库

运行以下命令启动安全配置向导:

sudo mysql_secure_installation

根据提示进行设置,推荐设置一个强密码,并删除测试数据库和匿名用户。这个脚本将极大提升 MySQL 的安全性。

2.2 修改 bind-address

默认情况下,MySQL 绑定到所有的网络接口。如果你只需要从本地访问数据库,可以通过修改 MySQL 配置文件来限制只允许本地访问。

编辑 /etc/mysql/mysql.conf.d/mysqld.cnf 文件:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

找到并修改 bind-address 参数:

bind-address = 127.0.0.1

这将使 MySQL 仅允许从本地连接。如果需要远程访问,则可以将其设置为服务器的 IP 地址,或者使用 0.0.0.0 绑定到所有接口。

2.3 配置 root 用户权限

默认情况下,MySQL 的 root 用户可以在所有地方访问数据库。如果不打算远程管理 MySQL,可以通过下述命令限制 root 用户只允许从本地访问。

sudo mysql -u root

然后执行以下 SQL 语句:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'your_password';
FLUSH PRIVILEGES;

your_password 替换为你想设置的强密码。

2.4 使用 mysql_native_password 认证插件

MySQL 8.0 默认使用新的身份验证插件 caching_sha2_password,但一些较旧的客户端可能不支持。为了确保兼容性,可以将 root 用户的认证插件改为 mysql_native_password

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';

3. 数据库用户和权限管理

在配置 MySQL 时,合理管理数据库用户和权限是非常重要的。你不应使用 root 用户进行日常数据库操作,而应为不同的应用程序和用户创建专门的数据库用户。

3.1 创建数据库和用户

创建一个数据库和一个具有该数据库权限的用户:

CREATE DATABASE mydatabase;
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'user_password';
GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'localhost';
FLUSH PRIVILEGES;

解释

  • CREATE DATABASE mydatabase; 创建一个新的数据库。
  • CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'user_password'; 创建一个新用户,并为其设置密码。
  • GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'localhost'; 为该用户赋予对 mydatabase 数据库的所有权限。

3.2 刷新权限

每次修改用户权限后,都需要执行以下命令来刷新 MySQL 的权限表,使更改生效:

FLUSH PRIVILEGES;

4. 配置 MySQL 自动启动

MySQL 安装完成后,通常会自动配置为随系统启动。但是,如果需要手动配置 MySQL 作为系统服务启动,可以使用以下命令:

sudo systemctl enable mysql

5. 性能优化和配置

MySQL 的性能配置在生产环境中至关重要,合理的配置可以显著提升数据库性能。

5.1 调整 innodb_buffer_pool_size

innodb_buffer_pool_size 是 MySQL 中最重要的性能参数之一,决定了 InnoDB 存储引擎缓存数据的大小。对于大部分服务器,建议将其设置为服务器物理内存的 60%-80%。

例如,如果服务器有 8GB 内存,可以将其设置为 4GB:

innodb_buffer_pool_size = 4G

5.2 配置查询缓存

尽管在 MySQL 8.0 中查询缓存默认已禁用,但如果你的应用对读取数据有较高的需求,并且数据不频繁变化,可以考虑启用查询缓存。

编辑 MySQL 配置文件:

query_cache_type = 1
query_cache_size = 64M

5.3 配置 max_connections

max_connections 控制 MySQL 允许的最大连接数。根据应用的负载,适当调整此值。默认为 151,但如果有大量并发连接,可以适当提高此值。

max_connections = 500

6. 定期备份

确保数据库的安全性和完整性是非常重要的,定期备份是预防数据丢失的关键。

使用 mysqldump 工具可以进行数据库备份:

mysqldump -u root -p mydatabase > /path/to/backup/mydatabase.sql

总结

配置 MySQL 数据库时,除了基本的安装和服务启动外,安全性、性能优化和用户权限管理都是非常关键的。对于 Ubuntu 20 用户,在安装和配置 MySQL 时,需要特别注意以下几点:

  1. 运行 mysql_secure_installation 来增强 MySQL 的安全性。
  2. 修改 bind-address 以限制远程访问。
  3. 使用 mysql_native_password 来保证兼容性。
  4. 管理数据库用户和权限,避免使用 root 用户。
  5. 配置性能优化参数,如 innodb_buffer_pool_sizemax_connections

通过合理配置和优化 MySQL,能够确保数据库的安全、稳定和高效运行。


Viewing all articles
Browse latest Browse all 3155

Latest Images

Trending Articles