在 Ubuntu 上安装 MySQL 的详细指南

news/2025/1/24 0:26:38/

在Ubuntu环境中安装 mysql-server 以及 MySQL 开发包(包括头文件和动态库文件),并处理最新版本MySQL初始自动生成的用户名和密码,可以通过官方的APT包管理器轻松完成。以下是详细的步骤指南,包括从官方仓库和MySQL官方仓库安装的两种方法,并介绍如何处理自动生成的初始用户名和密码,以及如何修改root初始密码。

方法一:使用Ubuntu官方仓库安装

步骤一:更新系统包列表

首先,确保您的系统包列表是最新的:

sudo apt update
sudo apt upgrade -y
步骤二:安装 MySQL Server

使用APT安装MySQL服务器:

sudo apt install -y mysql-server

说明:

  • 该命令将安装最新版本的MySQL服务器以及相关依赖项。
步骤三:安装 MySQL 开发包

安装包含头文件和动态库文件的开发包:

sudo apt install -y libmysqlclient-dev

说明:

  • libmysqlclient-dev 包含用于开发的MySQL头文件和动态库文件。
步骤四:启动并配置 MySQL 服务
  1. 启动MySQL服务

    sudo systemctl start mysql
    
  2. 设置MySQL开机自启动

    sudo systemctl enable mysql
    
  3. 检查MySQL服务状态

    sudo systemctl status mysql
    

    您应该看到类似如下的输出,表示MySQL正在运行:

    mysql.service - MySQL Community ServerLoaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)Active: active (running) since ...
    
步骤五:处理初始自动生成的用户名和密码

在最新版本的MySQL安装过程中,系统会自动为root用户生成一个临时密码。您需要找到该临时密码并进行更改。

1. 查找临时密码

安装完成后,MySQL会将临时密码记录在日志文件中。使用以下命令查看日志并获取临时密码:

sudo grep 'temporary password' /var/log/mysql/error.log

您将看到类似如下的输出:

[Date Time] [Note] A temporary password is generated for root@localhost: xXxXxXxXxXx

记下该临时密码(例如 xXxXxXxXxXx)。

2. 运行安全性脚本

为了提高MySQL的安全性,并修改初始密码,建议运行官方提供的安全性脚本:

sudo mysql_secure_installation

您将被提示执行以下操作:

  1. 输入当前root密码:使用上一步骤中获取的临时密码。
  2. 设置新root密码:根据提示设置一个强密码。
  3. 移除匿名用户:建议移除。
  4. 禁止远程root登录:建议禁止以提高安全性。
  5. 移除测试数据库:建议移除。
  6. 重新加载权限表:选择是以应用更改。

示例交互:

Enter password for user root: 
You must change the password now (y/N)? Y
New password: 
Re-enter new password: 
Password updated successfully!
Remove anonymous users? (Y/n) Y
Disallow root login remotely? (Y/n) Y
Remove test database and access to it? (Y/n) Y
Reload privilege tables now? (Y/n) Y
步骤六:修改root初始密码(手动方法)

如果您需要手动修改root密码,可以按照以下步骤操作:

1. 登录MySQL

使用当前root密码登录MySQL:

sudo mysql -u root -p
2. 修改root密码

在MySQL命令行中执行以下命令以修改root用户的密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPassword!';
FLUSH PRIVILEGES;

说明:

  • YourNewStrongPassword! 替换为您希望设置的新密码。
3. 验证密码修改

退出MySQL并重新登录以验证新密码是否生效:

exit
sudo mysql -u root -p

输入新密码后,您应能成功登录。

4. 忘记root密码时的重置方法

如果您忘记了root密码,可以通过以下步骤重置:

  1. 停止MySQL服务

    sudo systemctl stop mysql
    
  2. 以安全模式启动MySQL

    sudo mysqld_safe --skip-grant-tables &
    
  3. 登录MySQL

    sudo mysql -u root
    
  4. 修改root密码

    在MySQL命令行中执行:

    FLUSH PRIVILEGES;
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPassword!';
    FLUSH PRIVILEGES;
    EXIT;
    
  5. 停止安全模式下的MySQL

    首先找到MySQL进程ID:

    sudo killall mysqld
    
  6. 重新启动MySQL服务

    sudo systemctl start mysql
    
  7. 使用新密码登录

    sudo mysql -u root -p
    
步骤七:验证安装
  1. 登录MySQL

    sudo mysql -u root -p
    

    输入您在 mysql_secure_installation 或手动修改时设置的新密码后,您将进入MySQL命令行界面。

  2. 检查MySQL版本

    在MySQL命令行中运行:

    SELECT VERSION();
    

    您将看到MySQL的版本信息。

步骤八:配置防火墙(可选)

如果您需要通过网络访问MySQL,确保防火墙允许3306端口的流量。

  1. 如果使用UFW防火墙

    sudo ufw allow 'MySQL'
    

    或者更具体地:

    sudo ufw allow 3306/tcp
    
  2. 重新加载防火墙规则

    sudo ufw reload
    

注意: 为了安全起见,建议仅允许受信任的IP地址访问MySQL服务。

方法二:使用MySQL官方仓库安装最新版本

如果您需要安装MySQL的最新版本,可以使用MySQL官方提供的APT仓库。

步骤一:下载并添加MySQL APT仓库
  1. 下载MySQL APT仓库配置包

    wget https://dev.mysql.com/get/mysql-apt-config_0.8.26-1_all.deb
    

    注意: 请访问 MySQL APT Repository 页面,确保下载最新版本的 mysql-apt-config 包。

  2. 安装MySQL APT仓库配置包

    sudo dpkg -i mysql-apt-config_0.8.26-1_all.deb
    

    在安装过程中,您将看到一个配置界面,选择您需要的MySQL版本(如8.0),然后确认。

  3. 更新系统包列表

    sudo apt update
    
步骤二:安装 MySQL Server
sudo apt install -y mysql-server
步骤三:安装 MySQL 开发包
sudo apt install -y libmysqlclient-dev
步骤四至步骤七

按照方法一中的 步骤四步骤八 完成MySQL服务的启动、配置、安全性设置和验证。

附加步骤:配置MySQL远程访问(可选)

如果需要从远程主机访问MySQL服务器,需进行以下配置:

步骤一:修改MySQL配置文件
  1. 编辑MySQL配置文件

    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
    
  2. 找到 bind-address 行并修改

    将:

    bind-address = 127.0.0.1
    

    修改为:

    bind-address = 0.0.0.0
    

    说明: 这将允许MySQL监听所有IP地址。

  3. 保存并关闭文件(按 Ctrl + O 保存,按 Ctrl + X 退出)

步骤二:重启MySQL服务
sudo systemctl restart mysql
步骤三:创建远程访问用户
  1. 登录MySQL

    sudo mysql -u root -p
    
  2. 创建新用户并授予权限

    CREATE USER 'username'@'%' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    

    注意: 替换 usernamepassword 为您的实际用户名和密码。

步骤四:配置防火墙

确保防火墙允许来自远程主机的连接:

sudo ufw allow 3306/tcp
sudo ufw reload

注意: 为了安全起见,建议限制允许访问MySQL的IP地址。例如,只允许特定IP访问:

sudo ufw allow from <your_ip_address> to any port 3306

<your_ip_address> 替换为允许访问的IP地址。

常见问题排查

1. 无法启动MySQL服务

解决方案:

  • 查看错误日志:

    sudo journalctl -u mysql
    
  • 检查配置文件是否有语法错误。

  • 确保没有端口冲突(如其他服务占用了3306端口)。

2. 无法连接到MySQL服务器

解决方案:

  • 确保MySQL服务正在运行:

    sudo systemctl status mysql
    
  • 检查防火墙设置是否允许连接。

  • 确认MySQL用户有足够的权限,并且密码正确。

  • 如果是远程连接,确保MySQL配置文件中的 bind-address 设置正确,并且用户权限允许从远程主机连接。

mysqlclientdev__368">3. 安装 libmysqlclient-dev 后仍提示找不到头文件

解决方案:

  • 确认开发包安装成功:

    dpkg -l | grep libmysqlclient-dev
    
  • 检查头文件路径是否正确,例如 /usr/include/mysql/

  • 在编译时,确保编译器能够找到头文件和库文件,可能需要在编译命令中添加 -I/usr/include/mysql-L/usr/lib/mysql 等选项。

4. 忘记root密码

解决方案:

参考步骤六中的 忘记root密码时的重置方法,通过停止MySQL服务、以安全模式启动、修改密码、重启服务等步骤来重置root密码。


http://www.ppmy.cn/news/1565627.html

相关文章

论文速读|NoteLLM: A Retrievable Large Language Model for Note Recommendation.WWW24

论文地址&#xff1a;https://arxiv.org/abs/2403.01744 bib引用&#xff1a; misc{zhang2024notellmretrievablelargelanguage,title{NoteLLM: A Retrievable Large Language Model for Note Recommendation}, author{Chao Zhang and Shiwei Wu and Haoxin Zhang and Tong Xu…

Python 常用运维模块之OS模块篇

Python 常用运维模块之OS模块篇 OS 模块获取当前工作目录更改当前工作目录返回当前目录路径返回上一级目录路径递归生成目录路径删除目录创建目录删除目录列出特定目录下文件和子目录删除某个特定文件重命名某个文件获取某个文件/目录的信息输出目录路径分隔符输出文件行终止符…

10倍数据交付提升 | 通过逻辑数据仓库和数据编织高效管理和利用大数据

数据已经成为企业核心竞争力的关键要素。随着大数据技术的发展&#xff0c;如何高效管理和利用海量的数据&#xff0c;已成为企业在数字化转型过程中面临的重要课题。传统的数据仓库已经不能满足当今企业对数据处理的高效性、灵活性和实时性的需求。在这种背景下&#xff0c;逻…

【实践】Python封装植物的健康状态,确保数据访问安全

【实践】Python封装植物的健康状态&#xff0c;确保数据访问安全 在面向对象编程中&#xff0c;封装是一种重要的思想&#xff0c;它允许我们将数据和操作这些数据的方法组织到一个对象中&#xff0c;同时保护数据的安全性&#xff0c;防止外部不合理的访问或修改。在本节中&a…

【Uniapp-Vue3】页面和路由API-navigateTo及页面栈getCurrentPages

一、API实现页面跳转 我们可以使用navigator标签进行跳转&#xff0c;也可以使用API进行跳转&#xff1a; uni.navigateTo({ url:"跳转路径及参数" }) 接收参数&#xff1a; 如果我们想要实现tabBar页面的跳转就要使用下面的这个API&#xff1a; uni.reLaunch({ url…

2024年博客之星主题创作|2024年度感想与新技术Redis学习

Redis工具深入了解 1.引言与感想2.Redis工具了解2.分布式系统了解2.1单机架构2.2分布式是什么2.3应用服务和数据库服务分离2.4引入更多的应用服务器2.5理解负载均衡器2.6数据库读写分离2.7引入缓存2.8数据库分库分表2.9引入微服务2.10分布式系统小结 1.引言与感想 2024学习了很…

【2025小年源码免费送】

&#x1f496;学习知识需费心&#xff0c; &#x1f4d5;整理归纳更费神。 &#x1f389;源码免费人人喜&#xff0c; &#x1f525;码农福利等你领&#xff01; &#x1f496;山高路远坑又深&#xff0c; &#x1f4d5;大军纵横任驰奔&#xff0c; &#x1f389;谁敢横刀立马行…

虚幻基础-1:cpu挑选(14600kf)

能帮到你的话&#xff0c;就给个赞吧 &#x1f618; 文章目录 ue非常吃cpu拉满主频打开项目编写蓝图运行原因 时间长 关于压力测试 本文以14600kf为例&#xff0c;双12购入&#xff0c;7月份产。 ue非常吃cpu 经本人测试&#xff0c;ue是非常吃cpu的。 拉满主频 无论任何时间…