介绍 Nginx 是一款开源的高性能 Web 服务器,还可用…
9. 如何在Debian 12系统上安装MySQL数据库
介绍
MySQL 是一个开源关系数据库管理系统 (RDBMS),可用于在服务器上存储、管理和检索数据库记录。MySQL 用作数据库后端,使用 SQL(结构化查询语言)语法以表的形式存储关系数据,从而实现服务器上高效的记录管理。
本文介绍如何在 Debian 12 上安装 MySQL、保护数据库服务器以及对所有数据库用户实施强身份验证策略。
先决条件
开始之前:
- 在 Vultr 上部署Debian 12实例。
- 使用 SSH访问服务器。
- 创建具有 sudo 权限的非 root 用户并切换到该用户。
- 更新服务器。
安装 MySQL
MySQL 数据库服务器包在 Debian 12 上的默认 APT 存储库中不可用。按照以下步骤下载最新的 MySQL 存储库信息包并在您的服务器上安装 MySQL。
- 下载最新的 MySQL 存储库信息包。
$ wget https://dev.mysql.com/get/mysql-apt-config_0.8.30-1_all.deb
访问MySQL APT 存储库页面来验证并下载最新的脚本版本。
- 使用该文件安装 MySQL 存储库信息。
$ sudo dpkg -i mysql-apt-config_0.8.30-1_all.deb
回复以下 MySQL 存储库设置脚本提示以安装最新的数据库服务器源。
┌────────────────┤ Configuring mysql-apt-config ├─────────────────┐ │ Which MySQL product do you wish to configure? │ │ │ │ MySQL Server & Cluster (Currently selected: mysql-8.0) │ │ MySQL Tools & Connectors (Currently selected: Enabled) │ │ MySQL Preview Packages (Currently selected: Disabled) │ │ Ok │ │ │ │ │ │ <Ok> │ │ │ └─────────────────────────────────────────────────────────────────┘
- 保持选择 MySQL 服务器和集群并按Enter保存更改。
- 选择所需的 MySQL 服务器版本。例如,
mysql-8.0
然后按Enter应用版本存储库信息。 - 按下Down键盘上的“确定” ,然后按下Enter以将 MySQL 存储库信息应用到您的服务器上。
- 更新服务器的包索引以应用新的 MySQL 存储库信息。
$ sudo apt update
- 安装 MySQL 数据库服务器包。
$ sudo apt install mysql-server -y
- 出现提示时输入新的
root
数据库用户密码,然后按Enter。
Enter root password:
- 再次输入密码并按Enter应用更改。
Re-enter root password:
- 保持
Use Strong Password Encryption (RECOMMENDED)
选中并按下Enter为服务器上的所有数据库用户启用密码验证。
Use Strong Password Encryption (RECOMMENDED) Use Legacy Authentication Method (Retain MySQL 5.x Compatibility)
- 出现提示时输入新的
- 查看您的服务器上安装的 MySQL 版本。
$ mysql --version
输出:
mysql Ver 8.0.38 for Linux on x86_64 (MySQL Community Server - GPL)
管理 MySQL 系统服务
MySQL 使用mysqld
系统服务通过 systemd 守护程序来管理数据库服务器运行时进程。按照以下步骤管理 MySQL 系统服务并使数据库服务器在启动时自动启动。
- 使 MySQL 数据库服务器在启动时自动启动。
$ sudo systemctl enable mysql
- 启动 MySQL 数据库服务器。
$ sudo systemctl start mysql
- 查看MySQL系统服务状态并验证其正在运行。
$ sudo systemctl status mysql
输出:
● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; preset: enabled) Active: active (running) since Fri 2024-06-28 15:20:55 UTC; 52s ago Docs: man:mysqld(8) http://dev.mysql.com/doc/refman/en/using-systemd.html Main PID: 3302 (mysqld) Status: "Server is operational" Tasks: 36 (limit: 1092) Memory: 433.4M CPU: 662ms CGroup: /system.slice/mysql.service └─3302 /usr/sbin/mysqld
根据以上输出,MySQL 数据库服务器处于活动状态并正在运行。
保护 MySQL 数据库服务器
MySQLroot
数据库用户在您的服务器上使用您在安装过程中设置的密码进行主动保护。MySQL 包含其他不安全的默认设置,例如测试数据库和对root
您服务器上的数据库用户的远程访问。请按照以下步骤禁用所有不安全的默认配置并保护 MySQL 数据库服务器。
- 运行 MySQL 安全安装。
$ sudo mysql_secure_installation
回复以下 MySQL 提示以保护您的数据库服务器。
- 进入
root
数据库用户启动安全安装脚本,修改数据库服务器配置。
Securing the MySQL server deployment. Enter password for user root:
- 输入Y并按Enter以启用
VALIDATE PASSWORD COMPONENT
并确保严格的密码安全策略。
Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No:
- 设置所需的 MySQL 数据库服务器密码强度策略。例如,输入2并按Enter以在您的服务器上启用强密码。
LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
- N当提示更改数据库用户密码时输入
root
,或者输入Y来更改密码。
Change the password for root ? ((Press y|Y for Yes, any other key for No) :
- 当系统提示在数据库服务器上删除时,输入Y并按。Enter
anonymous users
Remove anonymous users? (Press y|Y for Yes, any other key for No) :
- 输入Y并按Enter以禁用
root
数据库用户的远程访问。
Disallow root login remotely? (Press y|Y for Yes, any other key for No) :
- 输入Y并按下Enter即可从您的服务器上删除
test database
。
Remove test database and access to it? (Press y|Y for Yes, any other key for No) :
- 输入Y并按Enter以更新 MySQL 权限表并应用您的配置更改。
Reload privilege tables now? (Press y|Y for Yes, any other key for No) :
输出:
Success. All done!
- 进入
访问 MySQL
MySQL 使用mysql
客户端工具连接并访问数据库服务器控制台。您也可以使用兼容的图形界面工具(如 MySQL Workbench 和 PhpMyAdmin)访问 MySQL 数据库服务器控制台。按照以下步骤访问 MySQL 控制台并在数据库服务器上执行基本 SQL 操作。
- 以数据库用户身份登录MySQL控制台
root
。$ sudo mysql -u root -p
出现提示时输入
root
您之前创建的用户密码。 - 创建一个新的示例数据库
shop
。mysql >CREATE DATABASE shop;
- 查看所有数据库并验证新的示例
shop
数据库是否可用。mysql >SHOW DATABASES;
输出:
+--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | shop | | sys | +--------------------+ 5 rows in set (0.00 sec)
- 切换到
shop
数据库。mysql >USE shop;
- 创建一个
products
有 4 列的新示例表来存储示例数据。mysql > CREATE TABLE产品(product_id INT AUTO_INCREMENT PRIMARY KEY ,product_name VARCHAR (50 )NOT NULL ,类别VARCHAR (40 ),价格DECIMAL (10,2 ));
products
使用以下 SQL 值向表中插入新数据。mysql >插入产品(产品名称,类别,价格)值('笔记本电脑' ,'电子产品' ,999.34 ),( '办公椅' ,'家具' ,149.19 ),('搅拌机' ,'家电' ,49.20 ),('背包' ,'配件' ,39.57 );
- 查询
products
表数据并验证您的值是否可用。mysql >从产品中选择* ;
输出:
+------------+--------------+-------------+--------+ | product_id | product_name | category | price | +------------+--------------+-------------+--------+ | 1 | Laptop | Electronics | 999.34 | | 2 | Office Chair | Furniture | 149.19 | | 3 | Blender | Appliances | 49.20 | | 4 | Backpack | Accessories | 39.57 | +------------+--------------+-------------+--------+ 4 rows in set (0.00 sec)
- 创建一个新的示例数据库用户,
db_user
并设置一个强密码。Strong@@password123
根据数据库服务器策略将其替换为您所需的密码。mysql >创建用户'db_user' @ 'localhost'由'Strong@@password123'标识;
- 授予数据库
db_user
的全部权限shop
。mysql >授予shop的所有权限。*至'db_user' @ 'localhost' ;
- 重新加载 MySQL 权限表以应用更改。
mysql >刷新权限;
- 退出 MySQL 控制台。
mysql >退出
- 以新的数据库用户身份登录MySQL数据库服务器,
db_user
测试对shop
数据库的访问。$ sudo mysql -u db_user -p
出现提示时输入
db_user
用户密码,然后按Enter访问数据库控制台。 - 查看所有数据库并验证
shop
数据库是否可用。mysql >显示数据库;
输出:
+--------------------+ | Database | +--------------------+ | information_schema | | performance_schema | | shop | +--------------------+ 3 rows in set (0.00 sec)
- 退出 MySQL 控制台。
mysql >退出
结论
您已在 Debian 12 服务器上安装 MySQL,并在数据库服务器上启用了安全身份验证策略。您可以创建多个数据库记录,并将 MySQL 数据库服务器与 PHP 等处理应用程序集成,以安全地查询 SQL 数据以供动态 Web 应用程序使用。有关更多信息和数据库服务器安全选项,请访问MySQL 文档。