活动公告

系统通知
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

手把手教你如何在Ubuntu系统下快速安装配置MySQL数据库及解决安装过程中的常见问题让初学者也能轻松完成数据库部署

SunJu_FaceMall

3万

主题

2720

科技点

3万

积分

执行版主

碾压王

积分
32881

塔罗立华奏

执行版主 发表于 2025-8-27 14:50:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
引言

MySQL是世界上最流行的开源关系型数据库管理系统之一,广泛应用于各种Web应用程序和网站开发中。在Ubuntu系统下安装和配置MySQL是许多开发者和系统管理员需要掌握的基本技能。本文将详细介绍在Ubuntu系统下安装、配置MySQL数据库的完整过程,并针对安装过程中可能遇到的常见问题提供解决方案,即使是初学者也能按照本文的指导轻松完成数据库的部署。

准备工作

在开始安装MySQL之前,我们需要确保系统满足一些基本要求,并做好必要的准备工作。

系统要求

• Ubuntu操作系统(本文以Ubuntu 20.04 LTS为例,但大部分步骤也适用于其他版本)
• 具有管理员权限的用户账户(sudo权限)
• 稳定的网络连接
• 至少2GB的可用磁盘空间(MySQL服务器安装需要约500MB,但数据库文件会占用更多空间)

更新系统

在安装任何新软件之前,建议先更新系统软件包列表和已安装的软件包。打开终端(Ctrl+Alt+T),执行以下命令:
  1. sudo apt update
  2. sudo apt upgrade -y
复制代码

检查是否已安装MySQL

在开始安装之前,最好先检查系统中是否已经安装了MySQL或其相关组件:
  1. mysql --version
复制代码

如果系统返回MySQL的版本信息,说明MySQL已经安装。如果返回”command not found: mysql”,则表示系统尚未安装MySQL。

安装MySQL

方法一:使用APT仓库安装(推荐)

这是最简单、最常用的安装方法,适合大多数用户。

MySQL官方提供了APT仓库,我们可以通过添加该仓库来获取最新版本的MySQL。

首先,下载MySQL APT仓库配置包:
  1. wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb
复制代码

然后,安装下载的配置包:
  1. sudo dpkg -i mysql-apt-config_0.8.22-1_all.deb
复制代码

安装过程中,会出现一个配置界面,让你选择要安装的MySQL版本和其他配置选项。默认情况下会选择最新的MySQL版本,如果你没有特殊需求,直接选择”OK”即可。

添加MySQL仓库后,更新APT包索引:
  1. sudo apt update
复制代码

现在,我们可以安装MySQL服务器了:
  1. sudo apt install mysql-server -y
复制代码

安装过程中,系统可能会提示你设置MySQL root用户的密码。请输入一个强密码并记住它,因为你以后需要它来管理MySQL服务器。

安装完成后,运行MySQL提供的安全配置脚本:
  1. sudo mysql_secure_installation
复制代码

这个脚本会引导你完成一系列安全设置,包括:

• 设置root密码验证插件
• 移除匿名用户
• 禁止root远程登录
• 移除测试数据库
• 重新加载权限表

根据你的需求回答相应的问题,对于大多数情况,选择”Y”(是)是安全的。

方法二:使用Ubuntu默认仓库安装

如果你不需要最新版本的MySQL,可以使用Ubuntu默认仓库中的MySQL版本:
  1. sudo apt update
  2. sudo apt install mysql-server -y
复制代码

安装完成后,同样运行安全配置脚本:
  1. sudo mysql_secure_installation
复制代码

配置MySQL

安装完成后,我们需要进行一些基本配置,以确保MySQL服务器正常运行并满足我们的需求。

启动和停止MySQL服务

在Ubuntu系统中,MySQL服务通常在安装后自动启动。你可以使用以下命令来检查MySQL服务的状态:
  1. systemctl status mysql
复制代码

如果MySQL服务没有运行,可以使用以下命令启动它:
  1. sudo systemctl start mysql
复制代码

要停止MySQL服务,使用以下命令:
  1. sudo systemctl stop mysql
复制代码

要重启MySQL服务,使用以下命令:
  1. sudo systemctl restart mysql
复制代码

要设置MySQL服务在系统启动时自动启动,使用以下命令:
  1. sudo systemctl enable mysql
复制代码

登录MySQL

安装并启动MySQL后,你可以使用以下命令登录MySQL:
  1. sudo mysql -u root -p
复制代码

系统会提示你输入root用户的密码。输入你在安装过程中设置的密码,即可登录到MySQL shell。

创建新用户和数据库

出于安全考虑,不建议在日常操作中使用root用户。我们可以创建一个新的用户和数据库:
  1. -- 创建新数据库
  2. CREATE DATABASE mydatabase;
  3. -- 创建新用户并设置密码
  4. CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';
  5. -- 为新用户授予对新数据库的所有权限
  6. GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'localhost';
  7. -- 刷新权限
  8. FLUSH PRIVILEGES;
  9. -- 退出MySQL
  10. EXIT;
复制代码

现在,你可以使用新创建的用户登录MySQL:
  1. mysql -u myuser -p
复制代码

配置远程访问

默认情况下,MySQL只允许本地连接。如果你需要从远程计算机访问MySQL服务器,需要进行一些额外配置。

编辑MySQL配置文件:
  1. sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
复制代码

找到以下行:
  1. bind-address = 127.0.0.1
复制代码

将其修改为:
  1. bind-address = 0.0.0.0
复制代码

或者,如果你只想允许特定的IP地址访问,可以将其修改为:
  1. bind-address = your_server_ip
复制代码

保存文件并退出编辑器。

登录MySQL,创建一个允许远程访问的用户:
  1. CREATE USER 'remoteuser'@'%' IDENTIFIED BY 'remotepassword';
  2. GRANT ALL PRIVILEGES ON *.* TO 'remoteuser'@'%' WITH GRANT OPTION;
  3. FLUSH PRIVILEGES;
复制代码

注意:'%'表示允许从任何IP地址连接。出于安全考虑,最好限制为特定的IP地址,例如:'remoteuser'@'192.168.1.100'。
  1. sudo systemctl restart mysql
复制代码

如果你的系统启用了防火墙,需要允许MySQL的默认端口(3306):
  1. sudo ufw allow 3306/tcp
复制代码

调整MySQL配置

根据你的服务器硬件和使用需求,可能需要调整MySQL的配置。主要的配置文件是/etc/mysql/mysql.conf.d/mysqld.cnf。

以下是一些常见的配置调整:

编辑MySQL配置文件:
  1. sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
复制代码

在[mysqld]部分添加或修改以下参数:
  1. # 设置InnoDB缓冲池大小为系统内存的50-70%
  2. innodb_buffer_pool_size = 2G
  3. # 设置最大连接数
  4. max_connections = 200
  5. # 设置查询缓存
  6. query_cache_type = 1
  7. query_cache_size = 128M
复制代码

保存文件并重启MySQL服务:
  1. sudo systemctl restart mysql
复制代码

MySQL提供了多种日志,可以帮助你监控和调试数据库性能。

启用慢查询日志:
  1. slow_query_log = 1
  2. slow_query_log_file = /var/log/mysql/slow.log
  3. long_query_time = 2
复制代码

启用错误日志:
  1. log_error = /var/log/mysql/error.log
复制代码

保存文件并重启MySQL服务:
  1. sudo systemctl restart mysql
复制代码

常见问题及解决方案

在安装和配置MySQL的过程中,可能会遇到各种问题。以下是一些常见问题及其解决方案。

问题1:安装过程中出现依赖错误

问题描述:在安装MySQL时,可能会遇到依赖错误,如”以下软件包有未满足的依赖关系”。

解决方案:

1. 尝试修复依赖关系:
  1. sudo apt --fix-broken install
复制代码

1. 清理APT缓存并重试:
  1. sudo apt clean
  2. sudo apt update
  3. sudo apt install mysql-server -y
复制代码

1. 如果上述方法不起作用,可以尝试使用aptitude工具,它比apt在处理依赖关系方面更强大:
  1. sudo apt install aptitude
  2. sudo aptitude install mysql-server
复制代码

aptitude会提供解决方案选项,通常选择第一个建议的解决方案即可。

问题2:无法登录MySQL

问题描述:安装MySQL后,无法使用root用户登录,提示”Access denied”错误。

解决方案:

1. 停止MySQL服务:
  1. sudo systemctl stop mysql
复制代码

1. 以跳过权限检查的方式启动MySQL:
  1. sudo mysqld_safe --skip-grant-tables &
复制代码

1. 无密码登录MySQL:
  1. mysql -u root
复制代码

1. 重置root密码:
  1. FLUSH PRIVILEGES;
  2. ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
复制代码

1. 退出MySQL并重启MySQL服务:
  1. sudo systemctl restart mysql
复制代码

现在,你应该可以使用新密码登录MySQL了。

问题3:MySQL服务无法启动

问题描述:尝试启动MySQL服务时,服务启动失败。

解决方案:

1. 检查MySQL错误日志:
  1. sudo tail -f /var/log/mysql/error.log
复制代码

错误日志通常会包含服务无法启动的原因。

1. 检查磁盘空间:
  1. df -h
复制代码

如果磁盘空间不足,清理一些空间后重试。

1. 检查MySQL配置文件是否有语法错误:
  1. sudo mysqld --verbose --help
复制代码

1. 如果配置文件有问题,恢复默认配置:
  1. sudo mv /etc/mysql/my.cnf /etc/mysql/my.cnf.bak
  2. sudo cp /usr/share/mysql/my-default.cnf /etc/mysql/my.cnf
  3. sudo systemctl restart mysql
复制代码

问题4:无法远程连接到MySQL服务器

问题描述:配置了远程访问后,仍然无法从远程计算机连接到MySQL服务器。

解决方案:

1. 检查MySQL配置文件中的bind-address设置:
  1. sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
复制代码

确保bind-address设置为0.0.0.0或服务器的IP地址。

1. 检查MySQL用户权限:

登录MySQL,执行以下命令:
  1. SELECT host, user FROM mysql.user;
复制代码

确保有用户允许从远程主机连接(host字段为%或特定IP地址)。

1. 检查防火墙设置:
  1. sudo ufw status
复制代码

确保MySQL端口(默认3306)已开放:
  1. sudo ufw allow 3306/tcp
复制代码

1. 检查网络连接:

从远程计算机尝试ping服务器IP地址,确保网络连通。

1. 检查MySQL服务是否正在运行:
  1. sudo systemctl status mysql
复制代码

如果服务未运行,启动它:
  1. sudo systemctl start mysql
复制代码

问题5:MySQL性能不佳

问题描述:MySQL服务器运行缓慢,响应时间长。

解决方案:

1. 检查系统资源使用情况:
  1. top
  2. htop
  3. free -h
复制代码

1. 检查MySQL状态变量:

登录MySQL,执行:
  1. SHOW STATUS;
  2. SHOW VARIABLES;
复制代码

1. 优化MySQL配置:

根据服务器硬件和使用情况,调整MySQL配置文件中的参数,如innodb_buffer_pool_size、max_connections等。

1. 启用并分析慢查询日志:
  1. SHOW VARIABLES LIKE '%slow_query%';
  2. SET GLOBAL slow_query_log = 'ON';
复制代码

然后检查慢查询日志文件,找出执行时间长的查询并进行优化。

1. 使用MySQL性能模式:
  1. UPDATE performance_schema.setup_instruments SET ENABLED = 'YES', TIMED = 'YES';
  2. UPDATE performance_schema.setup_consumers SET ENABLED = 'YES';
复制代码

然后查询性能模式数据,分析性能瓶颈。

问题6:忘记MySQL root密码

问题描述:忘记了MySQL root用户的密码,无法登录。

解决方案:

1. 停止MySQL服务:
  1. sudo systemctl stop mysql
复制代码

1. 创建一个初始化文件,包含重置密码的SQL命令:
  1. sudo nano /home/ubuntu/mysql-init
复制代码

在文件中添加以下内容:
  1. ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
复制代码

保存文件并退出编辑器。

1. 以初始化文件的方式启动MySQL:
  1. sudo mysqld --init-file=/home/ubuntu/mysql-init &
复制代码

1. 启动后,删除初始化文件:
  1. rm /home/ubuntu/mysql-init
复制代码

1. 重启MySQL服务:
  1. sudo systemctl restart mysql
复制代码

现在,你可以使用新密码登录MySQL了。

问题7:MySQL表损坏

问题描述:MySQL表损坏,导致无法查询或修改数据。

解决方案:

1. 检查表是否损坏:

登录MySQL,执行:
  1. CHECK TABLE table_name;
复制代码

1. 修复损坏的表:
  1. REPAIR TABLE table_name;
复制代码

1. 如果上述方法不起作用,可以使用myisamchk工具(仅适用于MyISAM表):
  1. sudo myisamchk -r /var/lib/mysql/database_name/table_name.MYI
复制代码

1. 对于InnoDB表,可以尝试以下方法:

• 将innodb_force_recovery添加到MySQL配置文件中:
  1. [mysqld]
  2. innodb_force_recovery = 1
复制代码

• 重启MySQL服务并导出数据:
  1. sudo systemctl restart mysql
  2. mysqldump -u root -p database_name > backup.sql
复制代码

• 删除损坏的表,重新创建并导入数据:
  1. DROP TABLE table_name;
  2. CREATE TABLE table_name (...);
复制代码
  1. mysql -u root -p database_name < backup.sql
复制代码

• 移除innodb_force_recovery设置并重启MySQL服务:
  1. sudo systemctl restart mysql
复制代码

安全建议

保护MySQL数据库的安全是非常重要的。以下是一些安全建议:

1. 定期更新MySQL

保持MySQL服务器更新到最新版本,以修复已知的安全漏洞:
  1. sudo apt update
  2. sudo apt upgrade mysql-server
复制代码

2. 使用强密码

为所有MySQL用户设置强密码,包括root用户。强密码应包含大小写字母、数字和特殊字符,长度至少为8个字符。

3. 限制用户权限

遵循最小权限原则,只为用户授予他们需要的最小权限。避免使用GRANT ALL PRIVILEGES,除非绝对必要。

4. 禁用或限制远程访问

如果不需要远程访问MySQL,最好将其限制为本地访问。如果需要远程访问,使用防火墙限制只允许特定IP地址访问。

5. 定期备份数据

定期备份MySQL数据库,以防数据丢失或损坏。可以使用mysqldump工具进行备份:
  1. mysqldump -u root -p --all-databases > all_databases_backup.sql
复制代码

6. 启用SSL连接

如果需要远程访问MySQL,启用SSL连接以加密数据传输:

1. 生成SSL证书和密钥:
  1. sudo mkdir /etc/mysql/ssl
  2. sudo openssl genrsa 2048 > /etc/mysql/ssl/ca-key.pem
  3. sudo openssl req -new -x509 -nodes -days 3650 -key /etc/mysql/ssl/ca-key.pem -out /etc/mysql/ssl/ca-cert.pem
  4. sudo openssl req -newkey rsa:2048 -days 3650 -nodes -keyout /etc/mysql/ssl/server-key.pem -out /etc/mysql/ssl/server-req.pem
  5. sudo openssl x509 -req -in /etc/mysql/ssl/server-req.pem -days 3650 -CA /etc/mysql/ssl/ca-cert.pem -CAkey /etc/mysql/ssl/ca-key.pem -set_serial 01 -out /etc/mysql/ssl/server-cert.pem
  6. sudo openssl req -newkey rsa:2048 -days 3650 -nodes -keyout /etc/mysql/ssl/client-key.pem -out /etc/mysql/ssl/client-req.pem
  7. sudo openssl x509 -req -in /etc/mysql/ssl/client-req.pem -days 3650 -CA /etc/mysql/ssl/ca-cert.pem -CAkey /etc/mysql/ssl/ca-key.pem -set_serial 01 -out /etc/mysql/ssl/client-cert.pem
复制代码

1. 编辑MySQL配置文件:
  1. sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
复制代码

在[mysqld]部分添加以下内容:
  1. ssl-ca = /etc/mysql/ssl/ca-cert.pem
  2. ssl-cert = /etc/mysql/ssl/server-cert.pem
  3. ssl-key = /etc/mysql/ssl/server-key.pem
复制代码

1. 重启MySQL服务:
  1. sudo systemctl restart mysql
复制代码

1. 创建需要SSL连接的用户:
  1. CREATE USER 'ssluser'@'%' IDENTIFIED BY 'password' REQUIRE SSL;
  2. GRANT ALL PRIVILEGES ON *.* TO 'ssluser'@'%' WITH GRANT OPTION;
  3. FLUSH PRIVILEGES;
复制代码

7. 定期审查用户和权限

定期审查MySQL用户及其权限,删除不再需要的用户和权限:
  1. SELECT host, user FROM mysql.user;
  2. SHOW GRANTS FOR 'username'@'host';
复制代码

8. 启用MySQL审计日志

启用MySQL审计日志,记录所有数据库活动:

1. 安装MySQL企业审计插件(如果使用MySQL企业版)或开源替代品如MariaDB审计插件。
2. 编辑MySQL配置文件:

安装MySQL企业审计插件(如果使用MySQL企业版)或开源替代品如MariaDB审计插件。

编辑MySQL配置文件:
  1. sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
复制代码

在[mysqld]部分添加以下内容:
  1. plugin-load = audit_log.so
  2. audit_log_format = JSON
  3. audit_log_policy = ALL
复制代码

1. 重启MySQL服务:
  1. sudo systemctl restart mysql
复制代码

总结

在Ubuntu系统下安装和配置MySQL数据库可能看起来复杂,但按照本文的步骤,即使是初学者也能轻松完成。我们详细介绍了MySQL的安装过程、基本配置、远程访问设置以及常见问题的解决方案。同时,我们还提供了一些安全建议,帮助你保护MySQL数据库的安全。

记住,管理MySQL数据库是一个持续的过程,需要定期维护、更新和监控。随着你对MySQL的熟悉程度提高,你可以探索更多高级功能和优化技术,以充分发挥MySQL的潜力。

希望本文能帮助你成功在Ubuntu系统下部署MySQL数据库,并为你的项目提供可靠的数据存储解决方案。如果你在安装或配置过程中遇到任何问题,可以参考本文中的常见问题及解决方案部分,或者查阅MySQL官方文档获取更多帮助。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则