Ubuntu 上安装并配置 MySQL 8.0

在 Ubuntu 上安装并配置 MySQL 8.0,可以通过以下步骤来完成:

1. 添加 MySQL APT Repository

首先,下载 MySQL APT Repository 配置包:

bash 复制代码
wget https://dev.mysql.com/get/mysql-apt-config_0.8.24-1_all.deb

2. 安装 MySQL APT Repository 包

下载完成后,使用 dpkg 安装该包:

bash 复制代码
sudo dpkg -i mysql-apt-config_0.8.24-1_all.deb

安装过程中,你会看到一个配置界面。选择 MySQL Server & Cluster (Currently selected: mysql-8.0),然后选择 OK。

3. 更新包列表

添加存储库后,更新包列表:

bash 复制代码
sudo apt-get update

4. 安装 MySQL 服务器

现在,你可以安装 MySQL 8.0 服务器:

bash 复制代码
sudo apt-get install mysql-server

安装过程中,你会被提示设置 MySQL root 用户的密码。按照提示完成安装。

5. 启动 MySQL 服务

安装完成后,启动 MySQL 服务并确保其在系统启动时自动启动:

bash 复制代码
sudo systemctl start mysql
sudo systemctl enable mysql

6. 验证安装

你可以检查 MySQL 服务的状态以确保其正常运行:

bash 复制代码
sudo systemctl status mysql

你还可以登录 MySQL 确认版本:

bash 复制代码
mysql -u root -p

在 MySQL 提示符下,输入以下命令以显示 MySQL 版本:

sql 复制代码
SELECT VERSION();

7. 完成安全设置(可选)

为了提高 MySQL 安全性,你可以运行 mysql_secure_installation 脚本:

bash 复制代码
sudo mysql_secure_installation

该脚本会引导你完成一些安全设置,包括设置 root 用户密码、删除匿名用户、禁止 root 远程登录以及删除测试数据库等。

8. 配置远程访问(可选)

如果你需要允许远程访问 MySQL 数据库,可以进行以下配置:

  1. 编辑 MySQL 配置文件

    编辑 MySQL 配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf/etc/my.cnf(取决于系统),并确保 bind-address 设置为 0.0.0.0

    ini 复制代码
    bind-address = 0.0.0.0
  2. 允许远程用户连接

    登录 MySQL 并执行以下命令,允许特定用户从任意主机连接:

    sql 复制代码
    CREATE USER 'your_user'@'%' IDENTIFIED BY 'your_password';
    GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'%';
    FLUSH PRIVILEGES;

    或者,更新现有用户的权限:

    sql 复制代码
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_password';
    FLUSH PRIVILEGES;
  3. 配置防火墙

    确保防火墙允许 MySQL 端口(默认是 3306):

    bash 复制代码
    sudo ufw allow 3306
    sudo ufw reload

9. 优化配置(可选)

根据你的系统资源和需求,可以优化 MySQL 配置。编辑 MySQL 配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf,调整以下参数:

ini 复制代码
[mysqld]
max_connections = 500
innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M

修改完成后,重新启动 MySQL 服务以应用更改:

bash 复制代码
sudo systemctl restart mysql
相关推荐
猫豆~1 小时前
软件包管理——2day
linux·运维
焦糖布丁的午夜2 小时前
MySQL数据库大王小练习
数据库·mysql
大白菜13243 小时前
进程的信号
linux
XH-hui3 小时前
【打靶日记】群内靶机Secure
linux·网络安全
Shingmc34 小时前
【Linux】进程控制
linux·服务器·算法
视觉装置在笑7134 小时前
Shell 变量基础与进阶知识
linux·运维
Web极客码5 小时前
如何通过命令行工具检查 Linux 版本信息
linux·运维·服务器
欢鸽儿5 小时前
Vitis】Linux 下彻底清除启动界面 Recent Workspaces 历史路径
linux·嵌入式硬件·fpga
繁华似锦respect5 小时前
C++ 智能指针底层实现深度解析
linux·开发语言·c++·设计模式·代理模式
Dxy12393102166 小时前
MySQL如何做读写分离架构
数据库·mysql·架构