MySQL 是一种基于结构化查询语言 (SQL) 的开源关系数据库管理系统 (RDBMS),它使用户能够高效地存储、管理和检索数据,以供各种应用程序使用。本指南介绍如何在 Ubuntu 24.04 上安装 MySQL 并保护服务器以启用对数据库控制台的身份验证访问。
安装 MySQL
MySQL 在 Ubuntu 24.04 上的默认 APT 存储库中可用,您可以使用 PPA 存储库安装特定的发行版本。在以下步骤中,更新服务器软件包索引并在您的服务器上安装最新的 MySQL 数据库服务器版本。
- 更新服务器包索引。
$ sudo apt update
- 安装 MySQL 服务器包。
$ sudo apt install mysql-server -y
- 查看您的服务器上安装的 MySQL 版本。
$ mysql --version
输出:
mysql Ver 8.0.40-0ubuntu0.24.04.1 for Linux on x86_64 ((Ubuntu))
管理 MySQL 系统服务
MySQL 使用mysql
系统服务来控制 Ubuntu 24.04 服务器上的数据库服务器进程和运行时。在以下步骤中,启用mysql
systemd 服务在启动时启动并验证服务状态以管理服务器上的数据库进程。
- 使 MySQL 在启动时自动启动。
$ sudo systemctl enable mysql
输出:
Synchronizing state of mysql.service with SysV service script with /usr/lib/systemd/systemd-sysv-install. Executing: /usr/lib/systemd/systemd-sysv-install enable mysql
- 启动 MySQL 数据库服务器。
$ sudo systemctl start mysql
- 查看 MySQL 服务器状态并验证其正在运行。
$ sudo systemctl status mysql
输出:
mysql.service - MySQL Community Server Loaded: loaded (/usr/lib/systemd/system/mysql.service; enabled; preset: en> Active: active (running) since Tue 2024-11-16 15:57:55 EEST; 1h 11min ago Main PID: 7523 (mysqld) Status: "Server is operational" Tasks: 38 (limit: 7024) Memory: 375.5M (peak: 379.3M) CPU: 2min 32.531s CGroup: /system.slice/mysql.service \u2514\u25007523 /usr/sbin/mysqld
保护 MySQL 服务器
保护 MySQL 服务器是保护数据库免受未经授权的用户访问的重要步骤。特权用户(例如)root
默认情况下可以访问 MySQL 数据库控制台。在以下步骤中,创建一个新的 MySQLroot
用户密码并禁用不安全的默认值以保护您的数据库服务器。
- 运行以下命令启动MySQL安全安装脚本。
$ sudo mysql_secure_installation
按照下面的脚本提示设置新的 root 用户密码、删除匿名用户、禁止远程 root 登录并删除 MySQL 数据库服务器上的测试数据库。
- VALIDATE PASSWORD component (验证密码组件):输入Y并按下Enter以在您的服务器上启用密码验证。
- Password Validation Policy (密码验证策略):输入2 以在您的服务器上启用强密码的使用。
- New password (新密码):输入一个新的强密码来分配给根数据库用户。
- Re-enter new password (重新输入新密码):再次输入您的密码以验证root用户密码。
- Do you wish to continue with the password provided? (您是否希望继续使用提供的密码):输入Y以应用新的用户密码。
- Remove anonymous users? (删除匿名用户):输入Y以撤销未知数据库用户的 MySQL 控制台访问权限。
- Disallow root login remotely? (禁止远程 root 登录):输入Y以禁用对服务器上的 MySQL root 用户帐户的远程访问。
- Remove test database and access to it ?(删除测试数据库并访问它):输入Y以删除 MySQL 测试数据库。
- Reload privilege tables now? (现在重新加载权限表):输入Y以刷新 MySQL 权限表并应用新的配置更改。
- 重新启动 MySQL 服务以应用配置更改。
$ sudo systemctl restart mysqld
访问 MySQL
- 以 身份登录 MySQL 数据库服务器
root
。$ sudo mysql -u root -p
出现提示时输入您之前设置的 root 用户密码。
- 创建一个新的示例 MySQL 数据库。例如,
my_database
。mysql > CREATE DATABASE my_database;
- 创建一个具有强密码的新 MySQL 数据库用户。例如,
my_user
并my_password
根据您的密码强度策略将其替换为您所需的密码。mysql > CREATE USER 'my_user'@'localhost' IDENTIFIED BY 'my_password';
- 授予数据库用户
my_user
对示例数据库的全部权限my_database
。mysql > GRANT ALL PRIVILEGES ON my_database.* TO 'my_user'@'localhost';
- 刷新 MySQL 权限表以应用新的用户更改。
mysql > FLUSH PRIVILEGES;
- 退出 MySQL 数据库控制台。
mysql > Exit
创建示例 MySQL 数据库
非特权 MySQL 用户CREATE
默认拥有数据库服务器的权限。在以下部分中,使用非特权示例用户创建示例数据库my_user
,并向数据库表添加新记录。
- 使用您之前创建的数据库用户登录 MySQL 数据库控制台
my_user
。$ mysql -u my_user -p
出现提示时输入
my_user
您之前设置的密码。 - 列出 MySQL 用户可用的所有数据库
mysql>SHOW DATABASES;
输出:
+--------------------+ | Database | +--------------------+ | information_schema | | my_database | | mysql | | performance_schema | | sys | +--------------------+
- 创建另一个示例 MySQL 数据库。例如,
bookstore_db
。mysql > CREATE DATABASE example_bawagon;
- 切换到新的数据库。
mysql > use example_bawagon;
- 创建一个包含 3 列的新示例表来存储不同的数据类型。
mysql > CREATE TABLE sample_table ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, description TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
- 将示例数据插入
sample_table
表中。mysql > INSERT INTO sample_table (name, description) VALUES ('Sample Item 1', 'This is the first sample item.'), ('Sample Item 2', 'This is the second sample item.'), ('Sample Item 3', 'This is the third sample item.');
- 选择所有表记录以验证新表数据是否可用。
mysql > SELECT * FROM sample_table;
输出:
+----+--------------+-------------------------------+---------------------+ | id | name | description | created_at | +----+--------------+-------------------------------+---------------------+ | 1 | Sample Item 1| This is the first sample item.| 2024-11-16 10:00:00 | | 2 | Sample Item 2| This is the second sample item.| 2024-11-16 10:00:00| | 3 | Sample Item 3| This is the third sample item. | 2024-11-16 10:00:00| +----+--------------+-------------------------------+---------------------+
结论
您已在 Ubuntu 24.04 服务器上安装了 MySQL,并保护了数据库服务器,以允许所有有效用户进行经过身份验证的访问。MySQL 与现代 Web 应用程序集成,您可以将服务器用作专用的远程数据库服务器,也可以使用动态应用程序堆栈(如 LAMP)作为数据库后端。有关 MySQL 的更多信息,请访问官方文档。